热门推荐
statefulset 怎么重启pod
2024-12-21 11:38

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端口,报警见下:

查看资源详细信息

    以上就是本篇文章【statefulset 怎么重启pod】的全部内容了,欢迎阅览 ! 文章地址:http://www78564.xrbh.cn/quote/27459.html 
     动态      相关文章      文章      同类文章      热门文章      栏目首页      网站地图      返回首页 迅博思语移动站 http://www78564.xrbh.cn/mobile/ , 查看更多