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

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

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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容