kubernetes 資源清單定義入門

 k8s中的資源

什麼叫資源?api

k8s中全部的內容都抽象爲資源, 資源實例化以後,叫作對象app

在k8s中有哪些資源?

工做負載型資源(workload):負載均衡

  • Pod ReplicaSet Deployment StatefulSet DaemonSet Job CronJob (ReplicationController在v1.11版本被廢棄)

服務發現及負載均衡型資源:frontend

  •   ServiceDiscovery LoadBalance  Service Ingress, ...

配置與存儲型資源ui

  • Volume(存儲卷) CSI(容器存儲接口,能夠擴展各類各樣的第三方存儲卷)

特殊類型的存儲卷:spa

  • ConfigMap(當配置中心來使用的資源類型)Secret(保存敏感數據) DownwardAPI(把外部環境中的信息輸出給容器)

以上這些資源都是配置在名稱空間級別日誌


集羣級資源:對象

  • Namespace Node Role ClusterRole RoleBinding(角色綁定) ClusterRoleBinding(集羣角色綁定)

元數據型資源:blog

  • HPA(Pod水平擴展) PodTemplate(Pod模板,用於讓控制器建立Pod時使用的模板) LimitRange(用來定義硬件資源限制的)

資源清單

什麼是資源清單

在k8s中,通常使用yaml格式的文件來建立符合咱們預期指望的pod,這樣的yaml文件咱們通常稱爲資源清單接口

資源清單的格式

apiVersion: group/apiversion:   若是沒有給定group名稱,那麼默認爲croe,可使用kubectl api-versions 獲取當前k8s版本上全部的apiVersion版本信息(每一個版本可能不一樣)

kind:  資源類別

metadata: 資源元數據

  name

  namespace #k8s自身的namespace

  lables

     annotations #主要目的是方便用戶閱讀查找

spec:指望的狀態(disired state)

status:當前狀態,本字段有kubernetes自身維護,用戶不能去定義

配置清單主要有五個一級字段,其中status用戶不能定義,有k8s自身維護

獲取資源的apiVersion版本及資源配置的幫助

 1 獲取apiVersion版本信息

[root@k8s-master01 ~]# kubectl api-versions 
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
batch/v1
......(如下省略)

 

2)獲取資源的apiVersion版本信息  

[root@k8s-master01 ~]# kubectl explain pod
KIND:     Pod
VERSION:  v1
.....(如下省略)
[root@k8s-master01 ~]# kubectl explain Ingress
KIND:     Ingress
VERSION:  extensions/v1beta1

能夠看到出來,不一樣的資源可能屬於不一樣的apiVersion版本  

 字段配置的格式

 

幫助信息中常見格式以下:

  • apiVersion <string>  表示字符串類型
  • metadata <Object>  表示須要嵌套多層字段
  • labels <map[string]string>  表示由k:v組成的映射
  • finalizers <[]string>  表示字串列表
  • ownerReferences <[]Object>  表示對象列表
  • hostPID <boolean>  布爾類型
  • priority <integer>  整型
  • name <string> -required-  若是類型後面接 -required-,表示爲必填字段

建立一個配置清單實例

pod-demo.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  namespace: default
  labels:
    app: myapp
    tier: frontend
spec:
  containers:
  - name: myapp
    image: ikubernetes/myapp:v1
  - name: busybox
    image: busybox:latest
    command:
    - "/bin/sh"
    - "-c"
    - "sleep 3600"

 

根據資源清單建立pod

kubectl create -f pod-demo.yaml

  

查看建立的 pod

kubectl get pod

獲取剛建立pod-demo的詳細信息:

kubectl describe pods pod-demo

  

查詢 pods 中的一個容器的日誌記錄

kubectl logs pod-demo -c myapp

 

  

刪除本身的建立:

kubectl delete -f pod-demo.yaml
相關文章
相關標籤/搜索