Kubernetes基础:命令行方式进行标签的管理

前面的文章中介绍过Kubernetes下标签的基本概念和使用方法,标签不但可以配置在YAML文件中在初始的状态生成,还可以动态的进行管理,这篇文章继续介绍如何使用kubectl label命令对标签进行管理。

使用标签

在Kubernetes中,可以对所有的资源进行标签的设定,同一个资源可以设定不同的标签,不同的资源也可以设定为相同标签,由于标签是键值对的数据形式,键是不能重复的。

环境准备

本文使用Kubernetes 1.17.2,可参看下文进行快速环境搭建:

[root@host131 ansible]# kubectl get node -o wide
NAME              STATUS   ROLES    AGE   VERSION   INTERNAL-IP       EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
192.168.163.131   Ready    <none>   71s   v1.17.2   192.168.163.131   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://19.3.5
[root@host131 ansible]# 

示例准备

  • YAML文件示例
[root@host131 Pod]# cat single-pod.yaml 
---
apiVersion: v1
kind: Pod
metadata:
  name: single-pod
spec:
  containers:
  - name: blue-busybox-container
    image: busybox:1.31.1
    command: ["sleep"]
    args: ["1000"]
...
[root@host131 Pod]#
  • 创建Pod
[root@host131 Pod]# kubectl create -f single-pod.yaml 
pod/single-pod created
[root@host131 Pod]# 
[root@host131 Pod]# kubectl get pods -o wide
NAME         READY   STATUS    RESTARTS   AGE   IP             NODE              NOMINATED NODE   READINESS GATES
single-pod   1/1     Running   0          6s    10.254.176.3   192.168.163.131   <none>           <none>
[root@host131 Pod]# 
  • 查看标签
[root@host131 Pod]# kubectl describe pods single-pod |grep '^Labels'
Labels:       <none>
[root@host131 Pod]# 

标签操作:添加标签

上述刚刚创建的Pod是没有Label设定的,给上述Pod添加app=testbox的标签

[root@host131 Pod]# kubectl label pod single-pod app=testbox
pod/single-pod labeled
[root@host131 Pod]#

标签操作:查询标签

可以使用describe结合grep确认标签

[root@host131 Pod]# kubectl describe pods single-pod |grep '^Labels'
Labels:       app=testbox
[root@host131 Pod]# 

也可以直接在get pod命令后添加show-labels选项

[root@host131 Pod]# kubectl get pods --show-labels
NAME         READY   STATUS    RESTARTS   AGE   LABELS
single-pod   1/1     Running   0          65s   app=testbox
[root@host131 Pod]# 

标签操作:修改标签

label命令缺省有个overwrite选项,设定值为false,当指定其值为true时就可以进行修改标签,否则则会提示如下错误信息

[root@host131 Pod]# kubectl describe pods single-pod |grep '^Labels'
Labels:       app=testbox
[root@host131 Pod]# 
[root@host131 Pod]# kubectl label pod single-pod app=single-pod
error: 'app' already has a value (testbox), and --overwrite is false
[root@host131 Pod]# 

设定overwrite为true,即可进行修改

[root@host131 Pod]# kubectl label pod single-pod app=single-pod --overwrite
pod/single-pod labeled
[root@host131 Pod]# 

确认修改信息

[root@host131 Pod]# kubectl describe pods single-pod |grep '^Labels'
Labels:       app=single-pod
[root@host131 Pod]# 
[root@host131 Pod]# kubectl get pods --show-labels
NAME         READY   STATUS    RESTARTS   AGE    LABELS
single-pod   1/1     Running   0          114s   app=single-pod
[root@host131 Pod]#

标签操作:添加多个标签

可以在上述标签基础之上,给此Pod再添加一个标签,同一资源可以有多个标签

[root@host131 Pod]# kubectl label pod single-pod environment=dev
pod/single-pod labeled
[root@host131 Pod]# kubectl get pods --show-labels
NAME         READY   STATUS    RESTARTS   AGE     LABELS
single-pod   1/1     Running   0          2m15s   app=single-pod,environment=dev
[root@host131 Pod]# 

标签操作:删除标签

[root@host131 Pod]# kubectl get pods --show-labels
NAME         READY   STATUS    RESTARTS   AGE     LABELS
single-pod   1/1     Running   0          2m15s   app=single-pod,environment=dev
[root@host131 Pod]# 

在标签后添加-,即可删除此标签,可参看如下执行示例

[root@host131 Pod]# kubectl label pod single-pod app-
pod/single-pod labeled
[root@host131 Pod]# kubectl get pods --show-labels
NAME         READY   STATUS    RESTARTS   AGE     LABELS
single-pod   1/1     Running   0          2m27s   environment=dev
[root@host131 Pod]# kubectl label pod single-pod environment-
pod/single-pod labeled
[root@host131 Pod]# kubectl get pods --show-labels
NAME         READY   STATUS    RESTARTS   AGE     LABELS
single-pod   1/1     Running   0          2m37s   <none>
[root@host131 Pod]# kubectl describe pods single-pod |grep '^Labels'
Labels:       <none>
[root@host131 Pod]# 
发布了1084 篇原创文章 · 获赞 1299 · 访问量 402万+

猜你喜欢

转载自blog.csdn.net/liumiaocn/article/details/104248852