K8S哲学 - probe 探针

2024-04-20 19:44

本文主要是介绍K8S哲学 - probe 探针,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

探针分类:

liveness probe

readiness probe

startup probe

  1. Liveness Probe:用于检查容器是否还在运行。如果 Liveness Probe 失败,Kubernetes 会杀死容器,然后根据你的重启策略来决定是否重新启动容器。常见的做法是使用与 Readiness Probe 相同的低成本 HTTP 端点,但是设置更高的 failureThreshold,这样可以确保在 Pod 被强制杀死之前,它会被观察到为 not-ready 一段时间。

  2. Readiness Probe:用于检查容器是否准备好接受流量。一个 Pod 被认为是 ready 的,当且仅当它的所有容器都是 ready 的。这个信号的一个用途是控制哪些 Pod 被用作 Service 的后端。当一个 Pod 不是 ready 的,它会从 Service 的负载均衡器中移除。

  3. Startup Probe:用于检查容器应用程序是否已经启动。如果配置了这样的探针,那么在它成功之前,Liveness Probe 和 Readiness Probe 不会开始,确保这些探针不会干扰应用程序的启动。这可以用于对慢启动的容器进行 Liveness 检查,避免它们在启动并运行之前被 kubelet 杀死。

探测方式

HTTPGetAction

TCPSocketAction

ExecAction

每种探针都可以使用以下三种方式之一进行检查:

  • HTTP GET:对容器的一个 HTTP 服务器发起一个 GET 请求。如果服务器返回的状态码在 200 到 399 之间,那么探针就是成功的。

  • TCP Socket:尝试打开容器的一个 TCP 端口。如果端口已经打开,那么探针就是成功的。

  • Exec:在容器中执行一个命令。如果命令返回 0,那么探针就是成功的。

 

ERROR: The Pod "app" is invalid: spec.containers[0].livenessProbe.successThreshold: Invalid value: 3: must be 1

对于 Liveness 探针,successThreshold 的值必须为 1。这是因为 Liveness 探针只需要一次成功的探测就能确定容器是存活的。所以,你需要将 successThreshold 的值改为 1。

apiVersion: v1
kind: Pod
metadata:name: 'app'labels: name: 'zs'age: '18'
spec:containers:- name: 'probe-po'image: nginx:1.14.2livenessProbe:httpGet:path: /index.htmlport: 80initialDelaySeconds: 5periodSeconds: 5timeoutSeconds: 5failureThreshold: 3successThreshold: 1

这时 如果将 index.html 改成 index1.html 

 livenessProbe 采用 tcpSocket

apiVersion: v1
kind: Pod
metadata:name: 'app'labels: name: 'zs'age: '18'
spec:containers:- name: 'probe-po'image: nginx:1.14.2livenessProbe:# httpGet:#   path: /index1.html#   port: 80# initialDelaySeconds: 5# periodSeconds: 5# timeoutSeconds: 5# failureThreshold: 3# successThreshold: 1tcpSocket:port: 80periodSeconds: 5successThreshold: 1failureThreshold: 3

livenessProbe 采用 exec

apiVersion: v1
kind: Pod
metadata:name: 'app'labels: name: 'zs'age: '18'
spec:containers:- name: 'probe-po'image: nginx:1.14.2livenessProbe:# httpGet:#   path: /index1.html#   port: 80# initialDelaySeconds: 5# periodSeconds: 5# timeoutSeconds: 5# failureThreshold: 3# successThreshold: 1# tcpSocket:#  port: 89# periodSeconds: 5# successThreshold: 1# failureThreshold: 3exec:command: ['cat', '/usr/share/nginx/html/index.html']# - cat# - /usr/share/nginx/html/index.htmlsuccessThreshold: 1failureThreshold: 3timeoutSeconds: 3periodSeconds: 3

改成 index1.html

配置 livenessProbe readinessProbe startupProbe

apiVersion: v1
kind: Pod
metadata:name: 'app'labels: name: 'zs'age: '18'
spec:containers:- name: 'probe-po'image: nginx:1.14.2livenessProbe:# httpGet:#   path: /index1.html#   port: 80# initialDelaySeconds: 5# periodSeconds: 5# timeoutSeconds: 5# failureThreshold: 3# successThreshold: 1# tcpSocket:#  port: 89# periodSeconds: 5# successThreshold: 1# failureThreshold: 3exec:command: ['cat', '/usr/share/nginx/html/index1.html']# - cat# - /usr/share/nginx/html/index.htmlsuccessThreshold: 1failureThreshold: 3timeoutSeconds: 3periodSeconds: 3readinessProbe: httpGet: path: /index.htmlport: 80failureThreshold: 3successThreshold: 1 timeoutSeconds: 3periodSeconds: 3startupProbe: httpGet:path: /index.htmlport: 80failureThreshold: 3successThreshold: 1timeoutSeconds: 3periodSeconds: 3

 

这篇关于K8S哲学 - probe 探针的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/921156

相关文章

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

云原生容器技术入门:Docker、K8s技术的基本原理和用途

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、容器技术概述 1、什么是容器技术 2、容器技术的历史与发展 3、容器技术与虚拟机的比较 4、容器技术在云原生中的作用 二、Docker基础 1、Docker简介 2、Docker架构 3、Docker与工作原理 三、Kubernetes(k8s)基础 1、

k8s集群master故障恢复笔记

剔除故障节点 kubectl drain master故障节点 kubectl delete node master故障节点 kubeadm reset rm -rf /etc/kubernetes/manifests mkdir -p /etc/kubernetes/pki/etcd/ 从master其他节点拷 scp /etc/kubernetes/pki/ca.crt ca.k

【K8S运维】整理常见使用命令

*特别提醒: 文件复制类的命令,执行命令等需要谨慎确定命令执行后的效果,否则一旦出错就不可逆!!! 命令概览 序号使用场景命令格式使用样例命令使用说明1查询集群节点有多少kubectl get nodes2查询集群运行哪些podkubectl get pods -o wide -A3查询指定pod名称的pod信息kubeclt get pods -o wide -A|grep <具体pod对象

【云原生】Docker可视化工具Portainer使用详解

目录 一、前言 二、docker可视化管理概述​​​​​​​ 2.1 什么是docker可视化管理 2.1.1 Docker可视化管理常用功能 2.2 为什么需要docker可视化管理工具 2.3 docker可视化工具带来的好处 三、常用的docker容器可视化管理工具解决方案 3.1 Portainer 3.2 Rancher 3.2.1 Rancher功能特性 3.

K8S - 实现statefulset 有状态service的灰度发布

什么是灰度发布 Canary Release 参考 理解 什么是 滚动更新,蓝绿部署,灰度发布 以及它们的区别 配置partition in updateStrategy/rollingUpdate 这次我为修改了 statefulset 的1个yaml file statefulsets/stateful-nginx-without-pvc.yaml: ---apiVersio

Linux中的哲学体现

1. linux中配置文件的设置 统一的配置文件(或配置文件模板)一般为xxx.conf文件个性化的配置文件(或各个项目的配置文件)一般放在xxx.conf.d这个目录下一般还会有一个xxx.conf.enable目录,把需要启用的配置文件链接在这里 所以,程序读取的实际上是xxx.conf.enable目录的配置文件,而xxx.conf.enable目录中的配置文件是xxx.conf.d中配

K8s常用运维命令

一. 查看集群信息 [root@k8s-master ~]# kubectl cluster-info Kubernetes master is running at http://localhost:8080 To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. [root@k8s

linux设备上的Onvif 实现5:实现Probe命令检测设备

学习Onvif的最关键步骤就是设备发现,一般来说开发的设备都是客户端,只要能被服务端正确发现就大功告成啦! 本文分别实现了客户端和服务端的识别流程,可以配合起来运行测试。 第一部分:实现Probe检测实例 代码目录: \\192.168.0.234\work\gaoht\gsoap\test \\192.168.0.234\work\gaoht\gsoap\probe-sample G

k8s volcano + deepspeed多机训练 + RDMA ROCE+ 用户权限安全方案【建议收藏】

前提:nvidia、cuda、nvidia-fabricmanager等相关的组件已经在宿主机正确安装,如果没有安装可以参考我之前发的文章GPU A800 A100系列NVIDIA环境和PyTorch2.0基础环境配置【建议收藏】_a800多卡运行环境配置-CSDN博客文章浏览阅读1.1k次,点赞8次,收藏16次。Ant系列GPU支持 NvLink & NvSwitch,若您使用多GPU卡的机型,