1. 程式人生 > 其它 >k8s -建立第一個pod資源

k8s -建立第一個pod資源

技術標籤:k8s

minikube 啟動

minikube start --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' --registry-mirror='https://dockerhub.azk8s.cn'

第一個資源清單 pod-helloworld.yml

kind: Pod
apiVersion: v1
metadata:
 namespace: default
 labels:
  app: nginx
 name: mypod
spec:
 containers:
  - name
: app1 imagePullPolicy: IfNotPresent image: nginx
  • 建立資源
    kubectl create -f pod-helloworld.yml
  • 檢視pod資源
    kubectl get pod

資源清單常用欄位

1.required的屬性

引數名欄位型別說明
versionStringK8S API 的版本,目前基本是v1,可以用 kubectl api-version 命令查詢
kindString這裡指的是 yaml 檔案定義的資源型別和角色, 比如: Pod
metadataObject元資料物件,固定值寫 metadata
metadata.nameString元資料物件的名字,這裡由我們編寫,比如命名Pod的名字
metadata.namespaceString元資料物件的名稱空間,由我們自身定義
SpecObject詳細定義物件,固定值寫Spec
spec.container[]list這裡是Spec物件的容器列表定義,是個列表
spec.container[].nameString這裡定義容器的名字
spec.container[].imageString這裡定義要用到的映象名稱

2.spec 物件

引數名欄位型別說明
spec.containers[].nameString定義容器的名字
spec.containers[].imageString定義要用到的映象的名稱
spec.containers[].imagePullPolicyString定義映象拉取策略,有 Always,Never,IfNotPresent 三個值課選 (1)Always:意思是每次嘗試重新拉取映象 (2)Never:表示僅使用本地映象 (3)IfNotPresent:如果本地有映象就是用本地映象,沒有就拉取線上映象。上面三個值都沒設定的話,預設是 Always.
spec.containers[].command[]List指定容器啟動命令,因為是陣列可以指定多個,不指定則使用映象打包時使用的啟動命令。
spec.containers[].args[]List指定容器啟動命令引數,因為是陣列可以指定多個。
spec.containers[].workingDirString指定容器的工作目錄
spec.containers[].volumeMounts[]List指定容器內部的儲存卷配置
spec.containers[].volumeMounts[].nameString指定可以被容器掛載的儲存卷的名稱
spec.containers[].volumeMounts[].mountPathString指定可以被容器掛載的容器卷的路徑
spec.containers[].volumeMounts[].readOnlyString設定儲存卷路徑的讀寫模式,true 或者 false,預設為讀寫模式
spec.containers[].ports[]List指定容器需要用到的埠列表
spec.containers[].ports[].nameString指定埠名稱
spec.containers[].ports[].containerPortString指定容器需要監聽的埠號
spec.containers[].ports.hostPortString指定容器所在主機需要監聽的埠號,預設跟上面 containerPort 相同,注意設定了 hostPort 同一臺主機無法啟動該容器的相同副本(因為主機的埠號不能相同,這樣會衝突)
spec.containers[].ports[].protocolString指定埠協議,支援TCP和UDP,預設值為TCP
spec.containers[].env[]List指定容器執行千需設定的環境變數列表
spec.containers[].env[].nameString指定環境變數名稱
spec.containers[].env[].valueString指定環境變數值
spec.containers[].resourcesObject指定資源限制和資源請求的值(這裡開始就是設定容器的資源上限)
spec.containers[].resources.limitsObject指定設定容器執行時資源的執行上限
spec.containers[].resources.limits.cpuString指定CPU的限制,單位為 core 數,將用於 docker run --cpu-shares 引數
spec.containers[].resources.limits.memoryString指定 MEM 記憶體的限制,單位為 MIB,GIB
spec.containers[].resources.requestsObject指定容器啟動和排程室的限制設定
spec.containers[].resources.requests.cpuStringCPU請求,單位為 core 數,容器啟動時初始化可用數量
spec.containers[].resources.requests.memoryString記憶體請求,單位為 MIB,GIB 容器啟動的初始化可用數量

3.額外的引數項

引數名欄位型別說明
spec.restartPolicyString定義Pod重啟策略,可以選擇值為 Always、OnFailure,預設值為 Always。 1.Always:Pod一旦終止執行,則無論容器是如何終止的,kubelet 服務都將重啟它。2.OnFailure:只有 Pod 以非零退出碼終止時,kubelet 才會重啟該容器。如果容器正常結束(退出碼為0),則 kubelet 將不會重啟它。3.Never:Pod 終止後,kubelet 將退出碼報告給 Master,不會重啟該 Pod
spec.nodeSelectorObject定義 Node 的 Label 過濾標籤,以 key:value 格式指定
spec.imagePullSecretsObject定義pull 映象是使用 secret 名稱,以 name:secretkey 格式指定
spec.hostNetworkBoolean定義是否使用主機網路模式,預設值為 false。設定 true 表示使用宿主機網路,不使用 docker 網橋,同時設定了 true 將無法在同一臺宿主機上啟動第二個副本。