当前位置: 首页 > news >正文

10-k8s中pod的探针

一、探针的概念

        一般时候,探针的设置,都是为了优化业务时,需要做的事情;属于后期工作;

1,探针的分类

1,健康状态检查探针:livenessProbe

        当我们设置了这个探针之后,检查不通过,pod容器就会重启,周期性检查服务是否存在;

        - 检查若失败,将“重启容器”,本质上就是删除原来的容器,重新创建;

        - 若不设置健康检查探针,默认就是成功的,检查成功;

2,可用性检查探针:readinessProbe

        当我们设置这个探针之后,检查不通过,pod容器不会重启,周期性检查服务是否可用,从而判断容器是否准备就绪;

        - 若检查服务不可用,就是检查失败,则会将pod从service的endppints列表中移除;

        - 若检查可用,则会将pod重新添加会secvice的endppints列表中;

        - 若不设置这个探针,则默认是检查成功状态;

3,启动探针:startupProbe

        从k8s的1.16版本之后才新加的功能,1.16版本之前没有这个探针;

        - 如果设置了这个探针,则其他所有探针都会被禁用,指导这个探针检查成功为止;

        - 如果检查失败,kubelet会杀死容器,而容器依照我们的重启策略进行重启;

        - 如果没有设置这个探针,默认是成功状态; 

2,探针使用的检查方法

1,命令检查:exec

        就是执行一段命令,根据返回的结果判断是否成功,返回0或者非0(类似shell中echo $?)

2,http请求检查:httpGet

        根据返回的状态码,判断是否正常;

3,端口检查:tcpSocket

        测试某个TCP端口是否能够链接,类似于telnet,nc等网络工具;

4,grpc:(了解即可)

二、livenessProbe健康检查探针

1,exec方式

[root@k8s231 pod]# cat 12-probe.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: mylinux-livenessprobe
spec:
  containers:
  - name: c1
    image: nginx:1.20.1-alpine
    #声明健康检查探针livenessProbe
    livenessProbe:
      #使用exec方式做检查;
      exec:
        #自定义检查命令
        command:
        - cat
        - /etc/hosts
      #检查失败几次算【不存活】,默认值是3,最小值是1,检查成功后,值会重置重1开始数;
      failureThreshold: 3
      #容器启动后多久开始进行健康检查,即此时间段内,检测到服务失败并不计数;默认1,最小值1
      initialDelaySeconds: 15
      #探针检测频率,多久检测一次,默认10(秒),最小值1(秒)
      periodSeconds: 1
      #检查成功几次算【存活】,默认1,最小值1
      successThreshold: 1
      #一次检查超时时间,默认1(秒),最小值1(秒)
      timeoutSeconds: 1

2,httpGet检查方式

[root@k8s231 pod]# cat 12-probe.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: mylinux-livenessprobe
spec:
  containers:
  - name: c1
    image: nginx:1.20.1-alpine
    #声明健康检查探针livenessProbe
    livenessProbe:
      #使用httpGet方式做检查;
      httpGet:
        #检查那个端口,通过哪个端口访问页面?
        port: 80
        #指定探测的页面路径
        path: /usr/share/nginx/html/index.html
      #检查失败几次算【不存活】,默认值是3,最小值是1,检查成功后,值会重置重1开始数;
      failureThreshold: 3
      #容器启动后多久开始进行健康检查,即此时间段内,检测到服务失败并不计数;默认1,最小值1
      initialDelaySeconds: 15
      #探针检测频率,多久检测一次,默认10(秒),最小值1(秒)
      periodSeconds: 1
      #检查成功几次算【存活】,默认1,最小值1
      successThreshold: 1
      #一次检查超时时间,默认1(秒),最小值1(秒)
      timeoutSeconds: 1

3,tcpSocket检测方式

[root@k8s231 pod]# cat 12-probe.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: mylinux-livenessprobe
spec:
  containers:
  - name: c1
    image: nginx:1.20.1-alpine
    #声明健康检查探针livenessProbe
    livenessProbe:
      #使用tcpSocket方式做检查;
      tcpSocket:
        #检查哪一个端口
        port: 80
      #检查失败几次算【不存活】,默认值是3,最小值是1,检查成功后,值会重置重1开始数;
      failureThreshold: 3
      #容器启动后多久开始进行健康检查,即此时间段内,检测到服务失败并不计数;默认1,最小值1
      initialDelaySeconds: 15
      #探针检测频率,多久检测一次,默认10(秒),最小值1(秒)
      periodSeconds: 1
      #检查成功几次算【存活】,默认1,最小值1
      successThreshold: 1
      #一次检查超时时间,默认1(秒),最小值1(秒)
      timeoutSeconds: 1

三、readinessProbe可用性检查

[root@k8s231 pod]# cat 12-probe.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: mylinux-livenessprobe
spec:
  containers:
  - name: c1
    image: nginx:1.20.1-alpine
    #声明健康检查探针readinessProbe
    readinessProbe:
      #使用tcpSocket方式做检查;
      tcpSocket:
        #检查哪一个端口
        port: 80
      #检查失败几次算【不存活】,默认值是3,最小值是1,检查成功后,值会重置重1开始数;
      failureThreshold: 3
      #容器启动后多久开始进行健康检查,即此时间段内,检测到服务失败并不计数;默认1,最小值1
      initialDelaySeconds: 15
      #探针检测频率,多久检测一次,默认10(秒),最小值1(秒)
      periodSeconds: 1
      #检查成功几次算【存活】,默认1,最小值1
      successThreshold: 1
      #一次检查超时时间,默认1(秒),最小值1(秒)
      timeoutSeconds: 1

四、startupProbe启动检查

[root@k8s231 pod]# cat 12-probe.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: mylinux-livenessprobe
spec:
  containers:
  - name: c1
    image: nginx:1.20.1-alpine
    #声明启动探针startupProbe
    startupProbe:
      #使用tcpSocket方式做检查;
      tcpSocket:
        #检查哪一个端口
        port: 80
      #检查失败几次算【不存活】,默认值是3,最小值是1,检查成功后,值会重置重1开始数;
      failureThreshold: 3
      #容器启动后多久开始进行健康检查,即此时间段内,检测到服务失败并不计数;默认1,最小值1
      initialDelaySeconds: 15
      #探针检测频率,多久检测一次,默认10(秒),最小值1(秒)
      periodSeconds: 1
      #检查成功几次算【存活】,默认1,最小值1
      successThreshold: 1
      #一次检查超时时间,默认1(秒),最小值1(秒)
      timeoutSeconds: 1

五、三个探针一起使用

[root@k8s231 pod]# cat 12-probe.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: mylinux-livenessprobe
spec:
  containers:
  - name: c1
    image: nginx:1.20.1-alpine
    #声明启动探针startupProbe
    startupProbe:
      tcpSocket:
        port: 80
      failureThreshold: 3
      initialDelaySeconds: 15
      periodSeconds: 1
      successThreshold: 1
      timeoutSeconds: 1
    #声明启动探针livenessProbe
    livenessProbe:
      tcpSocket:
        port: 80
      failureThreshold: 3
      initialDelaySeconds: 15
      periodSeconds: 1
      successThreshold: 1
      timeoutSeconds: 1
    #声明启动探针readinessProbe
    readinessProbe:
      tcpSocket:
        port: 80
      failureThreshold: 3
      initialDelaySeconds: 15
      periodSeconds: 1
      successThreshold: 1
      timeoutSeconds: 1

http://www.lryc.cn/news/300676.html

相关文章:

  • 【Langchain Agent研究】SalesGPT项目介绍(二)
  • 《UE5_C++多人TPS完整教程》学习笔记4 ——《P5 局域网连接(LAN Connection)》
  • 【运维测试】移动测试自动化知识总结第1篇:移动端测试介绍(md文档已分享)
  • 高校疫情防控系统的全栈开发实战
  • OpenTitan- 开源安全芯片横空出世
  • 简单的edge浏览器插件开发记录
  • WSL下如何使用Ubuntu本地部署Vits2.3-Extra-v2:中文特化修复版(新手从0开始部署教程)
  • Go语言的100个错误使用场景(40-47)|字符串函数方法
  • Fluke ADPT 连接器新增对福禄克万用 Fluke 15B Max 的支持
  • 前端工程化面试题 | 10.精选前端工程化高频面试题
  • 【并发编程】AQS原理
  • AI:130-基于深度学习的室内导航与定位
  • Leetcode1423.可获得的最大点数
  • 深度学习之梯度下降算法
  • 代码随想录第32天|● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II
  • 线性代数的本质 2 线性组合、张成的空间、基
  • - 工程实践 - 《QPS百万级的有状态服务实践》01 - 存储选型实践
  • SECS/GEM的HSMS通讯?金南瓜方案
  • wayland(xdg_wm_base) + egl + opengles——dma_buf 作为纹理数据源(五)
  • 【VTKExamples::PolyData】第二十八期 LinearExtrusion
  • Linux操作系统基础(五):Linux的目录结构
  • SolidWorks如何在一个零件的基础上绘制另一个零件
  • gin(结)
  • JavaScript 设计模式之桥接模式
  • B3651 [语言月赛202208] 数组调整
  • MessageQueue --- RabbitMQ
  • WordPress作者页面链接的用户名自动变成16位字符串串插件Smart User Slug Hider
  • Nvidia 携手 RTX 推出的本地运行 AI 聊天机器人
  • 年假作业day2
  • HTML-多媒体嵌入-MDN文档学习笔记