探针分为两类:

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

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

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

k8s Pod探针(健康检查和服务可用性检查)相关推荐

  1. K8s之Pod的健康检查

    前言 Pod的探测用于检测容器中的应用实例是否可以正常的工作.如果不能正常工作应该去重启,或者不将流量引入该实例.K8s给我们提供了三种探测方式. LivenessProbe,ReadinessPro ...

  2. k8s停止服务_Kubernetes 服务部署最佳实践(二) 如何提高服务可用性

    引言 上一篇 文章我们围绕如何合理利用资源的主题做了一些最佳实践的分享,这一次我们就如何提高服务可用性的主题来展开探讨. 怎样提高我们部署服务的可用性呢?K8S 设计本身就考虑到了各种故障的可能性,并 ...

  3. k8s之pod和pod探针

    k8s之pod和探针 什么是Pod Pod是Kubernetes中最小的单元,它由一组.一个或多个容器组成,每个Pod还包含了一个Pause容器,Pause容器是Pod的父容器,主要负责僵尸进程的回收 ...

  4. k8s每天报告服务器状态信息,[工作随笔] 配置 cron 检查 K8s Pod 存活状态以推送钉钉消息...

    背景 前段时间接手了一份维护老系统的任务.该系统使用了早期的 Spring Cloud 全家桶,其中有一个微服务随着时间运行会出现大量 CLOSE_WAIT 状态的 socket 连接以至于堵塞网关, ...

  5. linux生成海报时字体问题,研发:k8s pod 服务生成海报时字体出现乱码

    原标题:研发:k8s pod 服务生成海报时字体出现乱码 在使用容器化部署时,基础镜像使用 alpine 如果在系统处理时,需要用到其他字体需要,自行安装. 安装微软相关字体 FROM alpine: ...

  6. 记一次k8s pod频繁重启的优化之旅

    1.背景 最近有运维反馈某个微服务频繁重启,客户映像特别不好,需要我们尽快看一下. 听他说完我立马到监控平台去看这个服务的运行情况,确实重启了很多次.对于技术人员来说,这既是压力也是动力,大多数时候我 ...

  7. k8s pod 详解

    https://www.cnblogs.com/kevingrace/p/11309409.html 一.什么是Pod kubernetes中的一切都可以理解为是一种资源对象,pod,rc,servi ...

  8. k8s pod详细讲解

    文章目录 一.pod介绍 1.结构 2.定义 二.pod生命周期 1.创建和终止 2.初始化容器 3.钩子函数 4.容器探测 5.重启策略 三.Pod调度 1.定向调度 2.亲和性调度 3.污点和容忍 ...

  9. 【要闻】如何基于K8s管理1600个微服务?某数字化银行秘诀公开

    Cloud Foundry Foundation宣布KubeCF为新孵化项目 Cloud Foundry Foundation是开放源代码项目的聚集地,简化了开发人员的体验,近日其宣布,KubeCF已 ...

最新文章

  1. GXGetImage方式连续采集和发送软触发采集
  2. 《系统集成项目管理工程师》必背100个知识点-66工作说明书
  3. 上岸 | 青椒博士毕业后未返校任教,被判返还高校41万余元
  4. ubantu 单用户模式进入系统
  5. 公平锁非公平锁的实际使用_面经手册 · 第16篇《码农会锁,ReentrantLock之公平锁讲解和实现》...
  6. python中属性与方法_python中属性和方法的动态绑定
  7. GIMP小波分解处理照片
  8. 7714天,王小川正式卸任搜狗CEO!网友:别了。。。
  9. 从unity3d官网下载教程
  10. 百度冰桶算法说明,如何避免冰桶算法呢?
  11. php违章查询源码,ThinkPHP聚合数据违章查询接口
  12. 代码庆端午--粽你心意
  13. python图片合成海报
  14. 解决:docker容器内可以访问web应用,端口映射到宿主机却无法访问,错误代码:curl: 56 Recv failure: 连接被对方重设
  15. 《CCNA学习指南:数据中心(640-911)》——导读
  16. 互联网公司招聘,你需要注意这四点
  17. Shell的基础用法
  18. Spring搭建:log4j的配置
  19. 我在互联网大厂当鉴黄师:不看黄图敲代码,同事全都是博士
  20. 指点纺织行业管理系统软件

热门文章

  1. 界面的设计原则有哪些,你知道么?
  2. 【免费压缩图片的在线地址】
  3. 卡特尔16种因素测验(转载)
  4. 管理类联考笔试还是计算机考,管理类联考笔试究竟难在哪儿?
  5. css加载失败的原因是什么?
  6. 浅尝辄止,React是如何工作的
  7. WM8960调试记录
  8. 春季出游,学会这些功能,让你旅途更舒心
  9. spring + mybatis + c3p0 整合(配置篇)
  10. aarch64指令集_ARM与AARCH64指令集优化总结