k8s從入門到精通-Pod定義詳解


YAML格式的Pod定義文件的完整內容如下:

apiVersion: v1                  # 版本號,例如v1
kind: Pod                       # 資源類型: Pod
metadata:                       # 元數據
  name: string                  # Pod的名稱,命令規范符合RFC 1035規范
  namespace: string             # Pod所屬的命名空間,默認值為default
  labels:                       # 自定義標簽列表
    - name: string
  annotations:                  # 自定義注釋列表
    - name: string
spec:                           # Pod容器的詳細定義
  containers:                   # pod中容器的列表
  - name: string
    image: string
    imagePullPolicy: [Always|Never|IfNotPresent]  # 鏡像拉取策略, 可選值為:Always、Never、IfNotPresent,默認為Always。Always,表示每次都嘗試拉取鏡像;IfNotPresent,表示如果本地有鏡像,則使用本地鏡像,本地不存在時拉取鏡像;Never,表示僅使用本地鏡像
    command: [string]            # 容器啟動命令,如果不指定,則使用鏡像打包時使用的命令
    args: [string]               # 容器啟動命令的參數列表
    workingDir: string           # 容器的工作目錄
    volumeMounts:                # 掛載到容器內部的存儲卷配置
    - name: string               # 引用的pod定義的存儲卷的名稱,需要使用volume[]部分定義的共享存儲卷名稱
      mountPath: string          # 存儲卷在容器內掛載的絕對路徑,應少於512個字節
      readOnly: boolean          # 是否為只讀模式, 默認為讀寫模式
    ports:
    - name: string
      containerPort: int         # 容器需要暴露的端口列表
      hostPort: int              # 容器所在的主機需要監聽的端口號,默認與containerPort相同。設置hostPort是,同一台主機無法啟動改容器的第二個副本
      protocol: string           # 端口協議,支持TCP和UDP,默認值為TCP
    env:                         # 容器運行前需要設置的環境變量列表
    - name: string               # 環境變量的名稱
      value: string              # 環境變量的值
    resources:                   # 資源限制和資源請求的設置
      limits:                    # 資源限制的設置
        cpu: string              # CPU限制,單位為core數,將用於docker run --cpu-shares參數
        memory: string           # 內存限制,單位可以為MiB、GiB等,將用於docker run --memory參數
      requests:                  # 資源的限制
        cpu: string              # CPU請求,單位為core數,容器啟動的初始可用數量
        memory: string           # 內存請求,單位可以為MiB、GiB等,容器啟動初始可用數量
    livenessProbe:               # 對pod內各容器健康檢查的設置,當探測無響應幾次之后,系統將自動重啟該容器。可以設置的方法包括:exec、httpGet和tcpSocket,對一個容器僅需設置一種健康檢查的方法
      exec:                      
        command: [string]        # exec方式需要指定命令或者腳本
      httpGet:                   # 對pod內各容器健康檢查的設置,HTTPGet方式,需要指定path、port
        path: string
        port: number
        host: string
        scheme: string
        httpHearders:
        - name: string
          value: string
      tcpSocket:                 # 對pod內各容器健康檢查的設置,tcpScoket方式
        port: number
      initialDelaySeconds: 0     # 容器啟動后首次的探測時間,單位為s  
      timeoutSeconds: 0          # 對容器進行健康檢查的探測等待響應的超時時間設置,單位為s,默認為1s;若超過該超時時間設置,則認為容器不健康,會重啟該容器
      periodSeconds: 0           # 對容器進行健康檢查定期探測時間設置,單位為s,默認為10s探測一次
      successThreshold: 0        # 探測器在失敗后,被視為成功的最小連續成功數。默認值是 1。 存活和啟動探測的這個值必須是 1。最小值是 1
      failureThreshold: 0        # 當探測失敗時,Kubernetes 的重試次數。 存活探測情況下的放棄就意味着重新啟動容器。 就緒探測情況下的放棄 Pod 會被打上未就緒的標簽。默認值是 3。最小值是 1。
    securityContext:
      privileged: false
  restartPolicy: [Always|Never|OnFailure]  # 重啟策略,可選Always、onFailture、Never。always: 一旦pod終止運行,無論容器是如何終止的,kubelet都將重啟它;onFailture,只有pod以非零退出碼終止時,kubelet才會重啟該容器,如果容器正常結束(退出碼為0),則kubelet將不會重啟該pod;Never,pod終止后,kubelet將退出碼報告給Master,不會重啟該pod
  nodeSelector: object                     # 設置Node的Label,以key:value格式指定,pod將被調度到這些Label的Node上
  imagePullSecrets:                        # pull鏡像時使用Secret名稱,以name.secretkey格式指定
  - name: string
  hostNetwork: false             # 是否使用主機網絡模式,默認為false,設置true表示容器使用宿主機網絡,不再使用Docker網絡,該Pod無法在同一台宿主機上啟動第二個副本           
  volumes:                       # 在該pod上定義的共享存儲卷列表
  - name: string                 # 共享存儲卷的名稱,在一個pod中每個存儲卷定義一個名稱,應符合RFC 1035規范,容器定義部分的containers[].volumeMount[].name將引用該存儲的名稱。volume的類型包括:(見詳解)
    emptyDir: {}                 # 類型為emptyDir的存儲卷,表示與pod同聲明周期的一個臨時目錄,其值為一個空對象,emptyDir: {}
    hostPath:                    # 類型為hostPath的存儲卷,表示pod掛載到宿主機的目錄,通過volumes[].hostPath.path指定
      path: string               # pod容器掛載的宿主機的目錄
    secret:                      # 類型為secret的存儲卷,表示掛載集群預定義的secret對象容器內部
      secretName: string
      items:
      - key: string
        path: string
    configMap:                   # 類型為configMap的存儲卷,表示掛載預定義的configMap對象到容器內部                         # 
      name: string
      items:
      - key: string
        path: string


免責聲明!

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



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