作者:Gauss松鼠会 2022-09-05 08:26:29
云计算
云原生 所谓标签就是指一个键值数据,在 k8s 上任何资源都可以拥有标签;我们可以在创建资源时在配置清单中指定,也可以创建好资源以后再使用命令添加标签。
成都创新互联长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为三山企业提供专业的做网站、网站设计,三山网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
我们知道使用 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 即可。
要学习 k8s 标签,需要从以下几个方面来学习。 首先,我们需要知道什么是 k8s 标签。
在 k8s 中,标签(Labels)是附加到 k8s 对象(比如 Pods)上的键值对。
标签的一个示例如下所示:
“metadata”:{
“labels”:{
“key1” : ”value1”
“key2” : ”value2”
}
}
标签的作用主要有两点:
标签的特点主要有如下三点:
设计标签的主要目的是使用户能够以松耦合的方式将他们自己的组织结构映射到系统对象,而无需客户端存储这些映射。
有如下几个示例标签,例如:
在区分发行版本的时候,可以指定:
在定义运行环境时,可以指定:
接着,我们来学习下标签的语法。
示例:是一个有 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
然后,我们来学习下标签选择运算符。 标签选择运算符分为两种:
最后,我们来学习下如何使用 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
标签 label:
标签选择器 label selector:
name=name1
name!=name1
name in (name1,name2)
name not in (name1,name2)
(1) 帮助:
kubectl label --help
(2) 打标签:
pod:kubectl label pods busybox app=busybox
node:kubectl label node k8s-node01 k8s-node02 env=test
(3) 查看:
kubectl get pods busybox --show-labels
kubectl get pods --show-labels
kubectl get pods -n kube-system --show-labels
(4) 更新:
加上–overwrite 参数修改标签:
kubectl get pods -n kube-system --show-labels
(5) 通过标签筛选:
kubectl get pods -l app
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-
(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 标签的介绍。
文章名称:Kubernetes(k8s)标签详解
转载注明:http://www.36103.cn/qtweb/news12/16362.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联