kubernetes集群之Label管理

Posted 江湖有缘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetes集群之Label管理相关的知识,希望对你有一定的参考价值。

kubernetes集群之Label管理

一、Label介绍

1.标签是k8s特色的管理方式,便于分类管理资源对象。
2.一个标签可以对应多个资源,一个资源也可以有多个标签,它们是多对多的关系。
3.一种特殊的资源对象,必须附件在具体的资源对象之上,用于标识资源对象的用途。
4. 一个资源拥有多个标签,可以实现不同维度的管理。

二、检查本地k8s集群状态

[root@k8s-master ~]# kubectl get nodes -owide
NAME         STATUS   ROLES                  AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
k8s-master   Ready    control-plane,master   18h   v1.23.1   192.168.3.201   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   containerd://1.6.6
k8s-node01   Ready    <none>                 18h   v1.23.1   192.168.3.202   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   containerd://1.6.6
k8s-node02   Ready    <none>                 18h   v1.23.1   192.168.3.203   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   containerd://1.6.6

三、Label的创建

1.给工作节点新增标签

[root@k8s-master ~]# kubectl label nodes k8s-node02 fun=work02
node/k8s-node02 labeled

2.给pod打上标签

[root@k8s-master ~]# kubectl label pod cirror-28253 fun=ittest
pod/cirror-28253 labeled
[root@k8s-master ~]# kubectl label pod cirror-28253 env=proc
pod/cirror-28253 labeled

3.给工作节点打上角色标签

[root@k8s-master ~]# kubectl label nodes k8s-node01  node-role.kubernetes.io/worker=
node/k8s-node01 labeled

四、Label的修改

修改标签

[root@k8s-master ~]# kubectl label nodes k8s-node02 fun=node02  --overwrite 
node/k8s-node02 labeled

五、Label的查询

1.列出节点的所有标签

[root@k8s-master ~]# kubectl get nodes --show-labels 
NAME         STATUS   ROLES                  AGE   VERSION   LABELS
k8s-master   Ready    control-plane,master   18h   v1.23.1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=
k8s-node01   Ready    worker                 18h   v1.23.1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node01,kubernetes.io/os=linux,node-role.kubernetes.io/worker=
k8s-node02   Ready    <none>                 18h   v1.23.1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,fun=node02,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node02,kubernetes.io/os=linux,type=dell730

2.查询带有worker角色的节点

[root@k8s-master ~]# kubectl get nodes -l node-role.kubernetes.io/worker
NAME         STATUS   ROLES    AGE   VERSION
k8s-node01   Ready    worker   18h   v1.23.1

3.查询带有type标签的节点

[root@k8s-master ~]# kubectl get nodes -l type
NAME         STATUS   ROLES    AGE   VERSION
k8s-node02   Ready    <none>   18h   v1.23.1

六、Label的删除

[root@k8s-master ~]# kubectl label nodes k8s-node02 fun-
node/k8s-node02 unlabeled
[root@k8s-master ~]# kubectl get node -l fun
No resources found

七、kubernetes注解使用

1.给工作节点添加注解

[root@k8s-master ~]# kubectl annotate nodes k8s-node01 test="this is a work node"
node/k8s-node01 annotated

2.查看注解

[root@k8s-master ~]# kubectl describe nodes k8s-node01 |grep test
                    test: this is a work node

3.修改注解

 kubectl annotate nodes k8s-node01 test=11 --overwrite

4.删除注解

kubectl annotate nodes k8s-node01 test-

八、在yaml脚本的标签使用

[root@k8s-master ~]#  kubectl run web01 --image=nginx:1.21 -n k8s-test  -o yaml --dry-run=client
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: web01
  name: web01
  namespace: k8s-test
spec:
  containers:
  - image: nginx:1.21
    name: web01
    resources: 
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: 

以上是关于kubernetes集群之Label管理的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes集群Node管理

云原生之kubernetes实战kubernetes集群的证书管理

云原生之kubernetes在kubernetes集群下的jobs与cronjobs管理

云原生之kubernetes实战部署k8s集群管理平台Wayne

云原生之kuberneteskubernetes集群下Secret存储对象的管理

Kubernetes集群命令的管理工具kubectl实例讲解