容器探针
一、了解
⭐️ 探针是由 kubelet
对容器执行的定期诊断。 要执行诊断,kubelet
调用由容器实现的 Handler
(处理程序)。有三种类型的处理程序:
ExecAction
: 在容器内执行指定命令。如果命令退出时返回码为 0 则认为诊断成功。TCPSocketAction
: 对容器的IP
地址上的指定端口执行TCP
检查。如果端口打开,则诊断被认为是成功的。HTTPGetAction
: 对容器的IP
地址上指定端口和路径执行HTTP Get
请求。如果响应的状态码大于等于 200 且小于 400,则诊断被认为是成功的。
⭐️ 每次探测都将获得以下三种结果之一:
- Success(成功):容器通过了诊断。
- Failure(失败):容器未通过诊断。
- Unknown(未知):诊断失败,因此不会采取任何行动。
⭐️ 针对运行中的容器,kubelet
可以选择是否执行以下三种探针,以及如何针对探测结果作出反应:
livenessProbe
:指示容器是否正在运行。如果存活态探测失败,则kubelet
会杀死容器, 并且容器将根据其重启策略决定未来。如果容器不提供存活探针, 则默认状态为Success
。readinessProbe
:指示容器是否准备好为请求提供服务。如果就绪态探测失败, 端点控制器将从与Pod
匹配的所有服务的端点列表中删除该 Pod 的 IP 地址。 初始延迟之前的就绪态的状态值默认为Failure
。 如果容器不提供就绪态探针,则默认状态为Success
。只有readiness
成功,main
C才能被宣布能够对外正常访问。startupProbe
: 指示容器中的应用是否已经启动。如果提供了启动探针,则所有其他探针都会被 禁用,直到此探针成功为止。如果启动探测失败,kubelet
将杀死容器,而容器依其 重启策略进行重启。 如果容器没有提供启动探测,则默认状态为Success
。
二、探针实列 livenessPobre
1️⃣ 编写 yaml
文档,创建 livenessPobre
[root@master ~]# cat pod/liveness-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: liveness-test
labels:
version: v1
spec:
containers:
- name: liveness-pod
image: centos
imagePullPolicy: IfNotPresent
command: ['/bin/sh','-c','touch /opt/1; sleep 1; rm -rf /opt/1 sleep3600']
livenessProbe:
exec:
command: ['test','-e','/opt/1']
timeoutSeconds: 1 ##超时时间
initialDelaySeconds: 1 ##容器启动后多少秒在启动检测
periodSeconds: 3 ##探测时间
2️⃣ 创建
[root@master ~]# kubectl create -f pod/liveness-pod.yaml pod/liveness-test created
3️⃣ 查看,可以看见重启了好多次达到6次就达到阈值就没有在重启了
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
liveness-test 0/1 CrashLoopBackOff 5 5m23s
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
liveness-test 0/1 CrashLoopBackOff 6 7m9s
三、readinessPobre
1️⃣ 编写yaml文档
apiVersion: v1
kind: Pod
metadata:
name: readiness-pod
labels:
version: v1
spec:
containers:
- name: readiness-test
image: harbor.tanc.com/library/nginx
imagePullPolicy: IfNotPresent
readinessProbe:
httpGet:
port: 80
path: /index1.html
timeoutSeconds: 2
periodSeconds: 3
initialDelaySeconds: 1
2️⃣执行后查看可以看到没有ready但是在运行
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
readiness-pod 0/1 Running 0 12s
3️⃣ 查看日志
kubectl log readiness-pod
10.244.1.1 - - [18/Aug/2021:11:15:15 +0000] "GET /index1.html HTTP/1.1" 404 153 "-" "kube-probe/1.15" "-"