阅读 72

Kubernetes Pod探针健康检查和服务可用性检查

探针分为两类

LivenessProbe探针:用于判断容器是否存活(running状态),如果探测到容器不健康,则kubelet将会杀掉该容器,然后根据重启策略进行重启。如果没有定义LivenessProbe探针,那么kubelet认为该容器永远正常。

ReadinessProbe探针:用于判断容器服务是否可用(Ready状态),达到Ready状态的Pod才会加入到Endpoint列表中,如果运行状态中Ready状态变为False,那么就会从Endpoint列表删除掉。

LivenessProbe和ReadinessProbe探针都可以配置以下三种方式:

  • ExecAction:在容器内执行一个命令,如果该命令的返回码为0,则表明容器健康。

  • TCPSocketAction:通过容器的IP地址和端口号执行TCP检查,如果能够建立TCP连接,则表明容器健康。

  • HTTPGetAction:通过容器的IP地址、端口号及路径调用HTTPGet方法,如果响应码大于200且小于400,则认为容器健康。


注意:initialDelaySeconds首次探测的时间很重要,时间过长(ExecAction案例)、过短(服务还没启动完成)都会导致容器一直重启无法提供服务,所以参数的值需要结合实际情况设置。

案例

ExecAction案例

在容器中执行cat/tmp/health命令来判断一个容器运行是否正常:

apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness
image: gcr.io/google_containers/busybox
args:
- /bin/sh
- -c
- echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 600    #Pod创建运行后,文件10s后删除导致首次健康检查的时候没有探测到,容器会被杀掉并重启,如此往复。
livenessProbe:
  exec:
    command:
    - cat
    - /tmp/health
  initialDelaySeconds: 15   #启动容器后进行首次健康检查的等待时间,单位为s。
  timeoutSeconds: 1 #健康检查发送请求后等待响应的超时时间,单位为s。如果超时则kubelet会重启容器。


TCPSocketAction案例

与容器内的localhost:80建立TCP连接进行监控检查:

apiVersion: v1
kind: Pod
metadata:
name: pod-with-healthcheck
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
livenessProbe:
  tcpSocket:
    port: 80
  initialDelaySeconds: 30   #启动容器后进行首次健康检查的等待时间,单位为s。
  timeoutSeconds: 1 #健康检查发送请求后等待响应的超时时间,单位为s。如果超时则kubelet会重启容器。


HTTPGetAction案例

kubelet定时发送HTTP请求到localhost:80/_status/healthz来进行容器应用的健康检查:

apiVersion: v1
kind: Pod
metadata:
name: pod-with-healthcheck
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
livenessProbe:
  httpGet:
    path: /_status/healthz
    port: 80
  initialDelaySeconds: 30   #启动容器后进行首次健康检查的等待时间,单位为s。
  timeoutSeconds: 1 #健康检查发送请求后等待响应的超时时间,单位为s。如果超时则kubelet会重启容器。



原文链接:https://blog.csdn.net/qq_36165 ... 62167


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐