我有一个k8s集群。我们的服务基于队列。我们的pod订阅了一个事件队列,获取事件并执行任务。那么对于这种服务,如何定义k8s活动度探针和就绪度探针?
答案 0 :(得分:3)
以下是对这些探针的非常简短的介绍:
生动性探针用于让Kubernetes知道工作负载是否正常。它可能是在您的容器中执行的shell命令,也可能是一个简单的tcp / http请求,应该会积极响应。
如果在pod配置中指定的超时时间后,活动性检查失败,则Kubrenetes将重新启动工作负载。
因此,如果您的工作量正在执行耗时的过程,则可能需要给活动度探针足够的时间以确保吊舱不会过度重启。
Rediness Probe 用于Kubernetes代理确定您的工作负载是否已准备好消耗流量。仅当rediness探针做出积极响应时,流量才会发送到您的pod。因此,如果您的工作负载需要更多的时间来处理单个请求,并且需要在此期间将其他请求转移到其他副本以进行快速处理,则您可能希望给工作负载分配较高的重用间隔。
这些探针参数以及副本数量可确保您的应用程序快速健康地运行。了解每个探头覆盖的区域以及可以调整它们的参数非常重要。
这里有一些读物:
答案 1 :(得分:1)
假设您的问题是因为处理工人正在使用队列消息,它没有公开要检查的任何端口。
在这种情况下,您可以定义livenessProbe
和readinessProbe
自定义命令,接下来是documnetation中的示例:
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness
image: k8s.gcr.io/busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
readinessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
此外,请记住您的流程投入运行所需的时间,并准备调整initialDelaySeconds
和periodSeconds
使其完全浸出之前不会杀死豆荚。