【云原生 】Kubernetes(k8s)标签详解
文章目录
-
- 前言
- 一、什么是Kubernetes标签
- 二、设计标签的目的
- 三、标签的语法
- 四、标签选择运算符
- 五、标签的使用
前言
我们知道使用pod控制器创建的pod,在pod故障以后重建后的pod ip地址和名称是变化的,为了解决pod访问问题,我们特此创建了service,我们访问service的ip地址就可以正常访问到pod;那么问题来了,service是怎样去关联pod的呢?在k8s上如果使用pod控制创建的pod,在pod发生故障以后,对应pod会被对应的控制器重启或重建,一个pod重建以后,对应的ip地址和名称都是会发生变化的,所以靠ip地址和名称关联pod是不行的;那靠什么关联pod呢?在k8s上是使用的标签和标签选择器的机制实现资源和资源间相互关联的。
什么是标签?它的作用是干嘛用的?
所谓标签就是指一个键值数据,在k8s上任何资源都可以拥有标签;我们可以在创建资源时在配置清单中指定,也可以创建好资源以后再使用命令添加标签;有了标签以后,我们后续就可以根据标签来管理对应的资源;一个资源可以拥有多个标签,同时一个标签也可以附加给多个资源;我们可以理解为标签就是用来逻辑的对资源进行分组,拥有相同标签的资源为一组;标签的作用是方便用户管理资源;比如在k8s上运行了几百个pod,我们想要管理功能相同的pod,就可以把具有相似功能的pod附加同一个标签,然后要管理这些pod的时,直接指定拥有指定标签的pod即可。
一、什么是Kubernetes标签
要学习 k8s 标签,需要从以下几个方面来学习。 首先,我们需要知道什么是 k8s 标签。
在 k8s 中,标签(Labels)是附加到 k8s 对象(比如 Pods)上的键值对。
标签的一个示例如下所示:
“metadata”:{ “labels”:{ “key1” : ”value1” “key2” : ”value2” } }
标签的作用主要有两点:
一是标签旨在用于指定对用户有意义且相关的对象的标识属性,但不直接对核心系统有语义含义。
二是标签可以用于组织和选择对象的子集。
标签的特点主要有如下三点:
1、每个对象都可以定义一组键值标签。
2、每个键对于给定对象必须是唯一的。
3、标签能够支持高效的查询和监听操作,对于用户界面和命令行是很理想的。
二、设计标签的目的
设计标签的主要目的是使用户能够以松耦合的方式将他们自己的组织结构映射到系统对象,而无需客户端存储这些映射。
有如下几个示例标签,例如:
1、在区分发行版本的时候,可以指定:
“release” : “canary”
“release” : “dev”
“release” : “beta”
“release” : “stable”
……
2、在定义运行环境时,可以指定:
“environment”: “dev”
“environment”: “qa”
“environment”: “production”
……
三、标签的语法
接着,我们来学习下标签的语法。
1、前缀:
1)前缀是可选的;
2)如果指定,前缀必须是DNS子域:由点“.”分割的一系列DNS标签,总共不超过253个字符,后跟斜杠“/”;
3)如果省略前缀,则假定标签键对用户是私有的。向最终用户对象添加标签的自动系统组件(例如:kube-scheduler、kube-controller-manager、kube-apiserver、kubctl或其他第三方自动化工具)必须指定前缀
2、名称:
1)名称段是必需的
2)必须小于等于63个字符,以字母数字字符“[a-z0-9A-Z]”开头和结尾,带有破折号“—”,下划线“_”,点“.”和之前的字母数字
3、小结:有效的标签值
1)必须为63个字符或更少(可以为空);
2)除非标签值为空,必须以字母数字字符“[a-z0-9A-Z]”开头和结尾;
3)包含破折号“—”,下划线“_”,点“.”和之前的字母数字
示例:是一个有 environment 为 qa,同时 app 为 nginx 标签的 pod 配置文件。
apiVersion:v1 kind:Pod metadata: name:label-demo labels: environment:production app:nginx spec: containers: -name:nginx Image:nginx:1.14.2 Ports: -containerPort:80
四、标签选择运算符
然后,我们来学习下标签选择运算符。 标签选择运算符分为两种:
一种是基于等值的需求:
基于等值或基于不等值的需求允许按标签键和值进行过滤。 可接受的运算符有“=”、“==”、“!=”。
一种是基于集合的需求:
基于集合的标签需求允许你通过一组值来过滤键。 持有三种操作符:“in”、“notin”、“exists”。
最后,我们来学习下如何使用 API 来使用标签。 前面提到的两种标签选择算符都可以通过 REST 客户端用于 list 或者 watch 资源。
基于等值的需求可以使用如下命令来获取 pods。
Kubectl get pods –l environment-production,tier=frontend
基于集合的需求可以使用如下命令来获取 pods。
Kubectl get pods –l ‘environment in (production),tier in (frontend)’
五、标签的使用
K8S中资源标签label
1、说明
标签label:
资源标志
格式 key=value
可添加删除多个标签
标签选择器 label selector:
用于选择资源
name=name1
name!=name1
name in (name1,name2)
name not in (name1,name2)
2、指令
1)帮助:
kubectl label --help
2)打标签:
pod:kubectl label pods busybox app=busybox
node:kubectl label node k8s-node01 k8s-node02 env=test
3)查看:
查看pods为busybox的标签:
kubectl get pods busybox --show-labels
查看默认名称空间下所有pod资源的标签:
kubectl get pods --show-labels
查看指定名称空间:
kubectl get pods -n kube-system --show-labels
4)更新:
加上–overwrite参数修改标签
kubectl label po busybox app=busybox2 -n kube-public --overwrite
5)通过标签筛选:
列出默认名称空间下标签key是app的pod,不显示标签:
kubectl get pods -l app
列出默认名称空间下标签key是app、值是busybox的pod,不显示标签:
kubectl get pods -l app=busybox
多个筛选条件:
kubectl get po -l version!=v1,app=nginx
6)删除:
pod:kubectl label po busybox app- -n kube-public
node:kubectl label node k8s-node02 env-
3、配置
1)创建label-nginx.yaml
apiVersion: v1 kind: Pod metadata: name: nginx namespace: dev labels: version: "1.0.0" env: "test" spec: containers: - image: nginx imagePullPolicy: IfNotPresent name: pod ports: - name: nginx-port containerPort: 80 protocol: TCP
2)创建
kubectl create -f label-nginx.yaml
3)删除
kubectl delete -f label-nginx.yaml
以上就是K8s 标签的介绍。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何在保护用户隐私的同时实现精准广告投放?
用户在浏览App的页面时,如果经常跳出来不喜欢的弹窗广告不仅损害用户的浏览体验,也让用户对广告内容产生反感。作为App的营销人员,线上投放广告时如何精准捕捉用户需求,同时不引起用户的抵触心理十分重要。当用户不愿意将自己的个人信息,例如年龄、性别、兴趣爱好等隐私数据授权给App时,基于用户正在浏览的页面投放广告是个不错的选择,它决定了一则广告能否高效地定位到目标用户。 比如,用户正在新闻App里读一篇关于现阶段新能源汽车加速发展,续航里程大大增加,各城市也在加快部署充电桩的文章,如果定向广告机制理解了文章的上下文内容,用户在继续浏览新闻时可能会看到关于附近新能源汽车4S店的试驾邀请的原生广告,或者关于某品牌新能源汽车购置优惠的广告,精准定位目标用户需求。 HMS Core广告服务支持个性化广告和非个性化广告,非个性化广告是不基于用户过去行为的广告,使用上下文信息进行定向。上下文信息包括用户授权当前位置的粗略(例如城市级别)地理定位,设备自带的信息(例如手机型号等)以及当前应用程序的内容或当前应用搜索关键字上的内容。当用户在App里浏览某个内容,或者搜索某一话题、关键词表达出了对该话题的具...
- 下一篇
在线数据迁移,数字化时代的必修课——京东云数据迁移实践
打破数据边界,是数字化时代常挂在嘴边的一句话,数据的价值是在流动中体现的,数据应用也是如此。以往为了满足开发、测试、数据保护容灾和数据分析的需要,我们不断对数据进行复制、备份、迁移,因此数据迁移非常重要。 混合多云时代,用户数据迁移需求与场景激增 今天我们来重点聊聊混合云时代中数据迁移,先来看看常见的几种企业数据迁移的需求与场景: 传统云化型:设备老旧,需要升级,硬件成本升级性价比不高,云上更经济; 价格敏感型:综合对比多家厂商价格,灵活选型采用成本最优方案; 灾备驱动型:需要多云、异构云来架构自己的灾备体系,保证数据的安全 游戏客户:异地开服,服务不同地域的用户,因各地网络质量不一致需要多云模式用于构建服务本地用户的游戏服务器。 泛金融客户:要符合金融安全政策的要求,需要数据的迁移 这些客户都因系统和技术升级、业务的发展、以及安全合规等因素采用混合多云的方案,同时对其数据的迁移有着很高的诉求,在不同的业务模式和需求下也会面临多种问题。 混合多云时代下,数据迁移的困境 数据库的发展多样性提升迁移门槛 混合多云时代,迁移是面临的一大难题,其中数据安全迁移往往又是企业最关注的。提到数据迁移...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Linux系统CentOS6、CentOS7手动修改IP地址
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,8上快速安装Gitea,搭建Git服务器