- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章浅析kubernetes的控制器和标签由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
。
之前我们了解了Pod是k8s集群中调度的最小单元,Pod是由Pause容器+应用容器组成的.
在k8s中,经常会出现一种资源对象管理另一种资源对象的情况,我们把这类资源对象称之为"控制器".
我们简单看看控制器的类型,以及他们的功能,其实每种控制器都有他们的特点,后续我们会逐一分析,现在只需要有个概念即可.
RC控制器 。
它定义了一个期望的场景,它声明某种Pod的副本数量任意时刻都符合某个特定的预期值。例如MySQL的一主两从结构,我们期望,任意时刻都有2个从库,如果不够了,就需要扩充一个从库.
它的定义中,需要下面3个关键参数:
1、预期的Pod数量 。
2、Pod的标签,也就是一个类型标识 。
3、创建新Pod的Pod模板 。
它的大概结构如下:
apiVersion:vlkind: ReplicationControllermetadata: name: rc-mysql-slavespec : replicas: 2 # 期望值 selector: # 标签 app: mysql template: # 模板 xxx: xxx
对照上面的文字,可以看到RC的基本yaml文件模板.
RC一旦定义并提交到k8s的master,那么controller manager就会巡检当前存活的目标Pod,并确保当前存活的Pod等于期望的Pod,如果多了,则删除,如果少了,则创建.
Deployment控制器 。
它是k8s 1.2版本引入的新概念,这个控制器和RC控制器的相似程度达到了90%,它和RC的不同是它可以随时获取当前Pod的"部署进度"。它的yaml文件定义大概如下:
apiVersion: extensions / vlbetalkind : Deploymentmetadata: name: dep-mysql-slavespec: replicas: 2 selector: xxxx:xxxx template: xxxx:xxxx
有了Deployment之后,使用RC的场景几乎都可以使用Deployment来替代.
Statefulset控制器 。
这个控制器也是生成某些Pod的期望值,但是它与RC和Deployment的不同点在于,它生成的Pod是有状态的.
在RC和Deployment生成的Pod中,我们只需要生成期望值个Pod即可,类似1主2从架构中MySQL的2个从库一样。他们没有先后顺序、权重的概念。而Statefulset控制器控制的Pod,生成顺序或者权重存在一定的逻辑关系,例如MySQL主从架构中,需要先生成主节点,然后在生成从节点,这个时候,使用statefulset就比较合适.
常用的控制器类型还有一些,这些内容我们下次再详细分享,这里我们知道"控制器"的概念即可.
。
上一篇文章中,我们说了k8s中Pod的yaml文件中的几个关键字段,今天我们来看另外一个Pod的一个属性,就是Label.
Label的含义是标签,它的格式也是key-value格式的,它可以附加到k8s集群中的某个对象上,包括但不限于Pod,Node,RC等。资源对象和Label的绑定关系可以使一对一,也可以是多对一,不同的label可以对资源进行分组管理.
当我们给某个资源打上标签后,就可以使用标签选择器Label Selector来选择这个资源进行调度,如下:
apiVersion : vlkind: Podmetadata: name : myweb labels: app : mysql
上面的例子为我们定义一个Pod,它的标签是app=mysql.
然后我们定义一个"控制器",利用控制器中的标签选择器selector,让它选择这个app=mysql的这个Pod,并保持这个Pod在集群中有2个副本,方法如下:
apiVersion : vlkind : ReplicationControllermetadata: name: mywebspec : replicas : 2 selector: app : mysql template: xxxx
新版本的Selector还可以指定更为详细的筛选条件,它主要借助下面参数:
apiVersion : vlkind : ReplicationControllermetadata: name: mywebspec : replicas : 1 selector: matchLabels : app: myweb matchExpressions: - {key: aaa , perator: In , values: [mysql-slave]} - {key: bbb , operator : Notin , values: [mysql-master)} template: xxxx
一个参数是matchLabels,他后面可以跟多个key-value格式的label条件; 。
另外一个参数是matchExpression,它可以指定一个数组,并结合条件运算,上述例子中表示aaa参数在mysql-slave中,而bbb参数不在mysql-master中的那些Pod 。
如果这两个参数同时出现,则会自动取AND,以他们的交集作为最终的筛选条件去筛选Pod 。
可以看到,标签的使用,使得"控制器"选择被控制对象,更加灵活,更加方便了.
以上就是浅析kubernetes的控制器和标签的详细内容,更多关于kubernetes 控制器和标签的资料请关注我其它相关文章! 。
最后此篇关于浅析kubernetes的控制器和标签的文章就讲到这里了,如果你想了解更多关于浅析kubernetes的控制器和标签的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
本文实例讲述了YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用。分享给大家供大家参考,具体如下: 在使用YII2中自带的RBAC时,需要先配置config/web.php:
添加路由 复制代码 代码如下: Route::get('artiles', 'ArticlesController@index'); 创建控制器
目录 一.系统环境 二.前言 三.StatefulSet简介 四.有状态应用和无状态应用区别 五.St
目录 一.系统环境 二.前言 三.Kubernetes 控制器 四.Deployment概览 五.创建
目录 一.系统环境 二.前言 三.DaemonSet 概览 四.创建DaemonSet 4
目录 一.系统环境 二.前言 三.ReplicationController概览 四.ReplicationCont
目录 一.系统环境 二.前言 三.ReplicaSet概览 四.ReplicaSet工作原理 五.Re
使用Yii2的时候,在某些场景和环境下需要获得Yii2目前所处于的module(模型)、Controller(控制器)、Action(方法),以及会调用控制器里面已经定义过的一些公共的方法等.对于这
我是一名优秀的程序员,十分优秀!