k8s -建立第一個pod資源
阿新 • • 發佈:2021-01-19
技術標籤: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的屬性
引數名 | 欄位型別 | 說明 |
---|---|---|
version | String | K8S API 的版本,目前基本是v1,可以用 kubectl api-version 命令查詢 |
kind | String | 這裡指的是 yaml 檔案定義的資源型別和角色, 比如: Pod |
metadata | Object | 元資料物件,固定值寫 metadata |
metadata.name | String | 元資料物件的名字,這裡由我們編寫,比如命名Pod的名字 |
metadata.namespace | String | 元資料物件的名稱空間,由我們自身定義 |
Spec | Object | 詳細定義物件,固定值寫Spec |
spec.container[] | list | 這裡是Spec物件的容器列表定義,是個列表 |
spec.container[].name | String | 這裡定義容器的名字 |
spec.container[].image | String | 這裡定義要用到的映象名稱 |
2.spec 物件
引數名 | 欄位型別 | 說明 |
---|---|---|
spec.containers[].name | String | 定義容器的名字 |
spec.containers[].image | String | 定義要用到的映象的名稱 |
spec.containers[].imagePullPolicy | String | 定義映象拉取策略,有 Always,Never,IfNotPresent 三個值課選 (1)Always:意思是每次嘗試重新拉取映象 (2)Never:表示僅使用本地映象 (3)IfNotPresent:如果本地有映象就是用本地映象,沒有就拉取線上映象。上面三個值都沒設定的話,預設是 Always. |
spec.containers[].command[] | List | 指定容器啟動命令,因為是陣列可以指定多個,不指定則使用映象打包時使用的啟動命令。 |
spec.containers[].args[] | List | 指定容器啟動命令引數,因為是陣列可以指定多個。 |
spec.containers[].workingDir | String | 指定容器的工作目錄 |
spec.containers[].volumeMounts[] | List | 指定容器內部的儲存卷配置 |
spec.containers[].volumeMounts[].name | String | 指定可以被容器掛載的儲存卷的名稱 |
spec.containers[].volumeMounts[].mountPath | String | 指定可以被容器掛載的容器卷的路徑 |
spec.containers[].volumeMounts[].readOnly | String | 設定儲存卷路徑的讀寫模式,true 或者 false,預設為讀寫模式 |
spec.containers[].ports[] | List | 指定容器需要用到的埠列表 |
spec.containers[].ports[].name | String | 指定埠名稱 |
spec.containers[].ports[].containerPort | String | 指定容器需要監聽的埠號 |
spec.containers[].ports.hostPort | String | 指定容器所在主機需要監聽的埠號,預設跟上面 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 | 指定 MEM 記憶體的限制,單位為 MIB,GIB |
spec.containers[].resources.requests | Object | 指定容器啟動和排程室的限制設定 |
spec.containers[].resources.requests.cpu | String | CPU請求,單位為 core 數,容器啟動時初始化可用數量 |
spec.containers[].resources.requests.memory | String | 記憶體請求,單位為 MIB,GIB 容器啟動的初始化可用數量 |
3.額外的引數項
引數名 | 欄位型別 | 說明 |
---|---|---|
spec.restartPolicy | String | 定義Pod重啟策略,可以選擇值為 Always、OnFailure,預設值為 Always。 1.Always:Pod一旦終止執行,則無論容器是如何終止的,kubelet 服務都將重啟它。2.OnFailure:只有 Pod 以非零退出碼終止時,kubelet 才會重啟該容器。如果容器正常結束(退出碼為0),則 kubelet 將不會重啟它。3.Never:Pod 終止後,kubelet 將退出碼報告給 Master,不會重啟該 Pod |
spec.nodeSelector | Object | 定義 Node 的 Label 過濾標籤,以 key:value 格式指定 |
spec.imagePullSecrets | Object | 定義pull 映象是使用 secret 名稱,以 name:secretkey 格式指定 |
spec.hostNetwork | Boolean | 定義是否使用主機網路模式,預設值為 false。設定 true 表示使用宿主機網路,不使用 docker 網橋,同時設定了 true 將無法在同一臺宿主機上啟動第二個副本。 |