浅析kubernetes的控制器和标签

 更新时间:2021年04月01日 14:08:30   作者:DBA随笔  
这篇文章主要介绍了kubernetes的控制器和标签的相关资料,帮助大家更好的理解和学习使用k8s,感兴趣的朋友可以了解下

01 k8s中的常用控制器

      之前我们了解了Pod是k8s集群中调度的最小单元,Pod是由Pause容器+应用容器组成的。

      在k8s中,经常会出现一种资源对象管理另一种资源对象的情况,我们把这类资源对象称之为"控制器"。

      我们简单看看控制器的类型,以及他们的功能,其实每种控制器都有他们的特点,后续我们会逐一分析,现在只需要有个概念即可。

RC控制器

     它定义了一个期望的场景,它声明某种Pod的副本数量任意时刻都符合某个特定的预期值。例如MySQL的一主两从结构,我们期望,任意时刻都有2个从库,如果不够了,就需要扩充一个从库。

     它的定义中,需要下面3个关键参数:

1、预期的Pod数量

2、Pod的标签,也就是一个类型标识

3、创建新Pod的Pod模板

     它的大概结构如下:

apiVersion:vl
kind: ReplicationController
metadata:
    name: rc-mysql-slave
spec :
    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 / vlbetal
kind : Deployment
metadata:
    name: dep-mysql-slave
spec:
    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就比较合适。

常用的控制器类型还有一些,这些内容我们下次再详细分享,这里我们知道"控制器"的概念即可。

02 Label(标签)的概念

      上一篇文章中,我们说了k8s中Pod的yaml文件中的几个关键字段,今天我们来看另外一个Pod的一个属性,就是Label。

       Label的含义是标签,它的格式也是key-value格式的,它可以附加到k8s集群中的某个对象上,包括但不限于Pod,Node,RC等。资源对象和Label的绑定关系可以使一对一,也可以是多对一,不同的label可以对资源进行分组管理。

       当我们给某个资源打上标签后,就可以使用标签选择器Label Selector来选择这个资源进行调度,如下:

apiVersion : vl
kind: Pod
metadata:
    name : myweb
    labels:
       app : mysql

上面的例子为我们定义一个Pod,它的标签是app=mysql。

然后我们定义一个"控制器",利用控制器中的标签选择器selector,让它选择这个app=mysql的这个Pod,并保持这个Pod在集群中有2个副本,方法如下:

apiVersion : vl
kind : ReplicationController
metadata:
    name: myweb
spec :
    replicas : 2
    selector:
        app : mysql
    template:
        xxxx

新版本的Selector还可以指定更为详细的筛选条件,它主要借助下面参数:

apiVersion : vl
kind : ReplicationController
metadata:
    name: myweb
spec :
    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 控制器和标签的资料请关注脚本之家其它相关文章!

相关文章

  • 详解kubelet 创建pod流程代码图解及日志说明

    详解kubelet 创建pod流程代码图解及日志说明

    这篇文章主要为大家介绍了详解kubelet 创建pod流程代码图解及日志说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 不同k8s集群间服务如何相互访问实现详解

    不同k8s集群间服务如何相互访问实现详解

    这篇文章主要为大家介绍了不同k8s集群间服务如何相互访问实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 玩客云内置EMMC存储刷入Armbian系统(图文详解)

    玩客云内置EMMC存储刷入Armbian系统(图文详解)

    Armbian是其他项目可以信赖的单板计算机(SBC)的基本操作系统平台,接下来通过本文给大家介绍玩客云内置EMMC存储刷入Armbian系统,需要的朋友可以参考下
    2022-05-05
  • KubeSphere分级管理实践及解析

    KubeSphere分级管理实践及解析

    这篇文章主要为大家介绍了KubeSphere分级管理实践及解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • k8s部署Pyroscope并分析golang性能瓶颈(最新推荐)

    k8s部署Pyroscope并分析golang性能瓶颈(最新推荐)

    这篇文章主要介绍了k8s部署Pyroscope并分析golang性能瓶颈,Pyroscope支持多种编程语言并提供了丰富的性能数据,可以帮助我们跟踪应用程序的执行情况,并根据收集到的数据来识别性能瓶颈,需要的朋友可以参考下
    2023-04-04
  • K8S Operator部署及自定义详解

    K8S Operator部署及自定义详解

    这篇文章主要为大家介绍了K8S Operator部署及自定义详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Rainbond对前端项目Vue及React的持续部署

    Rainbond对前端项目Vue及React的持续部署

    这篇文章主要为大家介绍了Rainbond对前端项目Vue及React的持续部署,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • k8s常用命令大全(最新推荐)

    k8s常用命令大全(最新推荐)

    这篇文章主要介绍了k8s常用命令大全,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • k8s pod如何使用sriov

    k8s pod如何使用sriov

    这篇文章主要介绍了k8s pod如何使用sriov问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 在K8S中实现会话保持的两种方案

    在K8S中实现会话保持的两种方案

    这篇文章主要介绍了在K8S中实现会话保持的两种方案,每种方案结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论