2) ReadinessProbe探针
同样是可以根据用户自定义规则来判断pod是否健康 , 如果探测失败 , 控制器会将此pod从对应service的endpoint列表中移除 , 从此不再将任何请求调度到此Pod上 , 直到下次探测成功 。
3) startupProbe探针
启动检查机制 , 应用一些启动缓慢的业务 , 避免业务长时间启动而被上面两类探针kill掉 , 这个问题也可以换另一种方式解决 , 就是定义上面两类探针机制时 , 初始化时间定义的长一些即可 。
每种探测方法能支持以下几个相同的检查参数 , 用于设置控制检查时间:
- initialDelaySeconds:初始第一次探测间隔 , 用于应用启动的时间 , 防止应用还没启动而健康检查失败
- periodSeconds:检查间隔 , 多久执行probe检查 , 默认为10s;
- timeoutSeconds:检查超时时长 , 探测应用timeout后为失败;
- successThreshold:成功探测阈值 , 表示探测多少次为健康正常 , 默认探测1次 。
1)Exec: 通过执行命令的方式来检查服务是否正常 , 比如使用cat命令查看pod中的某个重要配置文件是否存在 , 若存在 , 则表示pod健康 。 反之异常 。
Exec探测方式的yaml文件语法如下:
spec:
containers:
- name: liveness
image: k8s.gcr.io/busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
livenessProbe: #选择livenessProbe的探测机制
exec: #执行以下命令
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5 #在容器运行五秒后开始探测
periodSeconds: 5 #每次探测的时间间隔为5秒
在上面的配置文件中 , 探测机制为在容器运行5秒后 , 每隔五秒探测一次 , 如果cat命令返回的值为“0” , 则表示健康 , 如果为非0 , 则表示异常 。
2)Httpget: 通过发送http/htps请求检查服务是否正常 , 返回的状态码为200-399则表示容器健康(注http get类似于命令curl -I) 。
Httpget探测方式的yaml文件语法如下:
spec:
containers:
- name: liveness
image: k8s.gcr.io/liveness
livenessProbe: #采用livenessProbe机制探测
httpGet: #采用httpget的方式
scheme:HTTP #指定协议 , 也支持https
path: /healthz #检测是否可以访问到网页根目录下的healthz网页文件
- 删除|拼多多商品转化率低有什么影响?多少正常?
- 删除|曾经的苹果iPhone高攀不起,现在对比国产机,反成性价比?
- 删除|国产手机,靠前缀装饰而来的冠军,能否捍卫尊严?
- 删除|Excel工作表之行、列、单元格(一)
- 删除|一体机渐成趋势,宏碁联想两款酷睿12机型降价,最低3999元
- 删除|100%的中国制造,这一大国重器不输光刻机,掌握主要工业消耗品
- 删除|6 件在你的电脑上占用太多空间的东西
- 删除|5G+亮相,iPhone14系列另一项重大提升曝光,事关你的亮码速度!
- 删除|小米这App炸了,百万米粉在线求救
- 删除|卡里两毛钱被赋红码后,网友发问:阿里马云和银行究竟谁风险更大
