K8S 重启策略和健康检查

重启策略:

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

健康检查:

  • livenessProbe(存活检查):如果检查失败,将杀死容器,根据Pod的restartPolicy来操作
  • readinessProbe(就绪检查):如果检查失败,Kubernetes会把Pod从service endpoints中剔除
  • startupprobe(启动检查):检查成功才由存活检查接手,用于保护慢启动容器

支持以下三种检查方法

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

常见架构

  • 假如正常的服务挂了,会中断不给他流量一段时间,让他冷却后再尝试恢复。日常运维是通过写shell脚本来实现监控服务重启的
  • 在pod中服务挂了(进程挂了),pod根据restartPolicy进行重启,重启后再根据探针决定是否恢复服务。
  • 数据处理类有些不宜重启,部分定时任务直接设置为不重启

模拟HTTP请求

apiVersion: v1
kind: Pod
metadata:
  name: probe-demo
spec:
  containers:
  - name: web
    image: nginx
    livenessProbe:
      httpGet:
        path: /
        port: 80
      initialDelaySeconds: 5  # 启动容器后多少秒健康检查
      periodSeconds: 10   # 以后每间隔多少秒检查一次
    readinessProbe: # 就绪检查,从Service中剔除容器
      httpGet:
        path: /
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 10

在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐