k8s 实战 3----标签
如果你对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----标签的更多相关文章
- k8s实战之从私有仓库拉取镜像 - kubernetes
1.实战目的 从私有docker仓库拉取镜像,部署pod.上一篇中,我们搭建了私有的镜像仓库,这一篇我们将与k8s结合实战使用私有仓库. 2.登录docker 为了完成本次实战,需要登录docker, ...
- K8S实战-构建Django项目-03-使用共享存储
上篇博文,发布之后,正好跟着双十一,不知道大家剁手了没~~.好啦,言归正传先声明一下,每周1,3,5更新教程,大家如果想要了解更多的教程可以重温一下之前的教程或者,关注崔格拉斯 公众号,大家想要源码的 ...
- SVN与TortoiseSVN实战:标签与分支
最近在写<IOS性能调优系列>,今天偷个懒,写写SVN与TortoiseSVN实战的第二篇,标签与分支. 第一篇详见<SVN与TortoiseSVN实战:从入门到精通> SVN ...
- k8s实战为aspnetcore.webapi微服务注入配置信息 - kubernetes
1.浅析k8s配置信息 Secret 以密文的形式存储数据,可以用来保存一些敏感信息,例如:OAuth tokens.私钥.密码.数据库连接.事件总线连接等. ConfigMap 以明文的形式存储数据 ...
- 阿里云内部超全K8s实战手册!超全127页可下载
一直关注云计算领域的人,必定知道Docker和Kubernetes的崛起.如今,世界范围内的公有云巨头(谷歌.亚马逊.微软.华为云.阿里云等等)都在其传统的公共云服务之上提供托管的Kubernetes ...
- k8s实战之部署Prometheus+Grafana可视化监控告警平台
写在前面 之前部署web网站的时候,架构图中有一环节是监控部分,并且搭建一套有效的监控平台对于运维来说非常之重要,只有这样才能更有效率的保证我们的服务器和服务的稳定运行,常见的开源监控软件有好几种,如 ...
- k8s入门_label标签、nodeSelector
什么是label Label以key/value键值对的形式附加到任何对象上,如Pod,Service,Node, RC(ReplicationController)/RS(ReplicaSet)等. ...
- k8s实战之数据卷(volume)
一.概述 数据卷用于实现容器持久化数据,k8s对于数据卷重新定义,提供了丰富强大的功能:数据卷分为三类: 本地数据卷,网络数据卷和信息数据卷 二.
- k8s实战之Service
一.概述 为了适应快速的业务需求,微服务架构已经逐渐成为主流,微服务架构的应用需要有非常好的服务编排支持,k8s中的核心要素Service便提供了一套简化的服务代理和发现机制,天然适应微服务架构,任何 ...
- k8s实战读书笔记
一.概述 kubernetes中Service是真实应用的抽象,将用来代理Pod,对外提供固定IP作为访问入口,这样通过访问Service便能访问到相应的Pod,而对访问者来说只需知道Service的 ...
随机推荐
- Mark Lee:Splashtop 如何成为最新的 10 亿美元估值技术独角兽
从左至右:Splashtop联合创始人Rob.Philip.Mark和Thomas Splashtop 刚刚完成了由我们的长期投资者 Sapphire Ventures 领投的 5000 万美元的新融 ...
- 零代码零硬件玩转华为云IoT,基于设备联动实时监控设备
本文分享自华为云社区<一键守护,实时洞察:华为云IoT设备联动,智能感知设备状态变化,精准触发告警通知[零代码零硬件玩转华为云IoT]>,作者:周周的奇妙编程. 前言 在前面我们已经体验过 ...
- minio 安装
mybatis 相关:https://baomidou.com/pages/223848/#fieldfillhttps://mybatis-flex.com/zh/intro/maven.html ...
- SuperSocket AppServer.NewRequestReceived 不触发 接受不到字节
SuperSocket AppServer.NewRequestReceived 不触发 接受不到字节 针对.netframework版本 1.6.* 使用 FixedHeaderReceiveFil ...
- 深入理解Docker原理
本文参考转载至:<深入剖析Kubernetes - 张磊> 更过优秀博文请关注:https://blog.bigcoder.cn 容器技术的核心功能,就是通过约束和修改进程的动态表现,从而 ...
- go 有向简单图 十字链表
package main import "fmt" type CrossEdgeNode struct { tailVex int // 尾顶点 headVex int // 头顶 ...
- .NET Core应用程序每次启动后使用string.GetHashCode()方法获取到的哈希值(hash)不相同
前言 如标题所述,在ASP.NET Core应用程序中,使用string.GetHashCode()方法去获取字符串的哈希值,但每次重启这个ASP.NET Core应用程序之后,同样的字符串的哈希值( ...
- kettle从入门到精通 第三十四课 kettle 错误处理
1.我们在平常写应用程序的时候,需要主动捕获异常或者错误,不然程序有可能异常退出.同样kettle 也支持异常或者错误处理,下图展示的是在批量插入数据的时候捕获异常,如唯一健冲突,死锁等,并将错误信息 ...
- Math Record
T1.P3327 知识点:莫比乌斯反演,数论分块 我们知道 \(d(ij) = \sum_{x | i}\sum_{y | j}[\gcd(x,y) == 1]\). 所以我们就要求 \(\sum^n ...
- Console LDAP 配置解密
之前通过短视频向大家介绍了 Console 如何集成 LDAP,但很多小伙伴反映按照视频里的配置后不成功.今天就结合小伙伴们反映的问题来跟大家详细介绍一下. Console LDAP 完整的配置参数如 ...