K8s集群:标签和选择算符
一、k8s - label 介绍
label 介绍
官方:https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
label
是 Kubernetes
系统中一个核心概念,很多功能都是基于绑定 Label
来做选择。一个 Label
是 一个 key=value
的键值对,其中 key
与 value
由用户自己指定。Label
可以被 附加到各种资源对象上,例如 Node、Pod、Service、RC
等,一个资源对 象可以定义任意数量的 Label
,同一个 Label
也可以被添加到任意数量的 资源对象上。Label
通常在资源对象定义时确定,也可以在对象创建后 动态添加或者删除。
label
是附加到 Kubernetes
对象(比如 Pods)上的键值对。 标签旨在用于指定对用户有意义且相关的对象的标识属性,但不直接对核心系统有语义含义。 标签可以用于组织和选择对象的子集。标签可以在创建时附加到对象,随后可以随时添加和修改。 每个对象都可以定义一组键/值标签。每个键对于给定对象必须是唯一的。
我们可以通过给指定的资源对象捆绑一个或多个不同的 Label
来实 现多维度的资源分组管理功能,以便灵活、方便地进行资源分配、调 度、配置、部署等管理工作。例如,部署不同版本的应用到不同的环境 中;监控和分析应用(日志记录、监控、告警)等。一些常用的 Label
示例如下。
◎ 版本标签:”release”:”stable”
◎ 环境标 签:”environment”:”dev”、”environment”:”rc”
您可以指定自己项目中 Label
的 Key
,请记住,标签的 Key 对于给定对象必须是唯一的
label 管理
创建 label
标签的格式是 <Key: Value>
格式,标签的 Key
对于给定的值必须是唯一的。
命令式
给名为
datarc
的Pod
添加label
unhealthy=true
kubectl label pods datarc unhealthy=true
yaml式
1 | # 以下是一个有 environment: production 和 app: nginx 标签的 Pod 配置文件: |
kubectl apply -f pod-nginx-labels.yaml
kubectl get pods –show-labels
修改 label
给名为
datarc
的Pod
修改label
为'status' / value 'unhealthy'
,且覆盖现有的value
kubectl label –overwrite pods datarc status=unhealthy
给
namespace
中的所有Pod
添加label
kubectl label pods –all status=unhealthy
给命名空间中
ns-datarc
名为datarc
的Pod
添加label
app=datarc
kubelctl -n ns-datarc label pods datarc app=datarc
删除 label
删除名为 app
的 label
。(使用“ - ”减号相连)
kubel label pods datarc app-
有效标签值:
- 必须为 63 个字符或更少(可以为空)
- 除非标签值为空,必须以字母数字字符(
[a-z0-9A-Z]
)开头和结尾 - 包含破折号(
-
)、下划线(_
)、点(.
)和字母或数字
二、 Selector
Selector(标签选择器):
label(标签)不具唯一性。一般来说,我们可以说许多对象可以带有相同的标签。标签选择器是 Kubernetes 中的核心分组。用户使用它们来选择一组对象。通过一个过滤的语法查找到对应标签的资源
一旦我们使用kubectl
命令运行该文件,它将创建一个名为sp-nginx-standalone
的服务,该服务将在8080
端口上进行通信。type
为NodePort
,新的标签选择器为app: service
和component: nginx
。
1 | # 将 label 标签选择器用作 app: service ,将 component 组件用作 component: nginx : |