21天轉型容器實戰營(十三容器進階之Pod ,RC,Service完整欄位說明)
Pod定義模版
屬性名稱 |
取值型別 |
是否必選 |
取值說明 |
version |
String |
Required |
v1 |
kind |
String |
Required |
Pod |
metadata |
Object |
Required |
元資料 |
metadata.name |
String |
Required |
Pod名稱,需符合RFC 1035規範。 |
metadata.namespace |
String |
Required |
名稱空間,不指定系統將使用名為“default”的名稱空間 |
metadata.labels[] |
List |
|
自定義標籤屬性列表 |
metadata.annotation[] |
List |
|
自定義註解屬性列表 |
spec |
Object |
Required |
詳細描述 |
spec.containers[] |
List |
Required |
Pod中執行容器列表 |
spec.containers[].name |
String |
Required |
容器名稱,需符合RFC 1035規範。 |
spec.containers[].image |
String |
Required |
容器的映象名,Node上如果不存在該映象,kubelet會先下載。 |
spec.containers[].imagePullPolicy |
String |
|
獲取映象的策略,可選值包括:Always,Never,IfNotPresent,預設值為Always。 Always:表示每次都下載映象; IfNotPresent:表示如果本地有該映象,就使用本地的; Never:表示僅使用本地映象。 |
spec.containers[].command[] |
List |
|
容器的啟動命令列表,如果不指定,則使用映象打包時使用的CMD命令 |
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相同 |
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限制條件,將用於docker run --cpu-shares引數 |
spec.containers[].resources.limits.memory |
String |
|
記憶體限制條件,將用於docker run --memory引數 |
spec.volumes[] |
List |
|
在該Pod上定義的共享儲存卷列表 |
spec.volumes[].name |
string |
|
共享儲存卷名稱,需唯一,符合RFC 1035規範。容器定義部分 containers[].volumeMounts[].name 將引用該共享儲存卷的名稱。 |
spec.volumes[].emptyDir |
Object |
|
預設的儲存卷型別,表示與Pod同生命週期的一個臨時目錄,其值為一個空物件:emptyDir: {} 該型別與hostPath型別互斥,應只定義一種。 |
spec.volumes[].hostPath |
Object |
|
使用Pod所在主機的目錄,通過volumes[].hostPath.path進行指定。 該型別與emptyDir型別互斥,應只定義一種。 |
spec.volumes[].hostPath.path |
String |
|
Pod所在主機的目錄,將被用於容器中mount的目錄。 |
spec.dnsPolicy |
String |
Required |
DNS策略,可選值包括:Default,ClusterFirst。 |
spec.restartPolicy |
Object |
|
該Pod內容器的重啟策略,可選值為Always,OnFailure,預設值為Always。 Always:容器一旦終止執行,無論容器是如何終止的,kubelet都將重啟它 OnFailure:只有容器以非零退出碼終止時,kubelet才會重啟該容器。如果容器正常結束(退出碼為0),kubelet將不會重啟它 Never:容器終止後,kubelet將退出碼報告給Master,然後不再重啟它 |
spec.nodeSelector |
Object |
|
指定需要排程到的Node的Label,以key=value的格式指定 |
spec.imagePullSecrets |
Object |
|
Pull映象時使用的secret名稱,以name=secretkey格式定義 |
RC完整屬性
屬性名稱 |
取值型別 |
是否必選 |
取值說明 |
version |
string |
Required |
v1 |
kind |
string |
Required |
ReplicationController |
metadata |
object |
Required |
元資料 |
metadata.name |
string |
Required |
ReplicationController名稱,需符合RFC 1035規範。 |
metadata.namespace |
string |
Required |
名稱空間,不指定系統將使用名為“default”的名稱空間 |
metadata.labels[] |
list |
|
自定義標籤屬性列表 |
metadata.annotation[] |
list |
|
自定義註解屬性列表 |
spec |
object |
Required |
詳細描述 |
spec.replicas |
number |
Required |
Pod副本數量,設定為0表示不建立Pod |
spec.selector[] |
list |
Required |
Label Selector配置,將選擇具有指定Label標籤的Pod作為管理範圍 |
spec.template |
object |
Required |
容器的定義,與Pod的spec內容相同,參見上一節的描述。 |
Service完整屬性
屬性名稱 |
取值型別 |
是否必選 |
取值說明 |
version |
string |
Required |
v1 |
kind |
string |
Required |
Service |
metadata |
object |
Required |
元資料 |
metadata.name |
string |
Required |
Service名稱,需符合RFC 1035規範。 |
metadata.namespace |
string |
Required |
名稱空間,不指定系統將使用名為“default”的名稱空間 |
metadata.labels[] |
list |
|
自定義標籤屬性列表 |
metadata.annotation[] |
list |
|
自定義註解屬性列表 |
spec |
object |
Required |
詳細描述 |
spec.selector[] |
list |
Required |
Label Selector配置,將選擇具有指定Label標籤的Pod作為管理範圍 |
spec.type |
string |
Required |
Service的型別,指定Service的訪問方式,預設為ClusterIP ClusterIP:虛擬的服務IP地址,該地址用於Kubernetes叢集內部Pod訪問,在Node上kube-proxy通過設定的iptables規則進行轉發 NodePort:使用宿主機的埠,使得能夠訪問各Node的外部客戶端通過Node的IP地址和埠號就能訪問服務 LoadBalancer:使用外接負載均衡器完成到服務的負載分發,需要在spec.status.loadBalancer欄位指定外部負載均衡器的IP地址,並同時定義nodePort和clusterIP |
spec.clusterIP |
string |
|
虛擬服務IP地址,當type=ClusterIP時,如果不指定,系統將自動分配;當type=LoadBalancer時需要指定 |
spec.sessionAffinity |
string |
|
是否支援Session,可選值為ClientIP,預設為空。 ClientIP:表示將同一個客戶端(根據客戶端IP地址決定)來的訪問請求都轉發到同一個後端Pod |
spec.ports[] |
list |
|
Service需要暴露的埠號列表 |
spec.ports[].name |
string |
|
埠名稱 |
spec.ports[].port |
int |
|
服務監聽的埠號 |
spec.ports[].targetPort |
int |
|
需要轉發到後端Pod的埠號 |
spec.ports[].protocol |
string |
|
埠協議,支援TCP和UDP,預設為TCP |
status |
object |
|
當spec.type=LoadBalancer時,設定外部負載均衡器的地址 |
status.loadBalancer |
object |
|
外部負載均衡器 |
status.loadBalancer.ingress |
object |
|
外部負載均衡器 |
status.loadBalancer.ingress.ip |
string |
|
外部負載均衡器的IP地址 |
status.loadBalancer.ingress.hostname |
string |
|
外部負載均衡器的主機名 |