探针分类:
liveness probe
readiness probe
startup probe
Liveness Probe:用于检查容器是否还在运行。如果 Liveness Probe 失败,Kubernetes 会杀死容器,然后根据你的重启策略来决定是否重新启动容器。常见的做法是使用与 Readiness Probe 相同的低成本 HTTP 端点,但是设置更高的
failureThreshold,这样可以确保在 Pod 被强制杀死之前,它会被观察到为 not-ready 一段时间。Readiness Probe:用于检查容器是否准备好接受流量。一个 Pod 被认为是 ready 的,当且仅当它的所有容器都是 ready 的。这个信号的一个用途是控制哪些 Pod 被用作 Service 的后端。当一个 Pod 不是 ready 的,它会从 Service 的负载均衡器中移除。
Startup Probe:用于检查容器应用程序是否已经启动。如果配置了这样的探针,那么在它成功之前,Liveness Probe 和 Readiness Probe 不会开始,确保这些探针不会干扰应用程序的启动。这可以用于对慢启动的容器进行 Liveness 检查,避免它们在启动并运行之前被 kubelet 杀死。
探测方式
HTTPGetAction
TCPSocketAction
ExecAction
每种探针都可以使用以下三种方式之一进行检查:
HTTP GET:对容器的一个 HTTP 服务器发起一个 GET 请求。如果服务器返回的状态码在 200 到 399 之间,那么探针就是成功的。
TCP Socket:尝试打开容器的一个 TCP 端口。如果端口已经打开,那么探针就是成功的。
Exec:在容器中执行一个命令。如果命令返回 0,那么探针就是成功的。

对于 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.2
- livenessProbe:
- httpGet:
- path: /index.html
- port: 80
- initialDelaySeconds: 5
- periodSeconds: 5
- timeoutSeconds: 5
- failureThreshold: 3
- successThreshold: 1

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

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


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

改成 index1.html

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