此文为学习《Kubernetes权威指南》的相关笔记
学习笔记:
Kubernetes提供了两类探针(probe)作为健康和服务可用性检查的解决方案,允许使用者在Pod定义时指定检查方式和检查位置,使得K8s对于容器的管理不局限于通过容器init进程判断容器的健康程度,而是能够通过预先定义方式,根据容器类型、结构和功能的不同做不同检查,更准确地判断容器真正的状态,具有较强的灵活性。
这两类探针分别为:
- LivenessProbe探针,用于判断容器的存活状态(是否Runing),在判断为不健康时,kubelet将杀掉容器,根据容器的重启策略(RestartPolicy)作出不同的处理,如果不包含该探针,默认其返回值恒为Success
- ReadinessProbe探针,用于判断容器是否可用(是否Ready),只有Ready状态的Pod才能够接受请求,和LivenessProbe探针判断为false不同,服务可用探针判断为false后只将Pod从Service的可使用列表中移除,并不是直接杀死,因为可能还会存在恢复为Ready状态的情况,再回到Endpoint列表中。
两种探针均可以以下方式实现:
- ExecAction:通过执行命令的返回值做出判断
- TCPSocketAction:通过容器IP地址和端口号执行TCP检查,做出判断
- HTTPGetAction:通过HTTP Get方法检查,IP地址+端口号+路径,响应状态码200-400之间,则认为容器健康
以下是实现三种方法的实例:
1、通过ExecAction进行健康检查
编写yaml文件
定义spec.containers.livenessPobe.exec作为健康检查方式
探针尝试打开文件,因为时间设置,在第一次探测之间就删除该文件,探针返回false,容器将被重启
apiVersion: v1
kind: Pod
metadata:
name: liveness-exec
labels:
test: liveness
spec:
containers:
- name: liveness
image: busybox
args:
- /bin/sh
- -c
- echo ok >/tmp/health; sleep 10 ;rm -rf /tmp/health; sleep 600;
livenessProbe:
exec:
command:
- cat
- /tmp/health
initialDelaySeconds: 15
timeoutSeconds: 1

本文介绍了Kubernetes中Pod的健康检查和服务可用性检查,包括LivenessProbe和ReadinessProbe两种探针,以及通过ExecAction、TCPSocketAction和HTTPGetAction的实现方式。通过具体的例子展示了如何配置和理解这些健康检查机制。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



