【Kubernetes】Pod学习(六)Pod健康和服务可用性检查

本文介绍了Kubernetes中Pod的健康检查和服务可用性检查,包括LivenessProbe和ReadinessProbe两种探针,以及通过ExecAction、TCPSocketAction和HTTPGetAction的实现方式。通过具体的例子展示了如何配置和理解这些健康检查机制。

此文为学习《Kubernetes权威指南》的相关笔记

学习笔记:

       Kubernetes提供了两类探针(probe)作为健康和服务可用性检查的解决方案,允许使用者在Pod定义时指定检查方式和检查位置,使得K8s对于容器的管理不局限于通过容器init进程判断容器的健康程度,而是能够通过预先定义方式,根据容器类型、结构和功能的不同做不同检查,更准确地判断容器真正的状态,具有较强的灵活性。

这两类探针分别为:

  • LivenessProbe探针,用于判断容器的存活状态(是否Runing),在判断为不健康时,kubelet将杀掉容器,根据容器的重启策略(RestartPolicy)作出不同的处理,如果不包含该探针,默认其返回值恒为Success
  • ReadinessProbe探针,用于判断容器是否可用(是否Ready),只有Ready状态的Pod才能够接受请求,和LivenessProbe探针判断为false不同,服务可用探针判断为false后只将Pod从Service的可使用列表中移除,并不是直接杀死,因为可能还会存在恢复为Ready状态的情况,再回到Endpoint列表中。

两种探针均可以以下方式实现:

  • ExecAction:通过执行命令的返回值做出判断
  • TCPSocketAction:通过容器IP地址和端口号执行TCP检查,做出判断
  • HTTPGetAction:通过HTTP Get方法检查,IP地址+端口号+路径,响应状态码200-400之间,则认为容器健康

以下是实现三种方法的实例:

1、通过ExecAction进行健康检查

编写yaml文件

定义spec.containers.livenessPobe.exec作为健康检查方式

探针尝试打开文件,因为时间设置,在第一次探测之间就删除该文件,探针返回false,容器将被重启

apiVersion: v1
kind: Pod
metadata:
 name: liveness-exec
 labels:
  test: liveness
spec:
 containers:
 - name: liveness
   image: busybox
   args:
   - /bin/sh
   - -c
   - echo ok >/tmp/health; sleep 10 ;rm -rf /tmp/health; sleep 600;
   livenessProbe:
    exec:
     command:
     - cat
     - /tmp/health
    initialDelaySeconds: 15
    timeoutSeconds: 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值