kubernetes之Pod分配到指定Node


簡介

此文主要講述如何將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的名稱。


免責聲明!

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



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