Leif160519的blog Leif160519的blog

——————

目录
kubernetes Pod应用自动恢复(重启策略+健康检查)简介
/    

kubernetes Pod应用自动恢复(重启策略+健康检查)简介

一、重启策略

  • Always:当容器终止退出后,总是重启容器,默认策略。
  • OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。
  • Never:当容器终止退出,从不重启容器。

yaml格式:

spec: 
  restartPolicy: Always 
  containers: 
  - image: nginx
    name: web 

注意:退出状态码指的是shell状态码,返回0表示正常退出,返回非0则代表异常退出

应用场景:

  • Always:如nginx,mysql等需要持续运行的程序
  • OnFailure:定时的,短周期运行的任务,如数据库备份(cronjob),可以利用返回码
  • Never:应用只运行一次,如数据的离线处理,批处理等

二、健康检查:

由于pod不关心容器应用程序状态,所以需要配置健康检查,让pod去根据应用程序的状态决定pod是否处于running状态。

1.livenessProbe(存活检查)

如果检查失败,将杀死容器,根据Pod的restartPolicy来操作。

yaml格式:

spec: 
  restartPolicy: Always 
  containers: 
  - image: nginx
    name: web
    livenessProbe:
      tcpSocket:
        port: 8080
      initiaDelaySceonds: 30
      periodSeconds: 20

参数解释:

  • initiaDelaySceonds: 容器启动后进行健康检查的等待时间
  • periodSeconds: 健康检查的时间间隔

2. readinessProbe(就绪检查)

如果检查失败,Kubernetes会把Pod从service endpoints中剔除。
支持以下三种检查方法:

  • httpGet:发送HTTP请求,返回200-400范围状态码为成功。
  • exec:执行Shell命令返回状态码是0为成功。
  • tcpSocket:发起TCP Socket建立成功。

yaml格式:

spec: 
  restartPolicy: Always 
  containers: 
  - image: nginx
    name: web
    readinessProbe:
      tcpSocket:
        port: 8080
      initiaDelaySceonds: 30
      periodSeconds: 20

注意:上述两种健康检查方式可以同时使用,参数也共用

三、参考

官方文档


“The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.” – Tom Cargill

标  题kubernetes Pod应用自动恢复(重启策略+健康检查)简介
作  者Leif160519
出  处https://github.icu/articles/2020/06/11/1591857465609.html
关于博主:坐标六朝古都南京,服务器运维工程师+桌面运维工程师,如有问题探讨可以直接下方留言。
声援博主:如果您觉得文章对您有帮助,可以评论、订阅、收藏。您的鼓励是博主的最大动力!