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,则认为容器健康。

vim exec.yaml
 
apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness				#为了健康检查定义的标签
  name: liveness-exec
spec:						#定义了Pod中containers的属性
  containers:
  - name: liveness
    image: nginx
    args:						#传入的命令
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy;sleep 600
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5        #表示pod中容器启动成功后,多少秒后进行健康检查 
      periodSeconds: 5				#在首次健康检查后,下一次健康检查的间隔时间5s
      timeoutSeconds: 1
      failureThreshold: 30
      successThreshold: 1

tcpSocket 端口探测

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

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

httpGet api探测

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

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

grpc 远程探测

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes(简称为K8s)是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。在Kubernetes集群中,可以使用探针Probe)来监控和管理Pod的健康状态。 探针主要有两种类型:存活探针(Liveness Probe)和就绪探针(Readiness Probe)。存活探针用于检测Pod是否处于正常运行状态,如果存活探针失败,则Kubernetes会自动重启该Pod。就绪探针用于检测Pod是否已经准备好接收流量,如果就绪探针失败,则Kubernetes会将该Pod从服务负载均衡中移除。 探针可以通过以下方式进行配置: 1. HTTP 探针:通过向指定的 HTTP 端点发送 HTTP GET 请求,并根据返回的状态码判断探针是否成功。 2. TCP 探针:通过向指定的 TCP 端口发送连接请求,并根据连接是否成功判断探针是否成功。 3. 命令探针:通过在容器内部执行指定的命令,并根据命令的返回状态判断探针是否成功。 下面是一个示例,展示了如何在Pod的配置文件中定义一个HTTP存活探针: ```yaml apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: my-image ports: - containerPort: 80 livenessProbe: httpGet: path: /health port: 80 initialDelaySeconds: 15 periodSeconds: 10 ``` 在上述示例中,`livenessProbe`字段定义了一个HTTP存活探针,它会每隔10秒向容器的80端口发送一个HTTP GET请求,路径为`/health`。如果连续3次请求都失败,Kubernetes会认为该Pod不健康,并自动重启该Pod
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值