k8s 資源清單


K8S 中所有的內存都抽象為資源,資源實例化之后稱為對象。

名稱空間級別

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

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

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

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

集群級資源:Namespace, Node, Role, ClusterRole, RoleBinding, ClusterRoleBinding

元數據型資源:HPA, PodTemplate, LimitRange

資源清單

在 K8S 中,一般使用 yaml 格式的文件來創建符合我們預期期望的 pod,這樣的 yaml 文件我們一般稱為資源清單。

常用字段的解釋

必須存在的屬性

參數名 字段類型 說明
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.containers[] list 這里是Spec對象的容器列表定義,是個列表
spec.containers[].name String 這里定義容器的名字
spec.containers[].image String 這里定義要用到的鏡像名稱

主要對象

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[].largs[]      (List): 指定容器啟動命令參數,因為是數組可以指定多個。
spec.containers[].worKingDir (String): 指定容器工作目錄

spec.containers[].volumeMounts[]             (List): 指容器內部的存卷配置
spec.containers[].volumeMounts[].name      (String): 指可以被容器掛載的存儲卷的名稱
spec.containers[].volumeMounts[].mountPatn (String): 指可以被容器掛載的存儲卷路徑
spec.containers[].volumeMounts[].readOnly  (String): 設置存儲卷路徑的讀寫模式,ture或者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參數(這里
                                                    前面文章Pod資源限制有講過)
spec.containers[].resources.limits.memory (String): 指定MEM內存的限制,單位為MiB、GiB

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.imagePuIlSecrets (Object): 定義pull鏡像時便用secret名稱,以name:secretkey格式指定
spec.hostNetwork     (Boolean): 定義是否使用主機網絡模式,默認值為false。設置true表示使用宿主機網絡,不使用docker網橋,同時設置了
                                true將無法在同一台宿主機上啟動第二個副本。

參考文檔:

http://docs.kubernetes.org.cn/


免責聲明!

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



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