【赵渝强老师】K8s中Pod探针的ExecAction

在K8s集群中,当Pod处于运行状态时,kubelet通过使用探针(Probe)对容器的健康状态执行检查和诊断。K8s支持三种不同类型的探针,分别是:livenessProbe(存活探针)、readinessProbe(就绪探针)和startupProbe(启动探针)。不同类型的探针都支持三种方式检查方法,分别是:HTTPGetAction、ExecAction和TCPSocketAction。

视频讲解如下
【赵渝强老师】K8s Pod探针的ExecAction

下面重点讨论提下探针的ExecAction检查方法。该检查方法是在容器内部执行Shell命令,如果命令退出时返回码为0则认为诊断成功。下面通过一个具体的示例来演示如何使用"ExecAction"方式的探针。

(1)创建execaction.yaml文件,输入下面的内容。

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文件。

powershell 复制代码
kubectl apply -f execaction.yaml 

(3)多执行几次命令查看Pod的状态信息,如下图所示。

powershell 复制代码
kubectl get pod
相关推荐
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS3 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
codeejun3 天前
每日一Go·MySQL-5、锁机制全解析
云原生·golang
赵文宇(温玉)3 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang3 天前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren3 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
忆~遂愿3 天前
本地片库怎么在外面打开?Plex + cpolar 搭一套可远程访问的私人影音库
docker·容器
Thneonl3 天前
你的 Pod 为什么 Pending:调度器两阶段
后端·kubernetes
不吃香菜kkk、3 天前
CI/CD(GitOps)学习与部署手册
运维·云原生·容器·kubernetes·云计算·jenkins·argocd
ChaITSimpleLove3 天前
云原生性能对决:JDK21虚拟线程+GraalVM vs .NET10/11 技术栈深度对比
微服务·云原生·serverless·graalvm native·native aot·runtime async·.net11/java21