作者信息:https://home.cnblogs.com/u/huangjiabobk

在K8S中,Pod有几种探针?

在 Kubernetes (K8s) 中,Pod 的容器可以通过探针(Probes)来检测容器的健康状况和就绪状态。探针主要用于确保容器能够正确启动并在运行过程中保持健康状态。Kubernetes 支持三种类型的探针:

  1. livenessProbe (存活探针)
  2. readinessProbe (就绪探针)
  3. startupProbe (启动探针)

每种探针都有其特定的作用和使用场景。

1. livenessProbe (存活探针)
  • 目的

    • 检查容器是否还活着,即是否处于正常运行状态。
    • 如果容器被认为是不健康的,Kubernetes 会杀死这个容器,并根据容器的重启策略(如 AlwaysOnFailure)来决定是否重启它。
  • 触发时机

    • 在容器运行期间定期执行。
  • 示例配置

    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 30
      periodSeconds: 10
    
2. readinessProbe (就绪探针)
  • 目的

    • 检查容器是否已经准备好接收流量。
    • 只有当容器通过就绪探针检查时,Kubernetes 才会将其加入到 Service 的后端列表中。
  • 触发时机

    • 在容器运行期间定期执行。
  • 示例配置

    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
    
3. startupProbe (启动探针)
  • 目的

    • 检查容器是否成功启动并进入就绪状态。
    • 这种探针主要用于那些启动时间较长的应用程序,以避免在容器启动完成之前就执行 livenessProbe 或 readinessProbe。
  • 触发时机

    • 在容器启动后立即执行,并在容器被认为已准备好之前一直执行。
  • 示例配置

    startupProbe:
      exec:
        command:
          - cat
          - /tmp/healthy
      initialDelaySeconds: 1
      periodSeconds: 1
      failureThreshold: 30
    
4. 探针配置参数
  • httpGet

    • 通过 HTTP GET 请求来检查容器状态。
    • 需要指定路径和端口。
  • tcpSocket

    • 检查容器内的 TCP 端口是否打开。
    • 需要指定端口号。
  • exec

    • 在容器内执行命令。
    • 需要指定要执行的命令。
  • initialDelaySeconds

    • 探针开始执行前等待的秒数。
  • periodSeconds

    • 探针执行间隔的秒数。
  • timeoutSeconds

    • 探针执行的最大等待时间。
  • successThreshold

    • 探针连续成功执行的次数。
  • failureThreshold

    • 探针连续失败执行的次数,超过此次数后将采取行动。
4. 使用探针的好处
  • 提高应用的可靠性:通过探针可以及时发现容器的问题,并采取适当的措施,如重启容器。
  • 优化服务的可用性:只有当容器准备就绪时才将流量路由到该容器,确保服务始终可用。
  • 减少不必要的资源浪费:避免长时间运行不健康或未准备好状态的容器。
5. 示例 YAML 配置

以下是一个简单的 YAML 文件示例,展示了如何配置 livenessProbe 和 readinessProbe:

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
  - name: myapp-container
    image: my-app-image
    ports:
    - containerPort: 8080
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 30
      periodSeconds: 10
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5

综上所述,这些探针配置可以根据实际应用的需求进行调整,以确保容器的健康和就绪状态得到有效的监控。

posted @ 2024-07-30 11:18  黄嘉波  阅读(33)  评论(0编辑  收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波