#k8s常用資源
- 工作負載:Pod,rs(ReplicasSet),deploy(Deployment),sts(StatefulSet),ds(DaemonSet),Job,Cronjob
- 服務發現及負載均衡:svc(Service), ing(Ingress)
- 配置與存儲:Volume,pv( persistentvolumes ),pvc,cm(ConfigMap),Secret,DownwardAPI
- 集群級: ns(Namespace),Node,Role,ClusterRole,RoleBinding,ClusterRoleBinding
- 元數據: HPA,PodTemplate,LimitRange
#資源清單格式
apiVersion: group/apiversion #API版本
kind: #資源類型
metadata: #元數據對象
name #如Pod名稱
namespace #命名空間默認default
lables #標簽
Spec: #詳細對象
containers:#容器列表
- name #容器名稱
image #鏡像
. #獲取 apiversion 版本信息 kubectl api-versions
. #獲取字段設置幫助文檔 kubectl explain pod
kubectl explain pod.kind
主要資源配置清單:
apiVersion,kind,meadata,spec,status
apiVersion
- 定義API版本,格式為groupname/version
- 用kubectl api-versions獲取當前k8s版本apiVersion信息
kind
- Kind定義資源類型和角色,如Namespace、Pod、Service、Deployment
metadata
Metadata元數據對象,分為兩大類:
-
名稱空間
namespace:名稱空間,默認default
name:對象名稱,名稱空間的同一類型中必須唯一
uid:唯一表示符 -
常用可選字段
labels:對象標簽,鍵值數據,常被用作挑選條件
annotation:作為挑選條件,作為labels的補充
resourceVersion:當前對象的內部版本標識符
generation:用於表示當前對象目標狀態的代碼
creationTimestamp:當前對象創建日期的時間戳
deletionTimestamp:當前對象刪除日期的時間戳
status 當前狀態,k8s集群維護,用戶不能修改
spec 詳細對象
#spec常用資源類型
spec.containers.name:pod的名稱,必須字段,名稱唯一且創建后不可以被修改
spec.containers.image :鏡像倉庫路徑/鏡像名稱(鏡像標簽)
spec.containers.image.imagePullPolicy :鏡像下載策略
Always:總是下載
Never:從不下載
IfNotPresent:本地沒有就下載,默認項
鏡像標簽是latest則總會是"Always",且一旦被創建不允許改變
spec.containers.ports:容器公開的端口列表
spec.containers.ports.containerPort:暴露的端口,是額外的信息,對端口是否暴露沒影響
spec.containers.ports.hostPort:主機上公開端口
spec.containers.ports.protocol:端口協議TCP或UDP,默認TCP
spec.containers.ports.hostIP:指定要綁定的主機
spec.containers.command:運行程序,類似於docker中的entrypiont,命令不會運行在shell中
spec.containers.args:向docker鏡像中傳遞參數,會替換docker鏡像中cmd命令,引用變量使用
spec.containers.volumeMounts.mountPath:容器掛載存儲卷的路徑,路徑不能包含':' 符號
spec.containers.volumeMounts.subPath:容器掛載的存儲卷的 子路徑
spec.containers.volumeMounts.readOnly:只讀,默認為false
spec.containers.resources.limits:資源限制
spec.containers.resources.limits.cpu :CPU上限,可以短暫超過,容器也不會被停止
spec.containers.resources.limits.memory:內存上限
spec.containers.resources.requests:資源需求
spec.containers.resources.requests.cpu:CPU請求, 也是調度 CPU 資源的依據, 可以超過
spec.containers.resources.requests.memory:內存請求,可以超過;超過時容器可能在Node內存不足時清理
spec.containers.workingDir: 容器工作目錄
spec.nodeSelector:指定Pod調度節點
spec.restartPolicy:容器重啟策略三種 Always(退出就重啟)、OnFailure(狀態為錯誤時重啟)、Never(不重啟)
spec.imagePullSecrets pull鏡像時使用cecrets名稱
#實例 通過清單文件創建Pod
# pod-demo.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-demo
namespace: default
labels:
app: myapp
spec:
containers:
- name: test
image: busybox:latest
command:
- "/bin/sh"
- "-c"
- "echo -n 'running at ' && date +%F' '%T && sleep 20"
#創建pod
kubectl create -f pod-demo.yaml
#查看pod
kubectl get pod pod-demo
kubectl get pod pod-demo -o wide
#查看詳情
kubectl describe pod pod-demo
#查看logs
kubectl logs pod-demo -c test
#刪除
kubectl delete -f pod-demo.yaml
#pod會反復重啟,因為命令sleep 20結束
Blog地址 https://www.cnblogs.com/elvi/p/11755617.html
本文git地址 https://gitee.com/almi/k8s/tree/master/notes