Loading
0

kubernetes/k8s节点标签添加、删除及使用范例

技术小学生微信公众号
腾讯云服务器大促销。
华为服务器

前言:本文章介绍在kubernetes/k8s节点标签添加、删除及使用范例方法,留个笔记,防止忘记。
说明完整的k8s教程可访问https://blog.tag.gg/showinfo-3-36255-0.html
什么是标签选择器。
在Pod对象创建的时候,运行在我们指定的节点上。在Pod对象的spec字段中,有nodeName和nodeSelector两个属性 。
在Kubernetes集群中,每个结点都会有自己的标签,该标签与该节点的操作系统、基本属性有关。执行命令:

kubectl get nodes --show-labels

可以查看Kubernetes集群中的Node节点以及节点标签:执行结果:

[root@master ~]# kubectl get nodes --show-labels
NAME     STATUS   ROLES                  AGE    VERSION   LABELS
master   Ready    control-plane,master   2d5h   v1.23.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=
node1    Ready    <none>                 2d5h   v1.23.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node1,kubernetes.io/os=linux
node2    Ready    <none>                 2d5h   v1.23.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node2,kubernetes.io/os=linux

同样的,我们也可以给指定节点添加标签,该操作也会使用kubectl kube命令,命令格式如下:

kubectl label nodes/【节点名】 【标签键】=【标签值】

kubectl label nodes 【节点名】 【标签键】=【标签值】

执行命令:

kubectl label nodes/node2 mem=big

kubectl label nodes node2 mem=big

说明“标签键”可以根据自己情况任意指定,比如执行如下命令也可以创建标签

kubectl label node node3 dev_role=ceshi2

可以给Kubernetes集群中的node2节点添加mem=bigggg的标签,该命令执行结果如下所示:

[root@master ~]# kubectl label nodes/node2 mem=bigggg
node/node2 labeled

查看节点情况

kubectl get nodes --show-labels

执行后如下:

[root@master ~]# kubectl get nodes --show-labels
NAME     STATUS   ROLES                  AGE    VERSION   LABELS
master   Ready    control-plane,master   2d5h   v1.23.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=
node1    Ready    <none>                 2d5h   v1.23.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node1,kubernetes.io/os=linux
node2    Ready    <none>                 2d5h   v1.23.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node2,kubernetes.io/os=linux,mem=bigggg

如何添加、修改、删除、查询节点标签
1、添加节点标签:

kubectl label nodes/node2 mem=big  #mem是标签健,可以随意起名,,big是设置的标签名,根据自己情况起名。

2、删除节点标签:

kubectl label nodes node1 mem-  #输入标签健名即可

返回结果:

[root@master ~]# kubectl label nodes node1 mem-
node/node1 unlabeled

3、修改节点标签:
修改一个label的值,需要加上--overwrite参数:

  kubectl label nodes node1 mem=ceshi --overwrite 

结果:

[root@master ~]# kubectl label nodes node2 mem=ceshi --overwrite
node/node2 unlabeled

4、查看节点标签:
查看所有节点标签

kubectl get nodes --show-labels

查看某一个节点标签:该命令也可以查看该节点的所有信息包括cpu内存等。

kubectl describe nodes node2


节点选择器应用
下面,我们就使用节点选择器,来控制Pod对象运行的节点。我们创建一个Pod对象的资源清单

apiVersion: v1
kind: Pod
metadata:
  name: pod-demo-test
  namespace: default
  labels:
    label1: mypod1
    label2: mypod2
spec:
  containers:
  - name: busybox
    image: busybox
    command:
    - "/bin/sh"
    - "-c"
    - "sleep 7200"
  nodeSelector:
    mem: big

在该资源清单的spec模块下,我们使用了nodeSelector节点选择器,并选择了mem=big节点。
资源清单创建完毕后,我们执行命令:

kubectl create -f pod-demo-test.yaml

按照资源清单的配置完成Pod对象的创建,该命令执行结果如下:

kubectl get pods -o wide

[root@master ~]# kubectl get pods -o wide
NAME                     READY   STATUS              RESTARTS         AGE     IP           NODE     NOMINATED NODE   READINESS GATES
nginx-85b98978db-nh2m4   1/1     Running             0                2d5h    10.244.1.2   node1    <none>           <none>
ngx-health               1/1     Running             54 (5m57s ago)   3h6m    10.244.2.2   node2    <none>           <none>
ngx-health-tcp           1/1     Running             28 (5m26s ago)   171m    10.244.2.3   node2    <none>           <none>
ngx-health-tcpsocket     0/1     CrashLoopBackOff    25 (102s ago)    152m    10.244.1.3   node1    <none>           <none>
pod-demo-test            0/1     Pending             0                2m29s   <none>       <none>   <none>           <none>
pod-demo-tests           0/1     ContainerCreating   0                13s     <none>       node2    <none>           <none>

创建完毕后如下:

[root@master ~]# kubectl get pods -o wide
NAME                     READY   STATUS             RESTARTS        AGE     IP           NODE     NOMINATED NODE   READINESS GATES
nginx-85b98978db-nh2m4   1/1     Running            0               2d5h    10.244.1.2   node1    <none>           <none>
ngx-health               0/1     CrashLoopBackOff   55 (72s ago)    3h9m    10.244.2.2   node2    <none>           <none>
ngx-health-tcp           0/1     CrashLoopBackOff   28 (54s ago)    173m    10.244.2.3   node2    <none>           <none>
ngx-health-tcpsocket     0/1     CrashLoopBackOff   25 (4m7s ago)   154m    10.244.1.3   node1    <none>           <none>
pod-demo-test            0/1     Pending            0               4m54s   <none>       <none>   <none>           <none>
pod-demo-tests           1/1     Running            0               2m38s   10.244.2.6   node2    <none>  

可以看到,我们在配置了节点选择器后,该Pod对象会运行在node2节点上,这就说明了节点选择器的选择Node节点作用。
 
技术小学生微信公众号
华为服务器
腾讯云服务器大促销。

声明:站长码字很辛苦啊,转载时请保留本声明及附带文章链接:https://blog.tag.gg/showinfo-3-36271-0.html
亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?
上一篇:kubernetes/k8s健康检查范例及详细使用方法
下一篇:解决kubernetes/k8s污点及污点容忍是什么?如何添加污点。