我仍在学习kubernetes,并且从pod迁移到部署配置。 在我喜欢进行健康检查的豆荚上,这是一个使用弹簧靴致动器的示例:
livenessProbe:
httpGet:
path: /actuator/health
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 1
periodSeconds: 30
failureThreshold: 3
问题是上述配置仅适用于Pod。如何在部署中使用它们?
答案 0 :(得分:3)
Deployment将创建一个ReplicaSet,副本集将维护您的Pods
Liveness and readiness probes在容器级别配置,并且当所有容器就绪时,Pod被视为已就绪。
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
Spring执行器运行状况检查API是应用程序的一部分,捆绑在一个容器中。
Kubernetes将检查Pod中每个容器的活动性和就绪状态探针,如果其中任何一个探针在certain amount of time and attempts之后未能成功返回,它将杀死该Pod并启动一个新容器。
在部署级别设置探针没有意义,因为您可能在同一部署下运行多个Pod,并且如果其中一个Pod不健康,您也不想杀死健康的Pod。
使用相同pod配置的部署描述符如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: liveness-deployment
labels:
app: liveness
spec:
replicas: 3
selector:
matchLabels:
app: liveness
template:
metadata:
labels:
app: liveness
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