K8S探针的应用

1、探针的简介

在Kubernetes中,探针(Probes)是用来检查容器健康状况的工具,它们帮助Kubernetes了解容器的状态。Kubernetes支持三种类型的探针:

  • 就绪探针(Readiness Probe):用于判断容器是否准备好服务请求。如果就绪探针失败,Kubernetes不会将流量发送到该容器。
  • 存活探针(Liveness
    Probe):用于判断容器是否仍然运行。如果存活探针失败,Kubernetes会杀死该容器,并根据Pod的重启策略决定是否重启容器。
  • 启动探针(Startup
    Probe):这是一个可选的探针,用于在容器启动时检查其是否已经准备好。这对于那些启动时间较长的容器特别有用,可以防止在容器完全启动之前就开始进行就绪和存活检查。

2、启用探针

你可以通过在Pod的配置文件中定义readinessProbe、livenessProbe或startupProbe来启用这些探针。

2.1、启用就绪探针

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

2.2、启用存活探针

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
  - name: myapp-container
    image: myapp-image
    ports:
    - containerPort: 8080
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20

2.3、启用启动探针(可选)

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
 - name: myapp-container
    image: myapp-image
    ports:
    - containerPort: 8080
    startupProbe:
      httpGet:
        path: /startupz
        port: 8080
      failureThreshold: 30
      periodSeconds: 10
    readinessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20

注意事项:

  • initialDelaySeconds:在开始进行健康检查之前等待的秒数。对于启动探针,这是容器完全启动之前的等待时间。对于就绪和存活探针,这是容器启动后开始检查前的延迟时间。
  • periodSeconds:执行健康检查的时间间隔(秒)。默认情况下,Kubernetes每10秒执行一次检查。根据应用的需要调整这个值。
  • failureThreshold:在认为容器失败并采取行动之前,连续失败的检查次数。默认情况下,这是3次连续失败。对于启动探针,这个值通常设置得较高,因为容器启动可能需要较长时间。
  • successThreshold(可选):在认为容器成功之前连续成功的检查次数。默认值是1,表示一次成功即可。对于启动探针,通常不需要这个设置。
  • type:可以是httpGet、tcpSocket或exec。httpGet通过HTTP
    GET请求来检查;tcpSocket通过打开一个socket来检查;exec通过执行一个命令来检查。根据需要选择合适的类型。

通过正确配置这些探针,你可以有效地管理容器的健康状态,确保应用的稳定性和可用性。

### Kubernetes探针的使用方法 在 Kubernetesk8s)中,探针被用来监控容器的状态并决定如何响应异常情况。以下是关于存活探针(Liveness Probe)、就绪探针(Readiness Probe)以及启动探针(Startup Probe)的具体配置方式。 #### 存活探针(Liveness Probe) 存活探针用于检测容器是否处于正常运行状态。如果探测失败,Kubernetes 的 kubelet 会杀死该容器,并依据其重启策略重新创建它。如果没有定义存活探针,默认情况下 kubelet 认为容器始终存活[^4]。 下面是一个 YAML 文件中的 `livenessProbe` 配置示例: ```yaml apiVersion: v1 kind: Pod metadata: name: liveness-exec-probe spec: containers: - name: liveness image: busybox args: - /bin/sh - -c - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep infinity livenessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 5 periodSeconds: 5 ``` 此例子通过执行命令来验证文件 `/tmp/healthy` 是否存在以确认容器健康状况[^1]。 #### 就绪探针(Readiness Probe) 就绪探针的作用在于判断容器是否准备好接收流量。即使容器正在运行,但如果未通过就绪检查,则不会收到服务负载均衡器分发过来的数据包。这意味着可以控制何时让应用进入可用队列[^3]。 这里展示了一个基于 HTTP 请求实现的 `readinessProbe` 设置实例: ```yaml apiVersion: v1 kind: Pod metadata: name: readiness-http-get-pod spec: containers: - name: webserver image: nginx ports: - containerPort: 80 readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 5 periodSeconds: 5 ``` 上述代码片段展示了如何利用 GET 方法访问根路径 (`/`) 来评估 Nginx 容器的服务能力[^2]。 #### 启动探针(Startup Probe) 自 Kubernetes 版本 1.16 起引入了启动探针功能,专门针对那些初始化时间较长的应用场景设计。只有当首次成功完成一次完整的生命周期循环之后才会激活常规的存活性与准备度测试流程;在此之前仅依赖于 startupProbe 结果作为唯一评判标准。 这是一个简单的 `startupProbe` 实现方案: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: startup-probe-example spec: replicas: 1 selector: matchLabels: app: example template: metadata: labels: app: example spec: containers: - name: slow-start-container image: my-slow-app-image startupProbe: tcpSocket: port: 9999 failureThreshold: 30 periodSeconds: 10 ``` 在这个部署对象里,我们指定了 TCP 握手端口为 9999 ,允许最多连续三次尝试失败才判定为不可用,并每隔十秒钟再次发起新一轮试探直至满足条件为止。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bst@微胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值