Kubernetes 資源清單 常用字段,Pod 實例


一 集群資源分類

k8s 中所有的內容都抽象為資源,資源實例化之后叫做對象。

1.名稱空間級別:僅在此名稱空間下生效。

① 工作負載型資源(workload):Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,CronJob( ReplicationController 在 v1.11 版本被廢棄 )

② 服務發現及負載均衡型資源(ServiceDiscovery  LoadBalance ):Service,Ingress...

③ 配置與存儲型資源:Volume( 存儲卷 ),CSI(容器存儲接口,可以擴展各種各樣的第三方存儲卷)

④ 特殊類型的存儲卷:ConfigMap(當配置中來使用的資源那類型),Secret(保存敏感數據),DownwardAPI(把外部環境中的信息輸出給容器)

 

2.集群級別:不管在什么名稱空間下定義,在其他的名稱空間中都能看的到。

例如:Namespace,Node,Role,ClusterRole,RoleBinding,ClusterRoleBinding

 

3.元數據型

例如:HPA,PodTemplate,LimitRange

 

二 常用字段說明

1.必須存在的屬性

參數名 字段類型 說明
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 將無法在同一台宿主機上啟動第二個副本。

 

 

 

 

 

 

 

 

 









 

以上是 pod 常用的一些資源清單 屬性信息,如果想查看更多,可以使用一下命令查看

#查看 pod 的模板屬性
kubectl explain pod

#查看 pod 的 spec 模板中的屬性
kubectl explain pod.spec

 

 

4.創建 Pod 的資源模板 實例

創建 pod yaml文件

vim pod.yaml

 

編寫yaml 文件內容

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
    version: v1
spec:
  containers: 
  -  name: app
     image: hub.harbor.com/kubernetes-test/kubernetes-test:latest

 

測試啟動 Pod

kubectl apply -f pod.yaml

#查看 pod 是否啟動成功
kubectl get pod

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM