`
lykops
  • 浏览: 86246 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

kubernetes资源对象--Label

 
阅读更多

本文基于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

分享到:
评论

相关推荐

    kubernetes-client-linux-amd64.tar.gz

    7. **Kubernetes资源调度**: - Scheduler:负责将Pod调度到合适的Node上,考虑资源需求、亲和性/反亲和性等因素。 - Node:运行Pod的物理或虚拟主机,需要运行kubelet、kube-proxy等组件。 总的来说,"kubectl...

    kubernetes-handbook-jimmysong-v1.3

    - **资源对象与基本概念**:包括Pod、Deployment、StatefulSet等资源对象的详细介绍和使用场景。 - **Pod状态与生命周期管理**:涵盖Pod的生命周期事件和管理策略,如Pod Hook、Preset、PDB(Pod中断预算)等。 ###...

    Kubernetes资源调度及管理详解

    在Kubernetes中,标签(Label)和选择器(Selector)是非常重要的元数据机制,它们被广泛应用于各种资源对象上。 - **标签**:标签是一种附加到API对象上的任意元数据,通常用来表示身份信息。通过标签,可以方便地...

    kubernetes-client.zip

    - 资源操作:创建、更新、删除、查询Kubernetes资源,如创建一个新的Deployment或查询现有Pod的状态。 - 事件监听:通过Watch接口,实时监听Kubernetes集群中的资源变化,如Pod的创建、重启或删除事件。 - 配置管理...

    Kubernetes开源书.pdf

    - **标签与选择器(Label and Selector)**: 标签用来标记Kubernetes资源,选择器用来选取一组具有相同标签的资源。 - **注解(Annotation)**: 附加元数据到Kubernetes对象上,通常用于存储非关键性的信息。 - **...

    kubernetes基础入门

    #### 二、资源对象 **2.1 Autoscaling** - **自动伸缩**: 介绍如何根据CPU利用率、内存使用情况等指标自动调整Pod的数量。 - **水平伸缩**: 根据预定义的指标自动增加或减少Pod的数量。 - **垂直伸缩**: 在不改变...

    kubernetes-handbook

    - **Namespace**:逻辑上的分隔符,用于组织集群中的资源对象,如Pods、Services等。 - **Service**:定义了一个逻辑上的“服务”,它是对一组Pods的抽象引用,提供了一个稳定的服务地址。 - **Volume和...

    kubernetes-使用文档.pdf

    Kubernetes支持多种资源对象,如ConfigMap(存储非敏感配置数据)、CronJob(定时任务)、CustomResourceDefinition(自定义资源)、DaemonSet(确保每个Node上至少运行一个Pod)、Deployment(声明式更新Pod)、...

    Kubernetes架构权威指南.pdf

    - **Kompose**:将Docker Compose文件转换为Kubernetes资源。 - **Skaffold**:快速迭代Kubernetes应用。 #### 八、实践案例 - **GitOps实践**:利用版本控制系统作为单一的真实来源,进行环境部署和更新。 - **...

    kubernetes中文文档

    介绍了 Kubernetes 中的各种资源对象,包括: - **Autoscaling**: 自动伸缩机制,如 Horizontal Pod Autoscaler。 - **ConfigMap**: 用于存储非机密性的配置数据。 - **CronJob**: 定期执行任务。 - **...

    kubunetes中文指南实践手册

    - **Label**:用于对Kubernetes资源进行分类和选择。 - **NetworkPolicy**:定义Pod间网络访问规则。 - **Annotation**:用于存储非关键性的元数据。 - **AggregatedAPIServer**:允许第三方扩展Kubernetes API...

    kubernetes常用命令表

    $ 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] .....

    kubernetes-examples:Kubernetes初学者示例

    YAML是Kubernetes的主要配置语言,它允许用户以人类可读的方式定义资源对象的属性。例如,一个Deployment YAML文件会定义应用的副本数量、镜像版本以及如何更新这些副本。 "lang:LICENSE"表明项目包含了开源许可...

    Kubernetes 开源知识.pdf

    Label 是 Kubernetes 中的一种标记机制,用于为资源对象添加元数据标签。通过 Label,用户可以灵活地选择和操作特定集合的资源。 - **Label 语法**:`<key>=<value>` 格式。 - **Label 选择器**:`kubectl get pods...

    stateful-kubernetes-slides

    1. **StatefulSets**:这是Kubernetes为有状态应用设计的资源对象,每个Pod有唯一的身份,保证了Pod的顺序创建、删除和更新,以及稳定的网络标识和持久卷挂载。 2. **Persistent Volumes (PV) 和 Persistent Volume...

Global site tag (gtag.js) - Google Analytics