簡介
此文主要講述如何將Pod分配到指定Node節點
備注:此文檔參考官方文檔,並加以自己的理解。如有誤導性的內容,請批評指正。
給Node添加標簽
1、查看當前集權中,所有node的標簽
# kubectl get nodes --show-labels
輸出結果如下:
NAME STATUS ROLES AGE VERSION LABELS
k8s-master01 Ready master 25d v1.17.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master01,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k8s-master02 Ready master 25d v1.17.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master02,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k8s-master03 Ready master 25d v1.17.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master03,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k8s-node01 Ready <none> 25d v1.17.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node01,kubernetes.io/os=linux
k8s-node02 Ready <none> 25d v1.17.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node02,kubernetes.io/os=linux
k8s-node03 Ready <none> 25d v1.17.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node03,kubernetes.io/os=linux
k8s-node04 Ready <none> 25d v1.17.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node04,kubernetes.io/os=linux
2、選擇一個node節點,打上labels
# kubectl label nodes k8s-node04 disktype=ssd
3、查看node上的標簽
# kubectl get nodes k8s-node04 --show-labels
輸出如下:
NAME STATUS ROLES AGE VERSION LABELS
k8s-node04 Ready <none> 25d v1.17.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disktype=ssd,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node04,kubernetes.io/os=linux
從上輸出結果中看出,k8s-node04節點的labels打上了disktype=ssd標簽
創建一個調度到指定Node的Pod
此Pod配置文件描述了具有節點選擇器(磁盤類型為ssd)的Pod。 這意味着,將在具有disktype = ssd標簽的節點上調度Pod。文件:pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
nodeSelector:
disktype: ssd
創建Pod
# kubectl apply -f /root/k8s-example/pods/pod-nginx.yaml
查看Pod詳情
# kubectl get pods -o wide
從輸出結果看,該Pod已被調度到指定的k8s-node04上
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 107s 100.88.217.86 k8s-node04 <none> <none>
創建一個調度到指定Node的Pod
也可以用nodeName選擇調度到指定Node節點上。
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
nodeName: k8s-node1
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
總結
1、Pod調度到指定Node上有兩種方法:
- node打上labels,通過
nodeSelect調度到含有指定lables的Node上 - 用
nodeName指定Node的名稱。
