• Pod探针(probe)


    目录

    🧡什么是Pod探针?

    🧡探针类型

    livenessProbe 存活探针

    startupProbe 启动探针

    readinessProbe 就绪探针

    🧡探测方式

    exec 命令行探测

    tcpSocket 端口探测

    httpGet api探测

    grpc 远程探测


    💟这里是CS大白话专场,让枯燥的学习变得有趣!

    💟没有对象不要怕,我们new一个出来,每天对ta说不尽情话!

    💟好记性不如烂键盘,自己总结不如收藏别人!

    🧡什么是Pod探针

    💌Pod是k8s最小执行单元,probe 是由 kubelet 对容器执行的定期诊断。 要执行诊断,kubelet 既可以在容器内执行代码,也可以发出一个网络请求。

    🧡探针类型

    💌Pod探针主要有三种类型:

    livenessProbe 存活探针

    💌用于探测容器是否运行会一直检测如果探测失败,kubelet会杀死容器,并根据配置的重启策略进行处理。若没有配置,默认Success。

    🍠如果容器中的进程能够在遇到问题或不健康的情况下自行停止,则不一定需要存活探针; kubelet 将根据 Pod 的 restartPolicy 自动执行修复操作。

    🍠如果希望容器在探测失败时被杀死并重新启动,那么请指定一个存活探针, 并指定 restartPolicy 为 "Always" 或 "OnFailure"。

    startupProbe 启动探针

    💌1.16版本新增探测方式,用于判断容器内应用程序是否启动,如果配置了startupProbe,就会先禁止其他的探针,直到探测到容器启动成功为止如果探测失败,kubelet会杀死容器,并根据配置的重启策略进行处理。若没有配置,默认Success。

    🍠对于所包含的容器需要较长时间才能启动就绪的 Pod 而言,启动探针是有用的。 

    🍠如果容器需要在启动期间加载大型数据、配置文件或执行迁移, 可以使用启动探针。

    🍠如果容器启动时间通常超出 initialDelaySeconds + failureThreshold × periodSeconds 总值,应该设置一个启动探针,对存活探针所使用的同一端点执行检查。 periodSeconds 的默认值是 10 秒。应该将其 failureThreshold 设置得足够高, 以便容器有充足的时间完成启动,并且避免更改存活探针所使用的默认值。 这一设置有助于减少死锁状况的发生。

    readinessProbe 就绪探针

    💌一般用于探测容器内应用程序是否正常运行会一直监测。若为Success,则表示程序已经完全启动,可以接收流量。如果探测失败, 端点控制器将从与 Pod 匹配的所有服务的端点列表中删除该 Pod 的 IP 地址。若没有配置,默认Success。

    🍠Pod 将在启动阶段不接收任何数据,并且只有在探针探测成功后才开始接收数据,需要指定就绪探针。 

    🍠如果希望容器能够自行进入维护状态,也可以指定一个就绪探针。

    🍠如果应用程序对后端服务有严格的依赖性,可以同时实现存活和就绪探针。 当应用程序本身是健康的,存活探针检测通过后,就绪探针会额外检查每个所需的后端服务是否可用。 这可以避免将流量导向只能返回错误信息的 Pod。

    🍠如果想区分已经失败的应用和仍在处理启动数据的应用,更倾向于使用就绪探针。

    🧡探测方式

    💌使用探针来检查容器有四种不同的方法。 每个探针都必须准确定义为这四种机制中的一种:

    exec 命令行探测

    💌在容器内执行一个命令,如果返回值为0,则认为容器健康。

    1. vim exec.yaml
    2. apiVersion: v1
    3. kind: Pod
    4. metadata:
    5. labels:
    6. test: liveness #为了健康检查定义的标签
    7. name: liveness-exec
    8. spec: #定义了Pod中containers的属性
    9. containers:
    10. - name: liveness
    11. image: nginx
    12. args: #传入的命令
    13. - /bin/sh
    14. - -c
    15. - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy;sleep 600
    16. livenessProbe:
    17. exec:
    18. command:
    19. - cat
    20. - /tmp/healthy
    21. initialDelaySeconds: 5 #表示pod中容器启动成功后,多少秒后进行健康检查
    22. periodSeconds: 5 #在首次健康检查后,下一次健康检查的间隔时间5s
    23. timeoutSeconds: 1
    24. failureThreshold: 30
    25. successThreshold: 1

    tcpSocket 端口探测

    💌通过TCP连接检查容器内端口是否可以建立连接,如果是通的则容器健康。

    1. vim tcp.yaml
    2. apiVersion: v1
    3. kind: Pod
    4. metadata:
    5. labels:
    6. test: liveness #为了健康检查定义的标签
    7. name: liveness-tcp
    8. spec: #定义了Pod中containers的属性
    9. containers:
    10. - name: liveness
    11. image: nginx
    12. livenessProbe:
    13. tcpSocket:
    14. port:8080
    15. initialDelaySeconds: 5 #表示pod中容器启动成功后,多少秒后进行健康检查
    16. periodSeconds: 5 #在首次健康检查后,下一次健康检查的间隔时间5s
    17. timeoutSeconds: 1

    httpGet api探测

    💌最可靠的方式,通过应用程序暴露的API地址来检查程序是否是正常的,如果状态码为200~400之间,则认为容器健康。

    1. vim http.yaml
    2. apiVersion: v1
    3. kind: Pod
    4. metadata:
    5. labels:
    6. test: liveness #为了健康检查定义的标签
    7. name: liveness-http
    8. spec: #定义了Pod中containers的属性
    9. containers:
    10. - name: liveness
    11. ports:
    12. - containerPort: 80
    13. image: nginx
    14. livenessProbe:
    15. httpGet:
    16. port:80
    17. path: /index.html
    18. initialDelaySeconds: 5 #表示pod中容器启动成功后,多少秒后进行健康检查
    19. periodSeconds: 5 #在首次健康检查后,下一次健康检查的间隔时间5s
    20. timeoutSeconds: 1

    grpc 远程探测

    💌使用gRPC执行一个远程过程调用。 目标应该实现 gRPC健康监测。 如果响应的状态是 "SERVING",则认为诊断成功。 gRPC 探针是一个 Alpha 特性,只有在启用了"GRPCContainerProbe"时才能使用。

  • 相关阅读:
    web前端期末大作业——仿小米商城电商平台(6页) html+css+javascript网页设计实例 企业网站制作
    使用ppt和texlive生成eps图片(高清、可插入latex论文)
    [附源码]计算机毕业设计基于SpringBoot的剧本杀管理系统
    支付场景。
    【项目实战】springboot+vue舞蹈课程在线学习系统-java舞蹈课程学习打卡系统的设计与实现
    初识C++
    Echarts与数据可视化
    基本算法-插入排序
    宏的优缺点&&宏的替代技术
    第1关:MapReduce综合应用案例 — 电信数据清洗
  • 原文地址:https://blog.csdn.net/qq_41847894/article/details/127833388