本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告

K8S教程(7)使用探针对容器进行健康检查

发布:TangLu2020-9-14 17:31分类: Kubernetes 标签: docker k8s kubernetes

应用在运行过程不可避免会出现各种问题导致服务不可用的情况发生,K8S的Health Check健康检查机制可以对这些异常服务进行重启、剔除等操作,保障高可用。


一、K8S的健康检查探针

K8S的探针主要有3种,主要是探测的阶段不同:

1、readiness probes容器就绪检查,用于检查容器是否能接收到流量,只有当状态正常才会加入到services中

2、liveness probes在线检查机制,用于检查应用是否可用,如出现无法响应、死锁等异常时自动重启容器,能一定程度实现运维自动化

3、starup probes启动检查机制,避免一些需要长时间启动的容器被前面的探针杀掉。该探针排在首位,直到它工作完成才会进行另外2种探针的探测


二、K8S探针工作方式

1、exec方式:设置一个命令作为探查命令,对其返回结果做判断

该示例会创建⼀个容器,容器启动时创建/tmp/liveness-probe.log,然后10秒后将其删除。通过liveness探针的exec方法去执行命令ls -l /tmp/liveness-probe.log,通过⽂件返回码判断健康状态。如果返回码⾮0会⾃动将该容器重启

cat centos-exec-liveness-probe.yaml
apiVersion: v1
kind: Pod
metadata:
  name: exec-liveness-probe
  annotations:
    kubernetes.io/description: "exec-liveness-probe"
spec:
  containers:
    - name: exec-liveness-probe
      image: centos:latest
      imagePullPolicy: IfNotPresent
      args: #容器启动命令,⽣命周期为30s
      - /bin/sh
      - -c
      - touch /tmp/liveness-probe.log && sleep 10 && rm -f /tmp/liveness-probe.log && sleep 20
      livenessProbe:
        exec: #健康检查机制,通过ls -l /tmp/liveness-probe.log返回码判断容器的健康状态
          command:
          - ls
          - l
          - /tmp/liveness-probe.log
        initialDelaySeconds: 1  #初始探测时间,可以设大一点,防止应用还没启动就被认作失败
        periodSeconds: 5  #每次探测间隔
        timeoutSeconds: 1  #探测超时时间,超时则失败


2、httpGet方式:主要⽤于web场景,对容器内指定的URL发送http请求,然年后根据返回码判断容器健康状态,返回码⼩于4xx即表示健康:

# 定义⼀个nginx应⽤,通过探测http://:port/index.html的⽅式判断健康状态
cat nginx-httpGet-liveness-readiness.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-httpget-livess-readiness-probe
  annotations:
  kubernetes.io/description: "nginx-httpGet-livess-readiness-probe"
spec:
  containers:
    - name: nginx-httpget-livess-readiness-probe
    image: nginx:latest
    ports:
      - name: http-80-port
      protocol: TCP
      containerPort: 80
  livenessProbe: #健康检查机制,通过httpGet实现实现检查
    httpGet:
      port: 80
      scheme: HTTP
      path: /index.html
    initialDelaySeconds: 3
    periodSeconds: 10
    timeoutSeconds: 3

3、tcp连接:以能否与容器建立tcp连接为判断


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《K8S教程(7)使用探针对容器进行健康检查
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-625.html  [生成短网址]

已有 0/312 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~