zoukankan      html  css  js  c++  java
  • k8s-pod健康检查_探针

    对pod的健康检查可以通过两类探针来检查: LivenessProbe 和 ReadinessProbe

    LivenessProbe探针:用于判断容器是否存活(running状态),如果LivenessProbe探针探测到容器不健康,则kubelet将杀掉该容器,并根据容器的重启策略做相应的处理。

    如果一个容器不包含LivenessProbe探针,那么kubelet认为该容器的LivenessProbe探针返回的值永远是"Success"。

    ReadinessProbe: 用于判断容器是否启动完成(ready状态),可以接收请求。如果ReadinessProbe探针检测到失败,则Pod的状态将被修改。Endpoint Controller将从Service的

    Endpoint中删除包含该内容所在pod的Endpoint

    kubelet定期执行LivenessProbe探针来诊断容器IDE健康状况。LivenessProbe有三种实现方式:

    1、ExecAction: 在容器内部执行一个命令,如果该命令的返回码为0,则表明容器健康。

    如: 通过执行 “cat /tmp/health”判断容器运行是否正常。而pod创建后,在创建/tmp/health文件的10秒后删除该文件,健康检查的初始探测时间(initialDelaySeconds)15秒,

    探测结果为fail,导致kubelet杀掉该容器并重启。

    [root@salt php-redis]# cat test.yaml 
    apiVersion: v1
    kind: pod
    metadata:
      labels:
        test: liveness
       name: liveness-exec
    spec:
      containers:
      - name: liveness
        image: gcr.io/google_containers/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

    2、TCPSocketAction: 通过容器的IP地址和端口号执行TCP检查,如果能够建立TCP链接,则表明容器健康

    如:通过与容器的localhost:80 建立TCP连接进行健康检查。

    [root@salt php-redis]# cat test-TCP.yaml 
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-with-healthcheck
    spec:
      containers:
      - name: naginx
        image: nginx
        ports:
        - containerPort: 80
        livenessProbe:
          tcpSocket:
            port: 80
          initialDelaySeconds: 30
          timeoutSeconds: 1

    3、HTTPGetAction: 通过容器的IP地址、端口号及路径调用HTTP Get方法,如果响应的状态码大于等于200且小于400,则认为容器状态健康。

    如: kubelet定时发送HTTP请求到localhost:80/_status/healthz来进行容器应用的健康检查。

    [root@salt php-redis]# cat test-http.yaml 
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-with-healthcheck
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
        livenessProbe:
          httpGet:
            path: /_status/healthz
            port: 80
          initialDelaySeconds: 30
          timeoutSconds: 1

    对于每种探测方式,都需要设置initialDelaySeconds和timeoutSeconds两个参数,他们的含义分别为:

    initialDelaySeconds: 启动容器后进行首次健康检查的等待时间,单位为秒

    timeoutSeconds: 健康检查发送请求后等待响应的超时时间,单位为秒。当超时发生时,kubelet会认为容器已经无法提供服务,会重启该容器。

  • 相关阅读:
    PHP设计模式之装饰器模式
    设计模式之建造者模式
    PHP代码优化技巧
    PHP数组排序函数array_multisort()函数详解
    MySQL索引背后的数据结构及最左原则
    Http协议详解
    把 hhkb 压在mac pro上面用
    cmd 里面运行git提示“不是内部或外部命令,也不是可运行的程序”的解决办法
    哈哈哈 迫于c#的语言特性java才加的注解
    java编程思想 英文版 打卡
  • 原文地址:https://www.cnblogs.com/sqbk/p/14982271.html
Copyright © 2011-2022 走看看