系列目录

在为对象定义好Label后,其他对象就可以通过Label来对对象进行引用。Label的最常见的用法便是通过spec.selector来引用对象。

apiVersion: v1
kind: ReplicationController
metadata:
name: nginx
spec:
replicas: 3
selector:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80

关于Label的用法重点在于这两步:

  • 通过template.metadata.labels字段为即将新建的Pod附加Label。在上面的例子中,新建了一个名称为nginx的Pod,它拥有一个键值对为app:nginx的Label。

  • 通过spec.selector字段来指定这个RC管理哪些Pod。在上面的例子中,新建的RC会管理所有拥有app:nginxLabel的Pod。这样的spec.selector在Kubernetes中被称作Label Selector

1.1. Label的定义

我们通常使用metadata.labels字段,来为对象添加Label。Label可以为多个。一个简单的例子如下:

apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
release: stable
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80

上面的描述文件为名为nginx的Pod添加了两个Label,分别为app: nginx和release: stable。

注: label为任意键值对,只要selector在选择的时候匹配即可

1.1.1. 常见的Label

一般来说,我们会给一个Pod(或其他对象)定义多个Label,以便于配置,部署等管理工作。例如:部署不同版本的应用到不同的环境中;或者监控和分析应用(日志记录,监控,报警等)。通过多个Label的设置,我们就可以多维度的Pod或其他对象进行精细化管理。一些常用的Label示例如下:

relase: stable
release: canary
environment: dev
environemnt: qa
environment: production
tier: frontend
tier: backend
tier: middleware
......

上面说过,Label是自定义的一些key/value对,你可以随心所欲的设置,但是强烈建议按照一定的惯例或者组织内部规则,以便维护管理

1.2. Label Selector

带有Label的对象创建好之后,我们就可以通过Label Selector来引用这些对象。

通常我们通过描述文件中的spec.selector字段来指定Label,从而Kubernetes寻找到所有包含你指定Label的对象,进行管理。

Kubernetes目前支持两种类型的Label Selector:

  • 基于等式的Selector(Equality-based)
  • 基于集合的Selector(Set-based)

RC只支持基于等式的Selector,而RS两种Selector都支持。而RC是很早版本就建议弃用的特征,因此实际项目中强烈建议使用Deployment来代替Repliation Controller (RC)

1.2.1. 基于等式的Selector

上文中创建RC的例子中的使用的就是基于等式的Selector。基于等式的Selector通过等式类的表达式来进行筛选。例如:

  • app=nginx 选择所有Label中key为app,value为nginx的对象。
  • env!=dev 选择所有Label中key为env,value不等于dev的对象。

1.2.2. 基于集合的Selector

基于集合的Selector通过集合操作的表达式来进行筛选。例如

  • name in (redis-master, redis-slave) 选择所有Label中key为name,并且value为redis-master或redis-slave的对象。

  • env not in (dev) 选择所有Label中key为env,并且value不为dev的对象。

使用Label可以给对象创建一组或多组标签,Service,ReplicationController ReplicaSet,Deployment等组件则通过Label Selector来定位需要管理的对象,Label和Label Selector共同构成了Kubernetes系统中最核心的应用模型,使得对象能够精细分组,同时实现了集群的高可用性。

Kubernetes基本概念之Label的更多相关文章

  1. 容器技术研究-Kubernetes基本概念

    最近在研究容器技术,作为入门,基本概念必须搞明白,今天整理一下Kubernetes的基本概念. 一.什么是Kubernetes Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部 ...

  2. Kubernetes重要概念理解

    Kubernetes重要概念理解 kubernetes是目前最主流的容器编排工具,是下一代分布式架构的王者.2018年的kubernetes第一个版本1.10已经发布.下面整理一下,kubernete ...

  3. Kubernetes 核心概念

    什么是Kubernetes? Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成K ...

  4. 十分钟带你理解Kubernetes核心概念

    什么是Kubernetes? Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成K ...

  5. Kubernetes核心概念简介

    本文将会简单介绍Kubernetes的核心概念.因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍.相反,我们会使用一些图表(其中一些是动画)和示例来解释这些概 ...

  6. Kubernetes基本概念之Name和NameSpace

    在Kubernetes中,所有对象都会被指定一个唯一的Name和UID. 用户还可以指定一些不要求唯一性的数据附加到对象上,例如Label和Annotation. 1. Name Name是创建一个K ...

  7. 1-2、kubernetes架构概述和kubernetes基础概念

    kubernetes https://draveness.me/understanding-kubernetes http://kubernetes.kansea.com/docs/ master/n ...

  8. 后端技术杂谈11:十分钟理解Kubernetes核心概念

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 本文转自 https://github.com/h2pl/Java-Tutorial 喜欢的 ...

  9. Kubernetes基本概念和术语之《Pod》

    Pod是Kubernetes的最重要也最基本的概念.我们看到每个Pod都有一个特殊的被称为“根容器”的Pause容器对应的镜像属于Kubernetes平台的一部分.除了Pause容器,每个Pod还包含 ...

随机推荐

  1. 【bzoj3307】雨天的尾巴 权值线段树合并

    题目描述 N个点,形成一个树状结构.有M次发放,每次选择两个点x,y,对于x到y的路径上(含x,y)每个点发一袋Z类型的物品.完成所有发放后,每个点存放最多的是哪种物品. 输入 第一行数字N,M接下来 ...

  2. ie7中position:fixed定位后导致margin:0 auto;无效

    布局网页时,需要把header固定在上方.直接使用position:fixed;现代浏览器以及ie8以上均正常显示,但是ie7中,header里面的子元素设置的水平居中并没有效果.做了各种尝试,都没有 ...

  3. 面试题之redis单线程为什么性能很高

    原因是,使用了多路复用技术. 什么是多路复用技术:多个客户端使用一个信道,并且通过一个信道进行传输

  4. Docker 使用指南—— 基本操作

    版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/98来源:腾云阁 https://www.qcloud ...

  5. net4:Panel动态添加控件及隐藏,Table动态创建表格

    原文发布时间为:2008-07-29 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...

  6. postgresql 10 ltree 使用说明

    官方文档 https://www.postgresql.org/docs/10/static/ltree.html ltree是俄罗斯Teodor Sigaev和Oleg Bartunov共同开发的P ...

  7. java中线程切换的开销

    思路: 开三个线程A,B,C 线程A不断的调用LockSupport.park()阻塞自己,一旦发现自己被唤醒,调用Thread.interrupted()清除interrupt标记位,同时增加自增计 ...

  8. Xamarin.Forms支持的地图显示类型

    Xamarin.Forms支持的地图显示类型   在Xamarin.Forms中,专门提供了一个Map视图,用来显示地图.根据用户的需求不同,该视图支持三种地图显示类型,用户可以通过Map视图提供的M ...

  9. about乘法逆元

    本博客部分摘自   hwim 定义 乘法逆元的定义:若存在正整数a,b,p, 满足ab = 1(mod p), 则称a 是b 的乘法逆元, 或称b 是a 的乘法逆元.b ≡ a-1 (mod p),a ...

  10. 天天算法————快排及java实现。

    快排说的很邪乎,原理懂了,实现自然也就出来了: public void static quickSorted( int[] a ,int low ,int high){ //递归结束条件 if(low ...