1. 程式人生 > 其它 >k8s-yaml定義pod屬性說明

k8s-yaml定義pod屬性說明

屬性名稱  取值型別 是否必選 取值說明
version String Required 版本號,如 v1
kind String Required Pod
metadata Object Required 元資料
metadata.name String Required Pod名稱
metadata.namespace String Required Pod所屬的名稱空間,預設default
metadata.labels[] List 自定義標籤列表
metadata.annotaion[] List 自定義註解列表
Spec Object Required Pod中容器的詳細定義
spec.containers[] List Required Pod中的容器列表
spec.containers[].name String Required 容器的名稱
spec.containers[].image String Required 容器的映象名稱
spec.containers[].imagePullPolicy String

獲取映象的策略,預設值:Always

Always:每次都嘗試重新下載映象

IfNotPresent: 如果本地有,則使用本地,本地沒有時下載

Never: 僅使用本地映象

spec.containers[].command[] List 容器的啟動命令列表,如不指定,則使用映象打包時使用的啟動命令
spec.comatiners[].args List 容器的啟動命令引數列表
spec.containers[].workingDir String 容器的工作目錄
spec.containers[].volumeMounts[] List 掛載到容器內部的儲存卷配置
spec.containers[].volumeMounts[].name String 引用pod定義的共享儲存卷的名稱,需使用volumes[]部分定義的共享儲存卷名稱
spec.containers[].volumeMounts[].mountPath String 儲存卷在容器內Mount的絕對路徑,應少於512個字元
spec.containers[].volumeMounts[].readOnly Boolean 是否為只讀模式,預設為讀寫模式
spec.containers[].ports[] List 容器需要暴露的埠號列表
spec.containers[].ports[].name String 埠的名稱
spec.containers[].ports[].containerPort Int 容器需要監聽的埠號
spec.containers[].ports[].hostPort Int

容器所在主機需要監聽的埠號,預設與containerPort相同,設定hostPort時,同一臺宿主機將無法啟動該容器的第二份副本

spec.containers[].ports[].protocol String 埠協議,支援TCP和UDP,預設為TCP
spec.containers[].env[] List 容器執行前需設定的環境變數列表
spec.containers[].env[].name String 環境變數的名稱
spec.containers[].env[].value String 環境變數的值
spec.containers[].resources Object 資源限制和資源請求的設定
spec.containers[].resources.limits Object 資源限制的設定
spec.containers[].resources.limits.cpu String CPU限制,單位為core數,將用於docker run --cpu-shares引數
spec.containers[].resources.limits.memory String 記憶體限制,單位可以為MiB/GiB等,將用於docker run --memory引數
spec.containers[].resources.requests Object 資源限制的設定
spec.containers[].resources.requests.cpu String CPU請求,單位為core數,容器啟動的初始可用數量
spec.containers[].resources.requests.memory String 記憶體請求,單位可以是MiB GiB,容器啟動初始可用數量
spec.volumes[] List 在該pod上定義的共享儲存卷列表
spec.volumes[].name String

共享儲存卷的名稱,在一個pod中每個儲存卷定義了一個名稱,容易定義部分的containers[].volumeMounts[].name將引用該共享儲存卷的名稱。

volume的型別包括: emptyDir、hostPath、gcePersistentDisk、awsElasticBlockStore、gitRepo、secret、 nfs iscsi 、glusterfs、 persistentVolumeClaim、 rbd、 flexVolume、 cinder、 cephfs、 flocker、 downwardAPI、 fc、azureFile、 configMap、 vsphereVolume,可以定義多個volume,每個volume的name保持唯一,

spec.volumes[].emptyDir Object

型別為emptyDir的儲存卷,表示與pod同生命週期的一個臨時目錄,其值為一個空物件: emptyDir:{}

spec.volumes[].hostPath Object

型別為hostPath的儲存卷,表示掛載pod所在宿主機的目錄,通過volumes[]、hostPath.path指定

spec.volumes[].hostPath.path String

pod所在主機的目錄,將被用於容器中mount的目錄

spec.volumes[].secret Object

型別為secret的儲存卷,表示掛載叢集預定義的secret物件到容器內部

spec.volumes[].configMap Object

型別為configMap的儲存卷,表示掛載叢集預定義的configMap物件到容器內部

spec.volumes[].livenessProbe.exec Object

對pod內各容器健康檢查的設定,exec方式

spec.volumes[].livenessProbe.exec.command[] String

exec方式需要指定的命令或者指令碼

spec.volumes[].livenessProbe.httpGet Object

對pod內各容器健康檢查的設定,HTTPGet方式,需指定path、port

spec.volumes[].livenessProbe.tcpSocket Object

對pod內各容器健康檢查的設定,tcpSocket方式

spec.volumes[].livenessProbe.initialDelaySeconds Number

容器啟動完成後進行首次探測的時間,單位為秒

spec.volumes[].livenessProbe.timeoutSeconds Number

對容器健康檢查的探測等待響應的超時時間設定,單位為秒,預設1秒,超過超時時間設定,將認為該容器不健康,會重啟容器

spec.volumes[].livenessProbe.periodSeconds Number

對容器健康檢查的定期探測時間設定,單位為秒,預設10秒探測一次

spec.restartPolicy String

pod的重啟策略,可選值:Always、OnFailure預設為Always,

Always:pod一旦終止執行,則無論容器是如何終止的,kubelet都將重啟它

OnFailure: 只有pod以非零退出碼終止時,kubelet才會重啟該容器,如果容器正常結束(退出碼為0),則kubelet不會重啟

Never: pod終止後,kubelet將退出碼報告給master,不會再重啟該pod

spec.nodeSelector Object

設定NodeSelector表示將該pod排程到包含這些label的Node上,以key:value格式指定

spec.imagePullSecrets Object Pull映象時使用的secrets名稱,以name:secrekey格式指定
spec.hostNetwork Boolean 是否使用主機網路模式,預設為false,如果設定為true,則表示容器使用宿主機網路,不再使用Socker網橋,該pod無法在同一臺宿主機上啟動第2個副本