推广 热搜:   中国  公司  行业  设备  快速  企业  上海  未来  技术 

statefulset 怎么重启pod

   日期:2024-12-21     移动:http://www78564.xrbh.cn/mobile/quote/27459.html

statefulset 怎么重启pod

文章目录

  • 一 . 资源限制
  • 资源限制,官方网站介绍
  • Pod和Container的资源请求和限制:
  • 我们可以在yaml中进行限制:如下
  • 创建资源
  • 发现有一个mysql失败
  • 进行修改mysql 的资源限制
  • 重新启动,发现正常了
  • 查看具体事件
  • 二 . 重启策略
  • 重启策略:Pod在遇到故障之后重启的动作
  • 1:Always:当容器终止退出后,总是重启容器,默认策略
  • 2:OnFailure:当容器异常退出(退出状态码非0)时,重启容器
  • 3:Never:当容器终止退出,从不重启容器。
  • 查看重启次数加1
  • 修改参数,让其不自动重启
  • 三 . 探针创建及检查方式
  • 健康检查:又称为探针(Probe)
  • 探针的类型分为两类:
  • 1、亲和性探针(LivenessProbe)
  • 2、就绪性探针(ReadinessProbe)
  • 探针(Probe)支持三种检查方法:
  • httpGet 发送http请求,返回200-400范围状态码为成功。
  • exec 执行Shell命令返回状态码是0为成功。
  • tcpSocket 发起TCP Socket建立成功
  • 探针 官网介绍地址
  • 示例1:exec方式 (适合基本服务,检查PID文件存在)
  • 编辑yaml文件
  • 创建资源
  • 查看资源状态
  • 修改参数,继续测试
  • 示例2:httpGet方式
  • 编辑yaml文件
  • 查看重启状态
  • 查看详细信息
  • 因为path 路径不对,下面创建一个正确的
  • 查看状态,运行正常,探测正常
  • 查看详细事件信息
  • 示例3 . 使用tcpSocket方式检查
  • 编写yaml文件
  • 查看状态
  • 四 . tcp socket方式,这个方式比较好理解(适合web 测试)
  • 实例一
  • 创建资源
  • 查看信息,不断重启,因为端口设置的不对
  • 实例二
  • 创建YAML文件
  • 创建资源
  • 实例三
  • 正常配置模拟测试案例
  • 配置参数说明:
  • 查看资源详细信息
  • 可以看到,nginx进程杀死后,pod自动重启.


Docker中我们可以对容器进行资源控制,在k8s中当然也有对pod资源进行控制

https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

资源限制


1:Always:当容器终止退出后,总是重启容器,默认策略

2:OnFailure:当容器异常退出(退出状态码非0)时,重启容器

3:Never:当容器终止退出,从不重启容器。

(注意:k8s中不支持重启Pod资源,只有删除重建)

因为exit 退出的返回码非0 值,检测到非正常退出,控制器会自动重启pode


[

(注意:)规则可以同时定义
livenessProbe 如果检查失败,将杀死容器,根据Pod的restartPolicy来操作。
ReadinessProbe 如果检查失败,kubernetes会把Pod从service endpoints中剔除。

pod的健康检查又被称为探针,来检查pod资源,探针的规则可以同时定义

1、亲和性探针(LivenessProbe)

判断容器是否存活(running),若不健康,则kubelet杀死该容器,根据Pod的restartPolicy来操作。
若容器中不包含此探针,则kubelet人为该容器的亲和性探针返回值永远是success

2、就绪性探针(ReadinessProbe)

判断容器服务是否就绪(ready),若不健康,kubernetes会把Pod从service endpoints中剔除,后续在把恢复到Ready状态的Pod加回后端的Endpoint列表。这样就能保证客户端在访问service’时不会转发到服务不可用的pod实例上
endpoint是service负载均衡集群列表,添加pod资源的地址

httpGet 发送http请求,返回200-400范围状态码为成功。

exec 执行Shell命令返回状态码是0为成功。

tcpSocket 发起TCP Socket建立成功

https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

编辑yaml文件

创建资源

查看资源状态

修改参数,继续测试

编辑yaml文件

查看重启状态

查看详细信息

因为path 路径不对,下面创建一个正确的

查看状态,运行正常,探测正常

查看详细事件信息

编写yaml文件

查看状态

比如说,起一个nginx容器,nginx服务提供的端口是80端口.
配置tcp socket 探针,设定隔一个时间,用tcp方式连接80端口,如果连接成功,就返回容器健康或者就绪,如果连接失败,返回容器不健康或者不就绪,kubelet重启容器.

逆向思维示例:
简单思路:探针tcp socket连接不存在的8080端口,必然连接失败报错,从而实现pod不断重启.

创建资源

查看信息,不断重启,因为端口设置的不对

起一个nginx的pod容器,提供服务端口80.
配置探针连接端口8080,第一次监测时间为pod容器启动后的45s,第一次监测后每隔20s监测一次.
测试结果,pod容器一直在重启.

describe报错

探针自动tcp连接容器ip:8080端口,失败.所以容器一直重启.

正常配置示例
正常配置是连接提供服务的80端口
简单思路:理论上来说,长时间运行的应用程序最终会过渡到中断状态,除非重新启动,否则无法恢复.Kubernetes提供了活性探针来检测和补救这种情况.这是配置探针的根本原因,以防万一.

创建YAML文件

创建资源

正常配置模拟测试案例

简单思路:起nginx容器,然后执行命令杀死nginx进程,设定探针监测连接tcp socket 80端口,当nginx进程被杀死后,tcp socket连接失败,探针监测容器为不健康不就绪,kubelet重启容器.

配置参数说明:

容器启动后,执行nginx -s quit杀死Nginx进程
容器启动20s后开始执行readiness和liveness检测
容器启动后35s左右
探针监测到nginx进程已经死掉,无法连接到80端口,报警见下:

查看资源详细信息

本文地址:http://www78564.xrbh.cn/quote/27459.html    迅博思语 http://www78564.xrbh.cn/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


相关最新动态
推荐最新动态
点击排行
网站首页  |  二维码  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号