在K8s集群中,当Pod处于运行状态时,kubelet通过使用探针(Probe)对容器的健康状态执行检查和诊断。K8s支持三种不同类型的探针,分别是:livenessProbe(存活探针)、readinessProbe(就绪探针)和startupProbe(启动探针)。不同类型的探针都支持三种方式检查方法,分别是:HTTPGetAction、ExecAction和TCPSocketAction。
视频讲解如下:
下面重点讨论提下探针的ExecAction检查方法。该检查方法是在容器内部执行Shell命令,如果命令退出时返回码为0则认为诊断成功。下面通过一个具体的示例来演示如何使用“ExecAction”方式的探针。
(1)创建execaction.yaml文件,输入下面的内容。
apiVersion: v1 kind: Pod metadata: labels: test: liveness name: liveness-exec spec: containers: - name: liveness image: busybox args: - /bin/sh - -c - touch /tmp/healthy; sleep 10; rm -rf /tmp/healthy; sleep 10 ## 这里以存活探针为例 livenessProbe: ## 指定存活探针检查方法是ExecAction exec: ## 指定在容器内具体执行的命令 command: - cat - /tmp/healthy ## 指定容器启动5秒后才进行检查 initialDelaySeconds: 5 ## 指定每隔5秒检查一次 periodSeconds: 5
提示:这里使用ExecAction检测文件“/tmp/healthy”。该文件创建后,每隔10秒就会被删除。如果通过执行ExecAction检测文件被删除,存活探针就会返回失败,然后根据重启策略进行Pod的重启。下次ExecAction检测时再重复这一过程,检测的过程将无限循环。
(2)使用“kubeclt apply”命令应用execaction.yaml文件。
kubectl apply -f execaction.yaml
(3)多执行几次命令查看Pod的状态信息,如下图所示。
kubectl get pod