延迟容器重启
Delay container restart
我正在使用 ReplicationController 创建 pod 运行 redis 容器。
redis容器由Redis Sentinel监控。而且还有一个问题,如果redis crash 和restart 过快,可能会在投票进行的时候给Redis Sentinel 带来麻烦。
{
"apiVersion": "v1",
"kind": "ReplicationController",
"metadata": {
"name": "redis",
"labels": { "name" : "redis" }
},
"spec": {
"replicas": 1,
"selector": {
"name":"redis"
},
"template": {
"metadata": {
"labels": {
"name":"redis"
}
},
"spec": {
"volumes": [
//...
],
"containers": [
//...
],
"restartPolicy": "Always"
}
}
}
}
是否可以延迟重启?即在上次崩溃后 60 秒后重新启动容器
Kubelet 已经退出容器自动重启。在这种情况下,您会看到如下内容:
$ cluster/kubectl.sh get pods
NAME READY STATUS RESTARTS AGE
...
mem-besteffort-zpnpm 0/1 CrashLoopBackOff 4 3m
如果您发现它过于频繁地重新启动容器,您可以在执行实际命令之前做一些像 sleep 60 这样简单的事情。
sleep
的更好替代品:
terminationGracePeriodSeconds
:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test
spec:
replicas: 1
template:
spec:
containers:
- name: test
image: ...
terminationGracePeriodSeconds: 60
- preStop handler, read more about lifecycle hooks
我正在使用 ReplicationController 创建 pod 运行 redis 容器。
redis容器由Redis Sentinel监控。而且还有一个问题,如果redis crash 和restart 过快,可能会在投票进行的时候给Redis Sentinel 带来麻烦。
{
"apiVersion": "v1",
"kind": "ReplicationController",
"metadata": {
"name": "redis",
"labels": { "name" : "redis" }
},
"spec": {
"replicas": 1,
"selector": {
"name":"redis"
},
"template": {
"metadata": {
"labels": {
"name":"redis"
}
},
"spec": {
"volumes": [
//...
],
"containers": [
//...
],
"restartPolicy": "Always"
}
}
}
}
是否可以延迟重启?即在上次崩溃后 60 秒后重新启动容器
Kubelet 已经退出容器自动重启。在这种情况下,您会看到如下内容:
$ cluster/kubectl.sh get pods
NAME READY STATUS RESTARTS AGE
...
mem-besteffort-zpnpm 0/1 CrashLoopBackOff 4 3m
如果您发现它过于频繁地重新启动容器,您可以在执行实际命令之前做一些像 sleep 60 这样简单的事情。
sleep
的更好替代品:
terminationGracePeriodSeconds
:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test
spec:
replicas: 1
template:
spec:
containers:
- name: test
image: ...
terminationGracePeriodSeconds: 60
- preStop handler, read more about lifecycle hooks