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的名称。
posted @ 2020-01-21 10:35  McSiberiaWolf  阅读(4857)  评论(0编辑  收藏  举报