kubernetes之配置保活探针与就绪探针

参考:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/

在kubernetes中,kubelet通过liveness探针决定在何时重新启动容器。例如,容器中的应用运行时进入死锁状态,liveness探针对容器进行健康检查时检测到这种情况,那么探针检测失败,则kubelet就会重新启动容器。可以看到重新启动并没有从根本上解决死锁问题,只是忽略了问题使容器继续运行。

kubelet通过readiness类型的探针决定container是否准备就绪处理流量,当pod中的所有container全部处于ready状态时,pod被认为可以对外提供服务。readiness探针的典型应用是控制pod是否作为service的backend。以下示例中都没有为容器指定"restart policy",所以均采用默认值"Always"。

Define a liveness command

有些程序因为长时间运行而进入崩坏的状态,其中的一个解决办法是重新启动,liveness探针专门用来解决此类问题。

下例是运行一个容器的pod,容器image是k8s.gcr.io/busybox,配置文件如下:

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; r
### 配置探针Liveness Probe)和就绪探针Readiness Probe) 在 Kubernetes 中,存探针livenessProbe)和就绪探针readinessProbe)用于管理容器的健康状态。它们分别通过不同的方式影响 Pod 的状态和流量调度。 #### 存探针Liveness Probe) 存探针用于检测容器中的应用程序是否仍然处于运行状态。如果探针检测失败,Kubernetes 会认为容器已经崩溃,并根据 Pod 的重启策略重启容器。这种探针适用于需要自动恢复的应用场景,例如 Web 服务器或数据库服务。 存探针配置通常包括探测方式(HTTP、TCP 或 Exec)、探测路径、端口、初始延迟时间(initialDelaySeconds)和探测间隔时间(periodSeconds)等参数。 以下是一个基于 HTTP 的存探针配置示例: ```yaml livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 30 periodSeconds: 10 ``` 存探针的检测结果会体现在 Pod 的状态信息中。如果探测成功,Pod 的状态为 Running;如果探测失败,kubelet 会根据 Pod 的重启策略来重启容器 [^2]。 #### 就绪探针Readiness Probe就绪探针用于检测容器是否已经准备好接收流量。如果探针检测失败,Kubernetes 会将该容器从服务的负载均衡池中移除,直到探针检测成功。这种探针适用于需要确应用完全就绪后才接收请求的场景,例如需要加载大量数据或依赖外部服务的应用。 就绪探针配置方式探针类似,包括探测方式、路径、端口、初始延迟时间和探测间隔时间等。 以下是一个基于 HTTP 的就绪探针配置示例: ```yaml readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 5 periodSeconds: 10 ``` 就绪探针的作用是确只有在容器应用完全准备好后才接收流量,从而避免将请求发送到尚未就绪的容器 [^1]。 #### 综合配置示例 以下是一个完整的 Pod 配置示例,包含存探针就绪探针的定义: ```yaml apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: nginx ports: - containerPort: 80 livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 30 periodSeconds: 10 readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 5 periodSeconds: 10 ``` 通过合理配置探针就绪探针,可以有效提升容器化应用的稳定性和可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值