Kubernetes健康状态检查(九)

  

强大的自愈能力是Kubernetes这类容器编排引擎的一个重要特性。自愈的默认实现方式是自动重启发生故障的容器。除此之外,用户还可以利用<代码>活性和<代码> 准备探测机制设置更精细的健康检查,进而实现如下需求:

  
      <李>零停机部署。   <李>避免部署无效的镜像。   <李>更加安全的滚动升级。   
  

一、活性探测

  

活性探测让用户可以自定义判断容器是否健康的条件。如果探测失败,Kubernetes就会重启容器。

  

我们创建一个圆荚体的配置文件<代码>活性。yaml> kubectl解释pod.spec.containers.livenessProbe>   

 <代码> apiVersion: v1
  :豆荚
  元数据:
  名称:活性
  标签:
  测试:活性
  规范:
  restartPolicy: OnFailure
  容器:
  ——名称:活性
  busybox映像:
  参数:
  ——/bin/sh
  - - - - - - - c
  ——联系/tmp/健康;睡眠30;rm射频/tmp/健康;睡600年
  livenessProbe:
  执行:
  命令:
  ——猫
  ——/tmp/健康
  initialDelaySeconds: 10
  periodSeconds: 5  
  

启动进程首先创建文件/tmp/健康,30秒后删除,在我们的设定中,如果/tmp/健康的文件存在,则认为容器处于正常状态,反正则发生故障。

  

<代码> livenessProbe>   

      <李>探测的方法是:通过<代码> 猫命令检查/tmp/健康的文件是否存在。如果命令执行成功,返回值为零,Kubernetes则认为本次活性探测成功,如果命令返回值非零,本次活性探测失败。   <李> <代码> initialDelaySeconds: 10> initialDelaySeconds>   <李> <代码> periodSeconds: 5>   
  

下面创建Pod活性:

  
 <代码> [root@master ~] # - f liveness.yaml kubectl适用
  豆荚/活性创建 
  

从配置文件可知,最开始的30秒,<代码>/tmp/健康> kubectl描述pod活性>   

 <代码> [root@master ~] # kubectl描述pod活性
  
  事件:
  年龄从消息类型原因
  - - - - - - - - - - - - - - - - - - - - - - - - -
  正常拉25 s kubelet node02拉形象“busybox”
  正常拉24 s kubelet node02成功地把“busybox”形象
  正常创建24 s kubelet node02创建容器
  正常开始23 s kubelet node02开始容器
  正常预定23 s default-scheduler成功分配默认/活性node02  
  

35秒之后,日志会显示<代码>/tmp/健康>   

 <代码> [root@master ~] # kubectl描述pod活性
  
  事件:
  年龄从消息类型原因
  - - - - - - - - - - - - - - - - - - - - - - - - -
  正常预定6 m9 default-scheduler成功分配默认/活性node02
  正常拉3 m41s (x3 6 m10) kubelet node02成功地把“busybox”形象
  正常创建3 m41s (x3 6 m10) kubelet node02创建容器
  正常开始3 m40s (x3 6 m9) kubelet node02开始容器
  警告不健康2 m57s (x9/5 m37) kubelet node02活性探测失败:猫:打不开“/tmp/健康”:没有这样的文件或目录
  正常拉2 m27s (x4 6 m11公路)kubelet node02拉形象“busybox”
  正常死亡60年代(x4/4 m57s) kubelet node02杀死集装箱码头工人与id://活性:容器失败活性探针。代码并重新创建容器将被杀死。 
  

然后我们查看容器,已经重启了一次。

  
 <代码> [root@master ~] # kubectl吊舱
  重启名字就绪状态的年龄
  活性1/1运行3 5 m13  
  

二,准备探测

  

用户通过活性探测可以告诉Kubernetes什么时候通过重启容器实现自愈,准备探测则是告诉Kubernetes什么时候可以将容器加入到服务负载均衡池中,对外提供服务。

  

准备探测的配置语法与活性探测完全一样,我们创建配置文件<代码> readiness.yaml>   

 <代码> apiVersion: v1
  :豆荚
  元数据:
  名称:准备
  标签:
  测试:准备
  规范:
  restartPolicy: OnFailure
  容器:
  ——名称:准备
  busybox映像:
  参数:
  ——/bin/sh
  - - - - - - - c
  ——联系/tmp/健康;睡眠30;rm射频/tmp/健康;睡600年
  readinessProbe:
  执行:
  命令:
  ——猫
  ——/tmp/健康
  initialDelaySeconds: 10
  periodSeconds: 5 

Kubernetes健康状态检查(九)