Kubernetes基本概念之Label
在为对象定义好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的更多相关文章
- 容器技术研究-Kubernetes基本概念
最近在研究容器技术,作为入门,基本概念必须搞明白,今天整理一下Kubernetes的基本概念. 一.什么是Kubernetes Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部 ...
- Kubernetes重要概念理解
Kubernetes重要概念理解 kubernetes是目前最主流的容器编排工具,是下一代分布式架构的王者.2018年的kubernetes第一个版本1.10已经发布.下面整理一下,kubernete ...
- Kubernetes 核心概念
什么是Kubernetes? Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成K ...
- 十分钟带你理解Kubernetes核心概念
什么是Kubernetes? Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成K ...
- Kubernetes核心概念简介
本文将会简单介绍Kubernetes的核心概念.因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍.相反,我们会使用一些图表(其中一些是动画)和示例来解释这些概 ...
- Kubernetes基本概念之Name和NameSpace
在Kubernetes中,所有对象都会被指定一个唯一的Name和UID. 用户还可以指定一些不要求唯一性的数据附加到对象上,例如Label和Annotation. 1. Name Name是创建一个K ...
- 1-2、kubernetes架构概述和kubernetes基础概念
kubernetes https://draveness.me/understanding-kubernetes http://kubernetes.kansea.com/docs/ master/n ...
- 后端技术杂谈11:十分钟理解Kubernetes核心概念
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 本文转自 https://github.com/h2pl/Java-Tutorial 喜欢的 ...
- Kubernetes基本概念和术语之《Pod》
Pod是Kubernetes的最重要也最基本的概念.我们看到每个Pod都有一个特殊的被称为“根容器”的Pause容器对应的镜像属于Kubernetes平台的一部分.除了Pause容器,每个Pod还包含 ...
随机推荐
- 【Luogu】P3705新生舞会(费用流+分数规划+二分答案)
题目链接 本来以为自己可以做出来,结果……打脸了 (貌似来wc立了好几个flag了,都没竖起来) 不过乱蒙能蒙出一个叫“分数规划”的东西的式子还是很开心的 观察$C=\frac{a_{1}+a_{2} ...
- html 文本标签
文本格式化标签 标签 描述 <b> 定义粗体文本. <big> 定义大号字. <em> 定义着重文字. <i> 定义斜体字. <small> ...
- NOJ——1658平方和(自然数平方和公式和取模法则)
[1658] 平方和 时间限制: 1000 ms 内存限制: 65535 K 问题描述 给你两个数n和m,求从6开始到6*n的等差数列(差值为6)的每一项的平方的和除6模m的值 (例如n=2,m=3, ...
- animation总结
1. animation结束后停在最后一帧 animation-fill-mode : forwards | both; /* 或者 */ animation: anim1 1s linear for ...
- chromedriver对应的支持的Chrome版本(更新至Chrome64)
很多网友在配置chromedriver的时候会遇到很多麻烦,在网上找了很多资料觉得这个表格不错,就给大家分享出来,希望对大家配置chrome的时候有帮助: chromedriver版本 支持的Chro ...
- bzoj 1038 瞭望塔 半平面交+分段函数
题目大意 给你一座山,山的形状在二维平面上为折线 给出\((x_1,y_1),(x_2,y_2)...(x_n,y_n)\)表示山的边界点或转折点 现在要在\([x_1,x_n]\)(闭区间)中选择一 ...
- 应用js函数柯里化currying 与ajax 局部刷新dom
直接上代码吧 最近读javascript核心概念及实践的代码 感觉很有用 备忘. <div id="request"></div> <script t ...
- canvas之webgl的浏览器开启方式
引自百度知道的回答 1.开启方式: 第一种:打开cmd,切换到Chorme的安装目录,敲入chrome.exe --enable -webgl,回车就会打开一个chrome浏览器窗口: 第二种:找到C ...
- python3基础语法(标识符,注释,数据类型,获取用户输出,代码块,python保留字)
编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: # -*- coding: cp-1252 -*- ...
- linux .so .a .o 文件
linux下文件的类型是不依赖于其后缀名的,但一般来讲:.o,是目标文件,相当于windows中的.obj文件.so 为共享库,是shared object,用于动态连接的,和dll差不多.a为静态库 ...