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

六、k8s快速入门之容器探针

容器探针

一、了解

⭐️ 探针是由 kubelet 对容器执行的定期诊断。 要执行诊断,kubelet 调用由容器实现的 Handler (处理程序)。有三种类型的处理程序:

  • ExecAction: 在容器内执行指定命令。如果命令退出时返回码为 0 则认为诊断成功。
  • TCPSocketAction: 对容器的 IP 地址上的指定端口执行 TCP 检查。如果端口打开,则诊断被认为是成功的。
  • HTTPGetAction: 对容器的 IP 地址上指定端口和路径执行 HTTP Get 请求。如果响应的状态码大于等于 200 且小于 400,则诊断被认为是成功的。

⭐️ 每次探测都将获得以下三种结果之一:

  • Success(成功):容器通过了诊断。
  • Failure(失败):容器未通过诊断。
  • Unknown(未知):诊断失败,因此不会采取任何行动。

⭐️ 针对运行中的容器,kubelet 可以选择是否执行以下三种探针,以及如何针对探测结果作出反应:

  • livenessProbe:指示容器是否正在运行。如果存活态探测失败,则 kubelet 会杀死容器, 并且容器将根据其重启策略决定未来。如果容器不提供存活探针, 则默认状态为 Success
  • readinessProbe:指示容器是否准备好为请求提供服务。如果就绪态探测失败, 端点控制器将从与 Pod 匹配的所有服务的端点列表中删除该 Pod 的 IP 地址。 初始延迟之前的就绪态的状态值默认为 Failure。 如果容器不提供就绪态探针,则默认状态为 Success。只有readiness成功,main C才能被宣布能够对外正常访问。
  • startupProbe: 指示容器中的应用是否已经启动。如果提供了启动探针,则所有其他探针都会被 禁用,直到此探针成功为止。如果启动探测失败,kubelet 将杀死容器,而容器依其 重启策略进行重启。 如果容器没有提供启动探测,则默认状态为 Success

二、探针实列 livenessPobre

1️⃣ 编写yaml文档,创建livenessPobre

[root@master ~]# cat pod/liveness-pod.yaml 
apiVersion: v1
kind:  Pod
metadata:
  name: liveness-test
  labels:
    version: v1
spec:
  containers:
 - name: liveness-pod
   image: centos
   imagePullPolicy: IfNotPresent
   command: ['/bin/sh','-c','touch /opt/1; sleep 1; rm -rf /opt/1 sleep3600']
   livenessProbe:
     exec:
       command: ['test','-e','/opt/1']
     timeoutSeconds: 1 ##超时时间
     initialDelaySeconds: 1 ##容器启动后多少秒在启动检测
     periodSeconds: 3 ##探测时间

2️⃣ 创建

 [root@master ~]# kubectl create -f pod/liveness-pod.yaml  pod/liveness-test created

3️⃣ 查看,可以看见重启了好多次达到6次就达到阈值就没有在重启了

 [root@master ~]# kubectl get pod 
NAME            READY   STATUS             RESTARTS   AGE
liveness-test   0/1     CrashLoopBackOff   5          5m23s
[root@master ~]# kubectl get pod
NAME            READY   STATUS             RESTARTS   AGE
liveness-test   0/1     CrashLoopBackOff   6          7m9s

三、readinessPobre

1️⃣ 编写yaml文档

apiVersion: v1
kind: Pod
metadata:
  name: readiness-pod
  labels:
    version: v1
spec:
  containers:
  - name: readiness-test
    image: harbor.tanc.com/library/nginx
    imagePullPolicy: IfNotPresent
    readinessProbe:
      httpGet:
        port: 80
        path: /index1.html
      timeoutSeconds: 2
      periodSeconds: 3
      initialDelaySeconds: 1

2️⃣执行后查看可以看到没有ready但是在运行

[root@master ~]# kubectl get pod
NAME            READY   STATUS    RESTARTS   AGE
readiness-pod   0/1     Running   0          12s

3️⃣ 查看日志

kubectl log readiness-pod
10.244.1.1 - - [18/Aug/2021:11:15:15 +0000] "GET /index1.html HTTP/1.1" 404 153 "-" "kube-probe/1.15" "-"


http://www.kler.cn/a/378768.html

相关文章:

  • 已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
  • Vue 全局状态管理:Vuex 从入门到精通
  • 【折腾一上午】Java POI 导出 Excel 自适应列宽行高
  • 【jvm】如何设置新生代和老年代的比例
  • linux同步执行命令脚本 (xcall)
  • YOLOv8改进,YOLOv8引入ResCBAM注意力机制,二次创新C2f结构
  • npm入门教程8:缓存管理
  • Swarm-LIO: Decentralized Swarm LiDAR-inertial Odometry论文翻译
  • sed提示不能识别 / 符号
  • 电子电气架构 --- 车载诊断的快速入门
  • 后端java——如何为你的网页设置一个验证码
  • 一些swift问题
  • (新)docker desktop镜像迁移
  • 数据结构 —— 红黑树
  • doris监控
  • Conmi的正确答案——在Kibana中进入Elasticsearch的索引管理页面
  • hadoop_mapred-site.xml
  • DRF(Django-Rest-Framework快速实现 RESTful API 接口编程)+Vue.JS前后端分离项目
  • roberta融合模型创新中文新闻文本标题分类
  • π0——用于通用机器人控制的流匹配VLA模型:一套框架控制7种机械臂,实现丝滑迁移与平替
  • 13.字符串
  • 记本地第一次运行seatunnel示例项目
  • springboot十分钟快速搭建
  • 法律文件智能识别:免费OCR平台优化数字化管理
  • 设计模式08-行为型模式1(命令模式/迭代器模式/观察者模式/Java)
  • 深度学习与时间序列预测的关系