Kubernetes中的Probes(探针)及其类型

在Kubernetes中,Probes(探针)是用来检查容器状态的一种机制。它们帮助Kubernetes确定容器何时处于健康状态、何时应该重启以及何时可以开始接收流量。Kubernetes支持三种类型的探针:

  1. Liveness Probe(存活探针)
  2. Readiness Probe(就绪探针)
  3. Startup Probe(启动探针)

每种探针都有其特定的用途,并且可以通过几种不同的方式来执行检查,包括exec命令、HTTP请求和TCP套接字。

Liveness Probe(存活探针)

  • 用途:存活探针用于检查容器是否仍在运行。如果存活探针失败,则Kubernetes会杀死该容器并根据Pod的重启策略进行处理。
  • 适用场景:当应用程序出现死锁或进入不响应的状态时,存活探针可以帮助系统识别这种情况并采取行动。

Readiness Probe(就绪探针)

  • 用途:就绪探针用于判断容器是否准备好开始服务请求。如果就绪探针失败,则端点控制器将从与Pod关联的所有Service的负载均衡池中移除相应的Pod。
  • 适用场景:当应用程序需要一段时间进行初始化或者需要依赖外部服务时,就绪探针可以确保只有在所有准备工作完成后才开始接受流量。

Startup Probe(启动探针)

  • 用途:启动探针用于检查应用程序的启动过程是否完成。这在应用启动时间较长的情况下特别有用,因为它允许你设置比存活探针更长的初始延迟。
  • 适用场景:对于那些启动时间可能很长的应用程序,使用启动探针可以防止存活探针在应用完全启动之前将其标记为失败。

探针的执行方式

  • Exec Action:在容器内执行指定的命令。如果命令退出时返回码为0,则认为诊断成功。

    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
    
  • HTTP Get:对容器的IP地址、端口和路径执行HTTP GET请求。如果响应的状态码大于等于200且小于400,则诊断被认为是成功的。

    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
    
  • TCP Socket:尝试打开一个到容器的指定端口的TCP连接。如果连接建立成功,则诊断被认为是成功的。

    livenessProbe:
      tcpSocket:
        port: 8080
    

配置示例

下面是一个包含所有三种探针类型的完整Pod配置示例:

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
    livenessProbe:
      httpGet:
        path: /healthz
        port: 80
      initialDelaySeconds: 30
      periodSeconds: 10
    readinessProbe:
      httpGet:
        path: /ready
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 5
    startupProbe:
      httpGet:
        path: /startup
        port: 80
      failureThreshold: 30
      periodSeconds: 10

在这个例子中:

  • livenessProbe 每10秒检查一次 /healthz 端点,初始延迟为30秒。
  • readinessProbe 每5秒检查一次 /ready 端点,初始延迟为5秒。
  • startupProbe 每10秒检查一次 /startup 端点,最大失败次数为30次,即最多等待5分钟。

通过合理配置这些探针,你可以提高应用程序的可靠性和可用性,确保只有健康的服务实例才会处理用户请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值