K8S集群中Pod健康检查探针异常排查思路

举报
jiangxl 发表于 2022/07/16 00:50:12 2022/07/16
【摘要】 K8S集群中Pod健康检查探针异常排查思路 文章目录 K8S集群中Pod健康检查探针异常排查思路1.为什么要对Pod资源配置健康检查2.Pod资源健康检查异常排查思路 1.为什么要对P...

K8S集群中Pod健康检查探针异常排查思路

1.为什么要对Pod资源配置健康检查

Pod资源中容器都是提供具体的应用程序服务的,如果没有健康检查机制,那么K8S集群就不知道Pod资源的运行状态,只要Pod处于Running状态,K8S就会认为里面的容器以及服务都是健康的,如果是这种现象,那么K8S集群的故障自愈就起不到作用了。

如果没有健康检查机制,只要容器启动不报错,那么Pod就会一直处于Running状态,只要处于Running状态并且Ready也满足,那么该Pod就会对外提供服务,但是实际上,容器启动成功后,里面部署的服务不一定也能启动,比如JAVA类的应用程序,启动成功都在1分钟左右。

并且如果没有配置健康检查机制,当程序故障后,也不会自愈,用户请求的可能就是异常的Pod,对于用户来说是不友好的。

基于上述问题,必须要配置Pod资源的健康检查机制。

健康检查探针分为两种:

  • 存活性检测(LivenessProbe)
    • 存活性探测指的是检测容器是否处于启动成功的状态,主要用于是否决定重启容器。
  • 就绪性检测(ReadinessProbe)
    • 就绪性检测是指在容器中的服务是否处于可以提供服务的状态,主要来决定容器中的服务是否可用。

当经过这两种健康检查检测后,容器的状态才会成为Ready,并且就绪性检测会每隔一段时间就会检测。

# kubectl get pod

NAME                           READY   STATUS    RESTARTS   AGE
know-system-6f469df75d-7lgp2   1/1     Running   0          5h27m

  
 
  • 1
  • 2
  • 3
  • 4

当Ready的值为1/1时,才能对外提供服务。

两种探针的方式都相同,分别有HTTPGet方式、TcpSocket方式、Exec方式三种。

2.Pod资源健康检查异常排查思路

1)首先查看Pod的状态,应该会看到Pod会一直处于重建的状态。

2)查看Pod资源运行的详细事件信息,可以获得关键线索。

3)查看容器的运行日志。

常见的错误如下所示:

Killing container with id docker://jiangxlrepo:Container failed probe.. Container will bekilledandrecreated. liveness

  
 
  • 1

解决方法:

出现该问题的原因可能是没有设置探针的延迟时间导致的,如果只配置了健康检查的方式,没有配置当Pod启动多长时间后再监测,可能就会出现此问题。

        livenessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 60

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

文章来源: jiangxl.blog.csdn.net,作者:Jiangxl~,版权归原作者所有,如需转载,请联系作者。

原文链接:jiangxl.blog.csdn.net/article/details/125802812

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。