kubernetes之pod生命周期,pod重啟策略, 鏡像拉取策略


pod聲明周期(狀態):pending , running, succeeded, failed, unknown

掛起(Pending):Pod 已被 Kubernetes 系統接受,但有一個或者多個容器鏡像尚未創建。等待時間包括調度 Pod 的時間和通過網絡下載鏡像的時間,這可能需要花點時間。
運行中(Running):該 Pod 已經綁定到了一個節點上,Pod 中所有的容器都已被創建。至少有一個容器正在運行,或者正處於啟動或重啟狀態。
成功(Succeeded):Pod 中的所有容器都被成功終止,並且不會再重啟。
失敗(Failed):Pod 中的所有容器都已終止了,並且至少有一個容器是因為失敗終止。也就是說,容器以非0狀態退出或者被系統終止。
未知(Unknown):因為某些原因無法取得 Pod 的狀態,通常是因為與 Pod 所在主機通信失敗。

pod重啟策略: 當某個容器異常退出或者健康檢查失敗, kubelet將根據RestartPolicy的設置來進行相應的操作, 重啟策略有Always , OnFailure, Never

Always: 當容器失效時, 由kubelet自動重啟該容器
OnFailure: 當容器終止運行且退出碼不為0時, 由kubelet自動重啟該容器
Never: 不論容器運行狀態如何, kubelet都不會重啟該容器

kubelet重啟失效容器的時間間隔以sync-frequency乘以2n來計算, 例如1丶2丶4丶8倍等, 最長延時5min, 並且在重啟后的10min后重置該時間
pod的重啟策略與控制方式息息相關

RC和DeamonSet必須設置為Always,需要保證該容器持續運行
Job: OnFailure或Never, 確保容器執行完成后不再重啟

鏡像拉取策略

Always: 表示每次都嘗試重新拉取鏡像
IfNotPresent: 表示如果本地有鏡像, 則使用本地的鏡像, 本地不存在時拉取鏡像
Never: 表示僅使用本地鏡像

示例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: default 
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx

    spec:
      restartPolicy: Always
      containers:
      - name: nginx
        image: nginx:1.12
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80


免責聲明!

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



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