1. 程式人生 > >21天轉型容器實戰營(十三容器進階之Pod ,RC,Service完整欄位說明)

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

 

外部負載均衡器的主機名