如果你对k8s还不了解,可以看下前文
k8s 实战 1 ---- 初识 (https://www.cnblogs.com/jilodream/p/18245222)
k8s 实战 2 ---- pod 基础 (https://www.cnblogs.com/jilodream/p/18284282)

什么是标签?
标签也就是Label,是作用在k8s的资源上的,用来记录的资源的状态,或元数据的一组数据。
label本质上就是一组键值对。
我们可以将其作用在pod,deployment、node等等资源上。
这一点和java语言中的注解非常像。我们可以通过注解来标记类或者方法或者属性,这些注解并不会直接改变类或者方法什么特性。而是由其它的方法
分析这些注解,从而做出符合需要的判断。
举个例子,假若我们的pod,由于某种需要,分别需要标记出是由谁在维护当前pod,我们就可以通过标签来记录这些信息。
话不多说,来看代码:
1、首先我们按照如下yaml模板,创建一个pod。
注意看metadata 标签下,新加了labels ,表示要添加的标签及其值。
我们这里增加用户(user)和模块 (module)两个标签,yaml文件如下:

 1 apiVersion: v1
2 kind: Pod
3 metadata:
4 name: busyb-p
5 labels:
6 user: happy
7 module: order
8 spec:
9 containers:
10 - image: docker.io/library/kuard-amd64:blue
11 name: bb-c
12 ports:
13 - containerPort: 8080
14 name: http
15 protocol: TCP

创建好之后,我们可以追加参数的形式,查看pod中包含的标签
kubectl get xx --show-labels xx表示资源类型

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k get pods --show-labels
2 NAME READY STATUS RESTARTS AGE LABELS
3 busyb-p 1/1 Running 0 11s module=order,user=happy

注意看,LABELS列即为我们添加的标签:module 和user
我们还可以在pod运行期时,手动的增删标签:
kubectl label xx xxx "标签key=标签value" xx表示资源类型 xxx表示资源名称
如先动态新增version标签,再修改version标签。注意修改时,需要追加参数( --overwrite),否则会修改不成功

 1 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k label pod busyb-p "version=dev"
2 pod/busyb-p labeled
3 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k get pods --show-labels
4 NAME READY STATUS RESTARTS AGE LABELS
5 busyb-p 1/1 Running 0 35m module=order,user=happy,version=dev
6
7 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k label pod busyb-p "version=test" --overwrite
8 pod/busyb-p labeled
9 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k get pods --show-labels
10 NAME READY STATUS RESTARTS AGE LABELS
11 busyb-p 1/1 Running 0 47m module=order,user=happy,version=test

如果要删除某个标签,kubectl label pod busyb-p "标签key-",如下:

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k label pod busyb-p "level-"
2 pod/busyb-p unlabeled
3 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k get pods --show-labels
4 NAME READY STATUS RESTARTS AGE LABELS
5 busyb-p 1/1 Running 0 71m module=order,user=happy,version=product

在shell界面,如果标签太多,我们除了可以用管道追加grep的传统过滤办法,也可以使用k8s的过滤参数
kubectl get pods --selector="标签key=标签value"
也可以用-l 代替--selector

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# kubectl get pods --selector="user=happy,module=order"
2 NAME READY STATUS RESTARTS AGE
3 busyb-p 1/1 Running 0 74m
4
5 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# kubectl get pods -l "user=happy,module=order"
6 NAME READY STATUS RESTARTS AGE
7 busyb-p 1/1 Running 0 76m

如果要显示某个指定的标签:
-L "标签key"

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# kubectl get pods  -L "version"
2 NAME READY STATUS RESTARTS AGE VERSION
3 busyb-p 1/1 Running 0 78m product

以上就是标签的基本操作,那么他除了用户的普通标记还有什么用呢?
其实标签的作用非常之大,k8s整体是一个解耦的系统,组件之间是独立运行的。但是组件之间又互相需要通信或者是标记来感知状态。
此时就需要标签作为媒介,进行信息的传输,比如:
1、我们在启动pod时,要限制pod在哪些节点上运行,此时就需要在节点上打好标签。接着在pod的yaml模板中,限制好要启动节点的标签。
2、deployment要固定pod的副本数,此时就需要通过标签进行过滤,如果筛选出的标签多了,就删除,如果少了就创建。

标签就相当于是一个粘合剂,把不同的资源组件通过标签进行关联。使k8s的资源和各个组件可以完整的整合到一起,形成一套完整的系统。

k8s 实战 3----标签的更多相关文章

  1. k8s实战之从私有仓库拉取镜像 - kubernetes

    1.实战目的 从私有docker仓库拉取镜像,部署pod.上一篇中,我们搭建了私有的镜像仓库,这一篇我们将与k8s结合实战使用私有仓库. 2.登录docker 为了完成本次实战,需要登录docker, ...

  2. K8S实战-构建Django项目-03-使用共享存储

    上篇博文,发布之后,正好跟着双十一,不知道大家剁手了没~~.好啦,言归正传先声明一下,每周1,3,5更新教程,大家如果想要了解更多的教程可以重温一下之前的教程或者,关注崔格拉斯 公众号,大家想要源码的 ...

  3. SVN与TortoiseSVN实战:标签与分支

    最近在写<IOS性能调优系列>,今天偷个懒,写写SVN与TortoiseSVN实战的第二篇,标签与分支. 第一篇详见<SVN与TortoiseSVN实战:从入门到精通> SVN ...

  4. k8s实战为aspnetcore.webapi微服务注入配置信息 - kubernetes

    1.浅析k8s配置信息 Secret 以密文的形式存储数据,可以用来保存一些敏感信息,例如:OAuth tokens.私钥.密码.数据库连接.事件总线连接等. ConfigMap 以明文的形式存储数据 ...

  5. 阿里云内部超全K8s实战手册!超全127页可下载

    一直关注云计算领域的人,必定知道Docker和Kubernetes的崛起.如今,世界范围内的公有云巨头(谷歌.亚马逊.微软.华为云.阿里云等等)都在其传统的公共云服务之上提供托管的Kubernetes ...

  6. k8s实战之部署Prometheus+Grafana可视化监控告警平台

    写在前面 之前部署web网站的时候,架构图中有一环节是监控部分,并且搭建一套有效的监控平台对于运维来说非常之重要,只有这样才能更有效率的保证我们的服务器和服务的稳定运行,常见的开源监控软件有好几种,如 ...

  7. k8s入门_label标签、nodeSelector

    什么是label Label以key/value键值对的形式附加到任何对象上,如Pod,Service,Node, RC(ReplicationController)/RS(ReplicaSet)等. ...

  8. k8s实战之数据卷(volume)

    一.概述 数据卷用于实现容器持久化数据,k8s对于数据卷重新定义,提供了丰富强大的功能:数据卷分为三类: 本地数据卷,网络数据卷和信息数据卷 二.

  9. k8s实战之Service

    一.概述 为了适应快速的业务需求,微服务架构已经逐渐成为主流,微服务架构的应用需要有非常好的服务编排支持,k8s中的核心要素Service便提供了一套简化的服务代理和发现机制,天然适应微服务架构,任何 ...

  10. k8s实战读书笔记

    一.概述 kubernetes中Service是真实应用的抽象,将用来代理Pod,对外提供固定IP作为访问入口,这样通过访问Service便能访问到相应的Pod,而对访问者来说只需知道Service的 ...

随机推荐

  1. 4G EPS 中的小区选择

    目录 文章目录 目录 前文列表 小区选择 RSRP(参考信号接收功率) RSRQ(参考信号接收质量) RSSI(接收信号强度指示) SINR(信号与干扰加噪声比) 前文列表 <4G EPS 中的 ...

  2. kubernetes之Secret和Configmap

    创建和查询Secret literal 播报 编辑 讨论 上传视频literal是一个英语单词,形容词,意思是文字的:逐字的:无夸张的. [1] 通过--from-literal创建以及查看 [mac ...

  3. QShop商城--项目介绍

    QShop商城-项目介绍 QShop商城,是全新推出的一款轻量级.高性能.前后端分离的电商系统,支持微信小程序,前后端源码100%开源,完美支持二次开发,让您快速搭建个性化独立商城. 技术架构:.Ne ...

  4. 【C#】 封装的异步HttpRequest

      private async void btn_userLogin_Click(object sender, EventArgs e)        {            UInfo = new ...

  5. Vue cli之在组件中使用axios

    默认情况下,我们的项目中并没有对axios包的支持,所以我们需要下载安装. 在项目根目录中使用 npm安装包: npm install axios 接着在main.js文件中,导入axios并把axi ...

  6. Android 13 - Media框架(16)- OpenMax(四)

    关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节继续了解 openmax 目录下的内容. 1.OMX_Core.h 1.1.OMX_BUFFERHEADERTYPE 这是一个比较关键的结构体 ...

  7. NOIP模拟82

    T1 魔法 解题思路 发现选择情况无非就是两种,连续的一段或者间隔为 \(R+B\) 的倍数的一段. 直接对于原序列贪心,每次选择可以消除的部分并将其删掉. 对于合法的情况将操作倒序输出即可. cod ...

  8. C++笔记(9) 异常

    程序有时会遇到运行阶段错误,导致程序无法正常走下去.对于这种问题,处理方法主要有: 1.调用abort() Abort()函数原型位于头文件cstdlib,其典型实现是向标准错误流(即cerr使用的错 ...

  9. 算法金 | 你真的完全理解 Logistic 回归算法了吗

    大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 今日 178/10000 1. 引言 吴恩达:机器学习的六个核心算法!, 通透!!十大 ...

  10. react 样式继承 属性传递

    # 样式 import styled from 'styled-components' const Button = styled.button` font-size: 20px; border: 1 ...