天天看點

3.4 使用标簽和選擇器來限制pod排程

  1. 前提條件

    0.0 環境準備

    0.1 安裝docker

    0.2 安裝k8s

  2. 使用标簽分類工作節點【當運維團隊向叢集添加新節點時,他們将通過附加标簽來對節點進行分類,這些标簽指定節點提供的硬體類型,或者任何在排程pod時能提供便利的其他資訊】
    1. 檢視所有node節點

      kubectl get nodes

    2. 給node節點加标簽(假設以上指令查到的node name為iz0jl292pbpfbh34wo7707z)

      kubectl label node iz0jl292pbpfbh34wo7707z gpu=true

    3. 列出指定标簽的node節點

      kubectl get node -l gpu=true

    4. 列出所有節點并展示gpu标簽值

      kubectl get nodes -L gpu

  3. 将pod排程到特定節點(建立檔案kubia-gpu.yaml)
apiVersion: v1
kind: Pod
metadata:
  name: kubia-gpu
spec:
  nodeSelector:
    gpu: "true"
  containers:
  - image: nuptaxin/kubia
    name: kubia-gpu-c
    ports:
    - containerPort: 8080
      protocol: TCP
           
  1. 建立pod(如果修改标簽gpu不為true

    kubectl label node iz0jl292pbpfbh34wo7707z gpu=false

    ,則該pod不可排程,status一直為Pending)

    kubectl create -f kubia-gpu.yaml

  2. 排程到一個特定節點【我們可以将pod排程到某個确定的節點,由于每個節點都有一個唯一标簽,其中鍵為kubernetes.io/hostname,值為該節點的實際主機名。但如果節點離線,通過hostname将nodeSelector設定的特定節點可能會導緻pod不可排程。】
  3. 資源清理

    kubectl delete pod kubia-gpu