【Kubernetes】容器重啟策略-Always


環境

  1. kubernetes 1.20.2
  2. Spring Boot 2.5.0-M1

目標

創建一個 Pod 將其容器的重啟策略設置為:Always,查看容器停止時,Pod 的行為。

pod.yaml

直接創建 Pod 時,如果 restartPolicy 不寫,默認為:Always。

apiVersion: v1
kind: Pod
metadata:
  name: pod-demo

spec:
  restartPolicy: Always
  containers:
    - name: pod-demo
      image: jiangbo920827/spring-demo:actuator
      ports:
        - containerPort: 8080

查看 Pod

[root@master pod]# kubectl get -f pod.yaml -o wide
NAME       READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
pod-demo   1/1     Running   0          82s   10.244.1.17   node1   <none>           <none>

可以看到 Pod 正常運行,RESTARTS(重啟次數)字段為 0。

停止容器

正常停止

[root@master pod]# curl -X POST 10.244.1.17:8080/actuator/shutdown
{"message":"Shutting down, bye..."}[root@master pod]#
[root@master pod]# kubectl get -f pod.yaml -o wide
NAME       READY   STATUS    RESTARTS   AGE    IP            NODE    NOMINATED NODE   READINESS GATES
pod-demo   1/1     Running   1          8m4s   10.244.1.17   node1   <none>           <none>

可以看到容器被終止了,並且重啟次數增加了一次,Pod 恢復到了正常狀態。

非正常停止

[root@master pod]# kubectl exec pod-demo -- kill 1
[root@master pod]# kubectl get -f pod.yaml -o wide
NAME       READY   STATUS   RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
pod-demo   0/1     Error    1          10m   10.244.1.17   node1   <none>           <none>
[root@master pod]# kubectl get -f pod.yaml -o wide
NAME       READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
pod-demo   1/1     Running   2          10m   10.244.1.17   node1   <none>           <none>

重啟的次數再次增加 1,如果查看命令夠快的話,還能看到中間出現了一個 Error 的狀態,重啟后又恢復到正常狀態。

總結

介紹了容器的重啟策略-Always,在創建單個 Pod 的情況下,不管 Pod 中的容器是否正常停止,最終都會恢復。
容器的重啟有一個回退策略,並以指數級增加。如果在 10 分鍾沒有錯誤,則重置重啟計時。
詳細說明見附錄摘抄的官網說明。

附錄

Container restart policy

The spec of a Pod has a restartPolicy field with possible values Always, OnFailure, and Never. The default value is Always.

The restartPolicy applies to all containers in the Pod. restartPolicy only refers to restarts of the containers by the kubelet on the same node. After containers in a Pod exit, the kubelet restarts them with an exponential back-off delay (10s, 20s, 40s, …), that is capped at five minutes. Once a container has executed for 10 minutes without any problems, the kubelet resets the restart backoff timer for that container.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM