1.k8s.資源清單


#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


免責聲明!

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



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