存活、就绪和启动探针简单学习了解

发布时间:2023年12月18日

配置存活、就绪和启动探针官方文档地址
https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

许多长时间运行的应用最终会进入损坏状态,除非重新启动,否则无法被恢复。 Kubernetes 提供了存活探针来发现并处理这种情况。

定义存活命令
许多长时间运行的应用最终会进入损坏状态,除非重新启动,否则无法被恢复。 Kubernetes 提供了存活探针来发现并处理这种情况。
在本练习中,你会创建一个 Pod,其中运行一个基于 registry.k8s.io/busybox 镜像的容器。 下面是这个 Pod 的配置文件。

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
  namespace: app
spec:
  imagePullSecrets:
  - name: registry-pull-secret
  containers:
  - name: liveness
    image: 192.168.21.121:5000/app/busybox@sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee
    imagePullPolicy: Always                                         #镜像拉取策略
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600   #当容器启动时执行的命令
    livenessProbe:                    #存活探针的配置
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5           #kubelet 在执行第一次探测前应该等待 5 秒
      periodSeconds: 5                 #指定了 kubelet 应该每 5 秒执行一次存活探测
在这个配置文件中,可以看到 Pod 中只有一个 Container。 periodSeconds 字段指定了 kubelet 应该每 5 秒执行一次存活探测。 initialDelaySeconds 字段告诉 kubelet 在执行第一次探测前应该等待 5 秒。 kubelet 在容器内执行命令 cat /tmp/healthy 来进行探测。 如果命令执行成功并且返回值为 0,kubelet 就会认为这个容器是健康存活的。 如果这个命令返回非 0 值,kubelet 会杀死这个容器并重新启动它。

基于TCP 的存活探测和就绪探测

#在这里咱们启动一个tomcat的容器,探测tmcat服务的8080端口
[root@k8s-master1 probe]# cat tcp-liveness-readiness.yaml
apiVersion: v1
kind: Pod
metadata:
  name: goproxy
  namespace: app
  labels:
    app: goproxy
spec:
  imagePullSecrets:
  - name: registry-pull-secret
  containers:
  - name: goproxy
    image: 192.168.21.121:5000/app/tomcat@sha256:6a1163fd0c216d0baf5020fb63198d8fddfd466c8449f6a9bcc2aa7ab387a9e9
    ports:
    - containerPort: 8080
    readinessProbe:                     #就绪探针配置
      tcpSocket:
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 10
    livenessProbe:                      #存活探针配置
      tcpSocket:
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20

如你所见,TCP 检测的配置和 HTTP 检测非常相似。 下面这个例子同时使用就绪和存活探针。kubelet 会在容器启动 15 秒后发送第一个就绪探针。 探针会尝试连接 goproxy 容器的 8080 端口。 如果探测成功,这个 Pod 会被标记为就绪状态,kubelet 将继续每隔 10 秒运行一次探测。

除了就绪探针,这个配置包括了一个存活探针。 kubelet 会在容器启动 15 秒后进行第一次存活探测。 与就绪探针类似,存活探针会尝试连接 goproxy 容器的 8080 端口。 如果存活探测失败,容器会被重新启动。

验证一下存活探针是否有效
在这里插入图片描述
咱们进容器内把tomcat进程停掉
在这里插入图片描述
当我们把容器内部的Tomcat进程停掉以后,存活探针探测8080端口失败以后,kubelet自己重启了容器
在这里插入图片描述

文章来源:https://blog.csdn.net/qq_40657367/article/details/134954081
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。