本文基于kubernetes 1.5.2版本编写
概念
Label机制是K8S中一个重要设计,通过Label进行对象弱关联,灵活地分类和选择不同服务或业务,让用户根据自己特定的组织结构以松耦合方式进行服务部署。
Label是一对KV,对用户而言非常有意义的,但对K8S本身而言没有直接意义的。Label可以在创建对象时指定,也可以在后期修改,每个对象可以拥有多个标签,但key值必须是唯一的。
Label可随意定义,但建议可读性,比如设置Pod的应用名称和版本号等。另外Lable是不具有唯一性的,为了更准确标识资源对象,应为资源对象设置多维度的label。如下:
"release" : "stable", "release" : "canary"
"environment" : "dev", "environment" : "qa", "environment" : "production"
"tier" : "frontend", "tier" : "backend", "tier" : "cache"
"partition" : "customerA", "partition" : "customerB"
"track" : "daily", "track" : "weekly"
语法和字符集
Label keys的语法
一个可选前缀+名称,通过/来区分
名称部分是必须的,并且最多63个字符,开始和结束的字符必须是字母或者数字,中间是字母数字和_、-、.。
前缀可选,如指定必须是个DNS子域,一系列的DNS label通过.来划分,长度不超过253个字符,“/”来结尾。如前缀被省略了,这个Label的key被假定为对用户私有的。系统组成部分(比如scheduler,controller-manager,apiserver,kubectl),必须要指定一个前缀,Kuberentes.io前缀是为K8S内核部分保留的。
label value语法
长度不超过63个字符。
可以为空
首位字符必须为字母数字字符
中间必须是横线、_、.、数字、字母。
Label选择器
label选择器(selector)是K8S中核心的组织原语,通过label选择器,客户端能方便辨识和选择一组资源对象。API目前支持两种选择器:基于相等的和基于集合的。
使用基于相等的选择器时,选择器的所有键值和其他资源对象的label键值完全相同(包括数量,key和value),才能匹配。
而使用基于集合的label选择器,只要选择器部分键值匹配其他资源对象的label,就算匹配。选择器可以由一个以上条件(KV键值)组成,在多个条件的情况下,所有条件都必须满足。
更新资源类型的Label
Label作为用户可灵活定义的对象属性,在已创建的对象上,仍然可以随时通过kubectl label命令对其进行增加、修改、删除等操作。 例如,我们要给已创建的Pod“redis-master-bobr0”添加一个标签role=backend:
kubectl label pod redis-master-bobr0 role=backend
kubectl get pods -L role
NAME READY STATUS RESTARTS AGE ROLE
redis-master-bobr0 1/1 Running 0 3m backend
删除一个Label,只需在命令行最后指定Label的key名并与一个减号相连即可:
kubectl label pod redis-master-bobr0 role-
修改一个Label的值,需要加上--overwrite参数: kubectl label pod redis-master-bobr0 role=master –overwrite
分享到:
相关推荐
7. **Kubernetes资源调度**: - Scheduler:负责将Pod调度到合适的Node上,考虑资源需求、亲和性/反亲和性等因素。 - Node:运行Pod的物理或虚拟主机,需要运行kubelet、kube-proxy等组件。 总的来说,"kubectl...
- **资源对象与基本概念**:包括Pod、Deployment、StatefulSet等资源对象的详细介绍和使用场景。 - **Pod状态与生命周期管理**:涵盖Pod的生命周期事件和管理策略,如Pod Hook、Preset、PDB(Pod中断预算)等。 ###...
在Kubernetes中,标签(Label)和选择器(Selector)是非常重要的元数据机制,它们被广泛应用于各种资源对象上。 - **标签**:标签是一种附加到API对象上的任意元数据,通常用来表示身份信息。通过标签,可以方便地...
- 资源操作:创建、更新、删除、查询Kubernetes资源,如创建一个新的Deployment或查询现有Pod的状态。 - 事件监听:通过Watch接口,实时监听Kubernetes集群中的资源变化,如Pod的创建、重启或删除事件。 - 配置管理...
- **标签与选择器(Label and Selector)**: 标签用来标记Kubernetes资源,选择器用来选取一组具有相同标签的资源。 - **注解(Annotation)**: 附加元数据到Kubernetes对象上,通常用于存储非关键性的信息。 - **...
#### 二、资源对象 **2.1 Autoscaling** - **自动伸缩**: 介绍如何根据CPU利用率、内存使用情况等指标自动调整Pod的数量。 - **水平伸缩**: 根据预定义的指标自动增加或减少Pod的数量。 - **垂直伸缩**: 在不改变...
- **Namespace**:逻辑上的分隔符,用于组织集群中的资源对象,如Pods、Services等。 - **Service**:定义了一个逻辑上的“服务”,它是对一组Pods的抽象引用,提供了一个稳定的服务地址。 - **Volume和...
Kubernetes支持多种资源对象,如ConfigMap(存储非敏感配置数据)、CronJob(定时任务)、CustomResourceDefinition(自定义资源)、DaemonSet(确保每个Node上至少运行一个Pod)、Deployment(声明式更新Pod)、...
- **Kompose**:将Docker Compose文件转换为Kubernetes资源。 - **Skaffold**:快速迭代Kubernetes应用。 #### 八、实践案例 - **GitOps实践**:利用版本控制系统作为单一的真实来源,进行环境部署和更新。 - **...
介绍了 Kubernetes 中的各种资源对象,包括: - **Autoscaling**: 自动伸缩机制,如 Horizontal Pod Autoscaler。 - **ConfigMap**: 用于存储非机密性的配置数据。 - **CronJob**: 定期执行任务。 - **...
- **Label**:用于对Kubernetes资源进行分类和选择。 - **NetworkPolicy**:定义Pod间网络访问规则。 - **Annotation**:用于存储非关键性的元数据。 - **AggregatedAPIServer**:允许第三方扩展Kubernetes API...
$ kubectl get (-f FILENAME | TYPE NAME) [--all-namespaces] [--field-selector=FIELD_SELECTOR] [--label-selector=LABEL_SELECTOR] [--show-labels] [--show-all] [--output=OUTPUT_FORMAT] [--dry-run=bool] .....
YAML是Kubernetes的主要配置语言,它允许用户以人类可读的方式定义资源对象的属性。例如,一个Deployment YAML文件会定义应用的副本数量、镜像版本以及如何更新这些副本。 "lang:LICENSE"表明项目包含了开源许可...
Label 是 Kubernetes 中的一种标记机制,用于为资源对象添加元数据标签。通过 Label,用户可以灵活地选择和操作特定集合的资源。 - **Label 语法**:`<key>=<value>` 格式。 - **Label 选择器**:`kubectl get pods...
1. **StatefulSets**:这是Kubernetes为有状态应用设计的资源对象,每个Pod有唯一的身份,保证了Pod的顺序创建、删除和更新,以及稳定的网络标识和持久卷挂载。 2. **Persistent Volumes (PV) 和 Persistent Volume...