K8S探针介绍
Kubernetes(K8S)探针(Probe)是一种机制,用于在 Pod 内部周期性地执行某些检查,以确保应用程序的可用性和健康状况。探针帮助 Kubernetes 决定如何管理你的容器,例如何时重新启动容器,何时将服务请求路由到相应 Pod,等等。Kubernetes 提供了三种类型的探针:livenessProbe readinessProbe和 startupProbe。它们各自有不同的用途和配置选项。
1. livenessProbe (存活探针)
用途:
1 | livenessProbe |
检查容器是否仍然存活。如果探针失败,Kubernetes 将重新启动容器。这对于长时间运行的应用程序非常有用,可以确保它们在出现死锁或其他无法恢复的问题时重新启动。
典型配置:
1
2
3
4
5
6 livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 3
2. readinessProbe (就绪探针)
用途:
1 | readinessProbe |
检查容器是否已准备好接收流量。如果探针失败,Kubernetes 将从服务端点中移除该容器。这对于确保服务只处理来自已准备好接收请求的 Pod 的流量非常有用。
典型配置:
1
2
3
4
5 readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
3. startupProbe (启动探针)
用途:
1 | startupProbe |
用于容器的启动检查,特别适用于那些启动时间较长的应用程序。在
1 | startupProbe |
成功之前,
1 | livenessProbe |
和
1 | readinessProbe |
都不会被执行。如果
1 | startupProbe |
失败,容器将会被重新启动。
典型配置:
1
2
3
4
5
6
7
8 startupProbe:
exec:
command:
- echo
- "The application has started"
initialDelaySeconds: 10
periodSeconds: 10
failureThreshold: 30
探针的配置方法
1. HTTP 探针 (httpGet)
探针通过 HTTP GET 请求来访问容器内部的特定路径。如果返回状态码在 200 到 399 之间,则认为探针成功。
1
2
3
4
5
6 httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
2. TCP 探针 (tcpSocket)
探针通过 TCP 连接到指定的端口。如果连接成功,则认为探针成功。
1
2 tcpSocket:
port: 8080
3. 命令执行探针 (exec)
探针执行指定的命令,如果返回状态码是 0,则认为探针成功。
1
2
3
4 exec:
command:
- cat
- /tmp/healthy
共同配置参数
- initialDelaySeconds: 第一次探测之前的延迟时间(秒)。
- periodSeconds: 探测之间的时间间隔(秒)。
- timeoutSeconds: 探测的超时时间(秒)。
- successThreshold: 成功的累积次数。在某些情况下,探针需要多次连续成功才能认为是健康状态。
- failureThreshold: 失败的累积次数。在容器被重新启动或从服务端点移除之前,探针允许的最大连续失败次数。
通过配置这些探针,可以使 Kubernetes 更加智能地管理你的应用程序,提供高可用性和自动恢复能力。
阅读剩余
版权声明:
作者:jon
链接:https://www.linux18.cn/?p=221
文章版权归作者所有,未经允许请勿转载。
THE END