kubernetes五大资源之Label

Label是kubernetes中在资源上添加标识,用来对他们进行区分选择

一个Label会以key/value键值对的形式附加到各种对象资源

如Node、Pod、Service等等

一个资源对象可以定义任意数量的Label

同一个Label也可以被添加到任意数量的资源对象上(service负载到后面的pod资源的区分)

Label通常在资源对象定义时确定,也可以在对象创建后动态添加或者删除

通过Label实现资源的多维度分组

以便灵活方便的进行资源分配、调度、配置、部署等管理工作

常用的Label示例如下:

> 版本标签:"version":"1.0"

> 环境标签:"environment":"dev","environment":"test","environment":"port"

> 架构标签:"tier":"frontend","tier":"backend"

标签定义完毕以后还要考虑标签的选择,这就要用到Label Selector

Label用于给某个资源对象定义标识

Label Selector用于查询筛选拥有某些标签的资源对象

定义标签的方式

- 基于等式的定义方式

  version=1.0              #等于

  version!=1.0             #不等于

- 基于集合的定义方式

  version in (1.0,2.0)        #在这里

  version noin (1.0,2.0)        #不在这里

  Label常用命令

#创建Pod并为Pod资源打标签

[root@master ~]# kubectl create -f pod_nginx.yml

pod/nginx created

#查看pod

[root@master ~]# kubectl get pod -n dev

NAME    READY   STATUS    RESTARTS   AGE

nginx   1/1     Running   0          12s

#查看pod标签:--show-labels没有标签

[root@master ~]# kubectl get pod -n dev --show-labels

NAME    READY   STATUS    RESTARTS   AGE   LABELS

nginx   1/1     Running   0          95s   <none>

#为nginx的pod打version标签

[root@master ~]# kubectl label pod nginx -n dev version=1.0

pod/nginx labeled

#查看pod标签

[root@master ~]# kubectl get pod -n dev --show-labels

NAME    READY   STATUS    RESTARTS   AGE    LABELS

nginx   1/1     Running   0          6m2s   version=1.0

#为nginx的pod打标签(一个资源对象可以定义任意数量的Label

[root@master ~]# kubectl label pod nginx -n dev tier=frontend(架构标签,表示前端服务)

pod/nginx labeled

#查看pod标签

[root@master ~]# kubectl get pod -n dev --show-labels

NAME    READY   STATUS    RESTARTS   AGE   LABELS

nginx   1/1     Running   0          20m   tier=frontend,version=1.0

#更新version标签:--overwrite覆盖写

        

[root@master ~]# kubectl get pod -n dev --show-labels

pod/nginx labeled

#查看pod标签

[root@master ~]# kubectl get pod -n dev --show-labels

NAME    READY   STATUS    RESTARTS   AGE   LABELS

nginx   1/1     Running   0          26m   tier=frontend,version=2.0  #以更新标签

#基于等式的标签筛选(再创建一个nginx的pod并为其打标签进行筛选

[root@master ~]# vim pod_nginx.yml
apiVersion: v1

kind: Pod

metadata:

  name: nginx2   #修改pod名称

  namespace: dev

spec:

  containers:

  - image: nginx:1.17.1

    name: pod

    ports:

    - name: nginx-port

      containerPort: 8080  #修改端口

      protocol: TCP

      

#创建pod

[root@master ~]# kubectl create -f pod_nginx.yml

pod/nginx2 created

#查看pod

[root@master ~]# kubectl get pod -n dev

NAME     READY   STATUS    RESTARTS   AGE

nginx    1/1     Running   0          45m

nginx2   1/1     Running   0          7m27s

#查看pod标签(nginx2默认没有标签

[root@master ~]# kubectl get pod -n dev --show-labels

NAME     READY   STATUS    RESTARTS   AGE    LABELS

nginx    1/1     Running   0          45m    tier=frontend,version=2.0

nginx2   1/1     Running   0          8m1s   <none>

#为nginx2的pod打标签

[root@master ~]# kubectl label pod nginx2 -n dev  version=1.0

pod/nginx2 labeled

#查看pod标签

[root@master ~]# kubectl get pod -n dev --show-labels

NAME     READY   STATUS    RESTARTS   AGE   LABELS

nginx    1/1     Running   0          48m   tier=frontend,version=2.0

nginx2   1/1     Running   0          11m   version=1.0

标签筛选

#根据标签选择器进行标签筛选:-l "标签"

[root@master ~]# kubectl get pod -l "version=1.0" -n dev --show-labels

NAME     READY   STATUS    RESTARTS   AGE   LABELS

nginx2   1/1     Running   0          12m   version=1.0

#筛选不等于"version=1.0"的标签:"version!=1.0"

[root@master ~]# kubectl get pod -l "version!=1.0" -n dev --show-labels

NAME    READY   STATUS    RESTARTS   AGE   LABELS

nginx   1/1     Running   0          53m   tier=frontend,version=2.0

#基于集合的标签筛选:in(筛选)

[root@master ~]# kubectl get pods -l "version in (1.0)" -n dev --show-labels

NAME     READY   STATUS    RESTARTS   AGE   LABELS

nginx2   1/1     Running   0          22m   version=1.0

#基于集合的标签筛选:notin(不筛选)

[root@master ~]# kubectl get pods -l "version notin (1.0)" -n dev --show-labels

NAME    READY   STATUS    RESTARTS   AGE   LABELS

nginx   1/1     Running   0          60m   tier=frontend,version=2.0

删除标签

#删除标签:标签名-

[root@master ~]# kubectl label pod nginx -n dev   tier-

pod/nginx labeled

[root@master ~]# kubectl label pod nginx -n dev   version-

pod/nginx labeled

#查看标签

[root@master ~]# kubectl get pod  -n dev --show-labels

NAME     READY   STATUS    RESTARTS   AGE   LABELS

nginx    1/1     Running   0          64m   <none>

nginx2   1/1     Running   0          26m   version=1.0

配置文件形式更新标签

[root@master ~]# vim pod_nginx.yml
apiVersion: v1

kind: Pod

metadata:

  name: nginx1

  namespace: dev

  labels:

   version: "3.0"   #更新标签为3.0

   env: "test"      #添加新标签

spec:

  containers:

  - image: nginx:1.17.1

    name: pod

    ports:

    - name: nginx-port

      containerPort: 80

      protocol: TCP

#执行文件(apply通过配置文件对资源进行配置)

[root@master ~]# kubectl apply -f pod_nginx.yml

#查看标签

[root@master ~]# kubectl get pod  -n dev --show-labels

NAME     READY   STATUS    RESTARTS   AGE    LABELS

nginx    1/1     Running   0          110m   <none>

nginx2   1/1     Running   0          72m    env=test,version=3.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵唯一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值