美文网首页
【k8s-11】--编排之控制器模型

【k8s-11】--编排之控制器模型

作者: 一个热爱生活的好少年 | 来源:发表于2018-12-27 16:23 被阅读0次

    控制器:操作这些”集装箱“的逻辑,都是由它控制的。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80
    

    由上最简单的控制器对象deployment:保证了携带nginx标签的pod个数等于2.(多删少加)这些操作是kube-contraller-manager的组件,它是一系列控制器的集合。

    #源码
    $ cd kubernetes/pkg/controller/
    $ ls -d */              
    deployment/             job/                    podautoscaler/          
    cloud/                  disruption/             namespace/              
    replicaset/             serviceaccount/         volume/
    cronjob/                garbagecollector/       nodelifecycle/          replication/            statefulset/            daemon/
    ...
    

    我们的deployment也是其中一种。
    简易的待编排的对象:如下

    for {
      实际状态 := 获取集群中对象 X 的实际状态(Actual State)
      期望状态 := 获取集群中对象 X 的期望状态(Desired State)
      if 实际状态 == 期望状态{
        什么都不做
      } else {
        执行编排动作,将实际状态调整为期望状态
      }
    }
    

    实际状态:kubelet通过心跳汇报的容器状态和节点状态等
    期望状态:用户提交的YAML文件的配置。

    1.实际状态:deployment控制器从Etcd中获取到的所有携带”app:nginx“标签的pod,并统计。
    2.期望状态:Doployment对象Replicas字段的值就是期望状态。
    3.Doployment控制器将两个状态比较,并相应处理。


    image.png

    相关文章

      网友评论

          本文标题:【k8s-11】--编排之控制器模型

          本文链接:https://www.haomeiwen.com/subject/woyccqtx.html