编辑
2025-08-06
K8S(重新复习)
00

目录

1.exec探针
2.TCP socket 探针
3.HTTP GET 探针
总结

1.exec探针

yml
apiVersion: v1 kind: Pod metadata: name: liveness-exec labels: exec: exec spec: containers: - name: nginx image: nginx:1.19 ports: - containerPort: 80 args: - /bin/sh - -c - sleep 7;nginx -g "daemon off;" #这一步会和初始化同时开始运行,也就是在初始化5s后和7秒之间,会检测出一次失败,7秒后启动后检测正常,所以pod不会重启 imagePullPolicy: IfNotPresent livenessProbe: exec: #这里使用 exec 执行 shell 命令检测容器状态 command: - ls - /var/run/nginx.pid #查看是否有pid文件 initialDelaySeconds: 5 #初始化时间5s periodSeconds: 4 #检测间隔时间4s timeoutSeconds: 1 #默认检测超时时间为1s failureThreshold: 3 #默认失败次数为3次,达到3次后重启pod successThreshold: 1 #默认成功次数为1次,1 次代表成功
js
该yml配置文件说明:exec探针会去该路径下检查nginx是否有pid文件生成。 initialDelaySeconds: 5 容器启动五秒后开始检测 periodSeconds: 4 检测时间为4秒一次 failureThreshold: 3 检测3次失败将会重启pod successThreshold: 11次检测到有pid文件时就会成功

2.TCP socket 探针

yml
apiVersion: v1 kind: Pod metadata: name: liveness-tcpsocket labels: tcpsocket: tcpsocket spec: containers: - name: nginx image: nginx:1.19 ports: - containerPort: 80 args: - /bin/sh - -c - sleep 7;nginx -g "daemon off;" #这一步会和初始化同时开始运行,也就是在初始化5s后和7秒之间,会检测出一次失败,7秒后启动后检测正常,所以pod不会重启 imagePullPolicy: IfNotPresent livenessProbe: tcpSocket: port: 80 initialDelaySeconds: 5 #初始化时间5s periodSeconds: 4 #检测间隔时间4s timeoutSeconds: 1 #默认检测超时时间为1s failureThreshold: 3 #默认失败次数为3次,达到3次后重启pod successThreshold: 1 #默认成功次数为1次,1 次代表成功
js
tcpSocket探针它会监控你指定的端口是否存活,如配置文件检测80端口是否存活。

3.HTTP GET 探针

yml
apiVersion: v1 kind: Pod metadata: name: liveness-httpget labels: httpget: httpget spec: containers: - name: nginx image: nginx:1.19 ports: - containerPort: 80 args: - /bin/sh - -c - sleep 7;nginx -g "daemon off;" #这一步会和初始化同时开始运行,也就是在初始化5s后和7秒之间,会检测出一次失败,7秒后启动后检测正常,所以pod不会重启 imagePullPolicy: IfNotPresent livenessProbe: httpGet: #httpget port: 80 #访问的端口 path: /index.html #访问的路径 initialDelaySeconds: 5 #初始化时间5s periodSeconds: 4 #检测间隔时间4s timeoutSeconds: 1 #默认检测超时时间为1s failureThreshold: 3 #默认失败次数为3次,达到3次后重启pod successThreshold: 1 #默认成功次数为1次,1 次代表成功
js
HTTP GET 探针会发送一个get请求访问你指定的路径端口,如果返回200-399状态码为成功。

总结

txt
‌TCP Socket 探针‌ 向容器指定端口发起 TCP 连接(三次握手)。若端口成功打开,则判定为健康示例配置:仅需指定端口号。 ‌HTTP GET 探针‌ 向容器指定端口和 HTTP 路径发送 GET 请求。若响应状态码为 200-399,则判定为健康示例配置: 需指定端口、路径(如 /healthz),可自定义请求头。 ‌Exec 探针‌ 在容器内执行指定命令(如脚本或程序)。若命令退出状态码为 0,则判定为健康示例配置: 需定义完整的 Shell 命令(如 check_db.sh)。

本文作者:松轩(^U^)

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Document