文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

kubernetes中如何实现Pod健康检查

2023-06-04 16:42

关注

小编给大家分享一下kubernetes中如何实现Pod健康检查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一:前言
对Pod的健康状态检查可以通过两类探针来检查:LivenessProbe和ReadinessProbe
1.LivenessProbe探针: 用于判断容器是否存活,如果LivenessProbe探针探测到容器不健康,则kubelet将杀掉该容器,并根据容器的重启策略做相应的处理。如果一个容器不包含LivenessProbe探针,那么kubelet认为该容器的LivenessProbe探针返回值永远是“Success”.

2.ReadinessProbe探针: 用于判断容器是否启动完成,可以接收请求。如果ReadinessProbe 探针检测到失败,则Pod的状态将被修改。Endpoint Controller将从Service的Endpoint中删除包括该容器所在Pod的Endpoint.

二:LivenessProbe实现方式

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

  1. apiVersion: v1

  2. kind: Pod

  3. metadata:

  4.   labels:

  5.     test: liveness

  6.   name: liveness-exec

  7. spec:

  8.   containers:

  9.   -  name:liveness

  10.     image:busybox

  11.     args:

  12.     -  /bin/sh

  13.     - -c

  14.     - echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 600

  15.     livenessProbe:

  16.       exec:

  17.         command:

  18.         - cat

  19.         - /tmp/health

  20.     initialDelaySeconds: 15

  21.     timeoutSeconds: 1

通过执行“cat /tmp/health”命令来判断一个容器运行是否正常。而该Pod运行之后,在创建/tmp/health文件的10s之后将删除该文件,而LivenessProbe健康检查的初始探测时间(initialDelaySeconds)为15s,探测结果将是Fail,将导致kubelet杀掉该容器并重启它。

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

  1. apiVersion: v1

  2. kind: Pod

  3. metadata:

  4.   name: pod-with-healthcheck

  5. spec:

  6.   containers:

  7.   - name: nginx

  8.     image: nginx

  9.     ports:

  10.     - containerPort: 80

  11.   livenessProbe:

  12.     tcpSocket:

  13.       port: 80

  14.     initialDelaySeconds: 30

  15.     timeoutSeconds: 1

3. HTTPGetAction: 通过容器的IP地址,端口号及路径调用HTTP Get方法,如果响应的状态码大于等于200且小于400,则认为容器状态健康。

  1. apiVersion: v1

  2. kind: Pod

  3. metadata:

  4.   name: pod-with-healthcheck

  5. spec:

  6.   containers:

  7.   - name: nginx

  8.     image: nginx

  9.     ports:

  10.     - containerPort: 80

  11.   livenessProbe:

  12.     httpGet:

  13.       port: 80

  14.       path: /_status/healthz

  15.     initialDelaySeconds: 30

  16.     timeoutSeconds: 1

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

三:说明

1.initialDelaySeconds:启动容器后进行首次健康检查的等待时间,单位为s
2.timeoutSeconds: 健康检查发送请求后等待响应的超时时间,单位为s. 当超时发生时,kubelet会认为容器已经无法提供服务,将会重启该容器。

以上是“kubernetes中如何实现Pod健康检查”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯