The*_*tso 6 kubernetes devops kubernetes-pod
看了kubernetes.io上的官方文档,我还是想知道 Kubernetes 中 label 和 selector 到底有什么区别?
编辑:例如考虑以下 Kubernetes 对象,以下 yaml 文件的 Labels 和 Selectors 有什么区别。
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: label-demo
labels:
environment: production
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: App1
template:
metadata:
labels:
environment: production
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
Run Code Online (Sandbox Code Playgroud)
Str*_*ker 14
标签是我们可以附加到每个项目的属性,例如其类型、种类等。
\n选择器帮助我们找到这些项目。您可以将选择器视为过滤器。
\n我们可以根据一些属性来标记 Pod,例如应用程序名称、前端、后端。
\n要仅选择带有“front-end”标签的 Pod,您可以使用关键字选择器进行过滤。
\n我们在 kubernetes、pod、节点、服务、复制、部署等中有不同类型的对象。\n随着时间的推移,这些对象会不断增长,我们需要一种方法来按不同类别过滤它们,例如按类型(pod)对它们进行分组或查看按应用程序名称(app1、app2)或其功能(前端、后端等)划分对象。
\n\n这些是标签:
\n\n在此示例中,一旦创建了 pod,我们就可以使用带有选择器选项的 kubectl 来查看带有这些标签的 pod。
\n\n\n注意:标签是键值对,如图所示(应用程序:App1)
\n这是如何根据标签(env、bu 代表业务部门,最后是所有对象)选择 pod 的另一个示例
\ncontrolplane ~ \xe2\x9e\x9c kubectl get pods --selector env=dev\nNAME READY STATUS RESTARTS AGE\ndb-1-d2rmb 1/1 Running 0 33m\napp-1-cxw9j 1/1 Running 0 33m\napp-1-gd9bb 1/1 Running 0 33m\napp-1-rlxdz 1/1 Running 0 33m\ndb-1-5xxlc 1/1 Running 0 33m\ndb-1-gkflt 1/1 Running 0 33m\ndb-1-lpd5d 1/1 Running 0 33m\n\ncontrolplane ~ \xe2\x9e\x9c \n\ncontrolplane ~ \xe2\x9e\x9c kubectl get pods --selector bu=finance\nNAME READY STATUS RESTARTS AGE\ndb-2-kkhkb 1/1 Running 0 34m\napp-1-cxw9j 1/1 Running 0 34m\napp-1-gd9bb 1/1 Running 0 34m\napp-1-zzxdf 1/1 Running 0 34m\napp-1-rlxdz 1/1 Running 0 34m\nauth 1/1 Running 0 34m\n\ncontrolplane ~ \xe2\x9e\x9c kubectl get all --selector env=prod\nNAME READY STATUS RESTARTS AGE\npod/db-2-kkhkb 1/1 Running 0 34m\npod/app-1-zzxdf 1/1 Running 0 34m\npod/app-2-ptvcv 1/1 Running 0 34m\npod/auth 1/1 Running 0 34m\n\nNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\nservice/app-1 ClusterIP 10.43.28.163 <none> 3306/TCP 34m\n\nNAME DESIRED CURRENT READY AGE\nreplicaset.apps/db-2 1 1 1 34m\nreplicaset.apps/app-2 1 1 1 34m\n\ncontrolplane ~ \xe2\x9e\x9c kubectl get all --selector env=prod,bu=finance,tier=frontend\nNAME READY STATUS RESTARTS AGE\npod/app-1-zzxdf 1/1 Running 0 34m\n
Run Code Online (Sandbox Code Playgroud)\n
标签是附加到对象(例如 pod)的键/值对。标签旨在用于指定对用户有意义和相关的对象的标识属性,但不直接暗示核心系统的语义。标签可用于组织和选择对象的子集。
通过标签选择器,客户端/用户可以识别一组对象。标签选择器是 Kubernetes 中的核心分组原语。
简而言之,标签选择器依靠标签来选择一组资源,例如 pod。例如,部署通过部署规范中的标签选择器选择一组 pod。
归档时间: |
|
查看次数: |
3571 次 |
最近记录: |