Kubernetes之Pod组件重启策略
Posted 爱上口袋的天空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes之Pod组件重启策略相关的知识,希望对你有一定的参考价值。
一、重启策略
pod的重启策略有3种,如下:
- Always:容器失效时,自动重启该容器,这是默认值
- OnFailure:容器停止运行且退出码不为0时重启
- Never:不论状态为何,都不重启该容器
重启策略适用于pod对象中的所有容器,首次需要重启的容器,将在其需要时立即进行重启,随后再次需要重启的操作将由kubelet延迟一段时间后进行,且反复的重启操作的延迟时长为10s,20s,40s,80s,160s,300s,300s是最大延迟时长
如下,修改pod_restartPolicy.yaml文件,其中restartPolicy字段即设置重启策略,这里需要注意的是,restartPolicy字段跟containers字段是平行的,是对所有容器生效的
apiVersion: v1 kind: Namespace metadata: name: dev --- apiVersion: v1 kind: Pod metadata: name: pod-nginx namespace: dev labels: user: redrose2100 spec: containers: - name: nginx image: nginx:1.17.1 ports: - name: nginx-port containerPort: 80 livenessProbe: httpGet: scheme: HTTP port: 80 path: /hello restartPolicy: Never
使用如下命令创建pod
[root@master resource_manage]# kubectl apply -f pod_restartPolicy.yaml namespace/dev created pod/pod-nginx created [root@master resource_manage]#
通过如下命令查询,可以发现这里因为设置Never重启策略,所以这里没有重启痕迹
[root@master resource_manage]# kubectl get pod -n dev NAME READY STATUS RESTARTS AGE pod-nginx 0/1 Completed 0 25m [root@master resource_manage]# kubectl describe pod pod-nginx -n dev Name: pod-nginx Namespace: dev Priority: 0 Node: node2/192.168.16.42 Start Time: Thu, 24 Mar 2022 15:35:21 +0800 Labels: user=redrose2100 Annotations: <none> Status: Succeeded IP: 10.244.2.42 IPs: IP: 10.244.2.42 Containers: nginx: Container ID: docker://4203b0f3ccd87a1df0012c08ada6fb6d1cbac583da1b63dffc5d2ceb194c0255 Image: nginx:1.17.1 Image ID: docker-pullable://nginx@sha256:b4b9b3eee194703fc2fa8afa5b7510c77ae70cfba567af1376a573a967c03dbb Port: 80/TCP Host Port: 0/TCP State: Terminated Reason: Completed Exit Code: 0 Started: Thu, 24 Mar 2022 15:35:21 +0800 Finished: Thu, 24 Mar 2022 15:35:51 +0800 Ready: False Restart Count: 0 Liveness: http-get http://:80/hello delay=0s timeout=1s period=10s #success=1 #failure=3 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-7sn8d (ro) Conditions: Type Status Initialized True Ready False ContainersReady False PodScheduled True Volumes: kube-api-access-7sn8d: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 25m default-scheduler Successfully assigned dev/pod-nginx to node2 Normal Pulled 25m kubelet Container image "nginx:1.17.1" already present on machine Normal Created 25m kubelet Created container nginx Normal Started 25m kubelet Started container nginx Warning Unhealthy 24m (x3 over 25m) kubelet Liveness probe failed: HTTP probe failed with statuscode: 404 Normal Killing 24m kubelet Stopping container nginx [root@master resource_manage]#
使用如下命令可以删除资源
[root@master resource_manage]# kubectl delete -f pod_restartPolicy.yaml namespace "dev" deleted pod "pod-nginx" deleted [root@master resource_manage]#
二、重启策略设置建议
因为重启策略默认的就是Always,这也是合理的,因此在一般情况下,重启策略不需要设置,这里仅仅是作为知识点拿出来展示一下,在实际使用中,在大多数情况下都不需要进行重启策略配置
以上是关于Kubernetes之Pod组件重启策略的主要内容,如果未能解决你的问题,请参考以下文章