4.1 controller-manager 介绍

想系统学习k8s源码,云原生的可以加:mkjnnm

背景

在Kubernetes 集群中,Controller通过 API Server提供的(List & Watch)接口实时监控集群中资源对象的状态变化,当发生故障,导致资源对象的状态变化时,Controller会尝试将其状态调整为期望的状态。

比如当某个Pod出现故障时,Deployment Controller会及时发现故障并执行自动化修复流程,确保集群里的Pod始终处于预期的工作状态。

工作原理

Kubernetes控制器是通过定期重复执行如下 3 个步骤来完成控制任务的:

  1. 从API Server读取资源对象的期望状态和当前状态。
  2. 比较两者的差异,然后运行控制器操作现实中的资源对象,将资源对象的真实状态修正为Spec中定义的期望状态。
  3. 变动执行成功后,将结果状态写回到在API Server上的目标资源对象的status字段中。

常见的 Controller

Kubernetes 中内置了许多 Controller,Controller Manager是这些 Controller 的管理者,当资源状态发生变化时,Controller Manager 会通知这些 Controller 做出决策和执行操作。

  • Deployment Controller:负责部署和管理 Pod 副本。
  • ReplicaSet Controller:负责管理 Pod 副本的数量。
  • DaemonSet Controller:确保每个节点都运行指定的 Pod。
  • Job Controller:负责执行一次性任务。
  • CronJob Controller:负责按照指定的频率执行任务。
  • StatefulSet Controller:确保 Pod 的顺序性和持久性。
  • Garbage collector Controller:负责回收kubernetes中的资源对象,监听资源对象事件,更新对象之间的依赖关系,并根据对象的删除策略来决定是否删除其关联对象。

Deployment

管理一组Pod,假设设置副本数 replicas=2,这时 node01和node02上会各自分配一个Pod,现在将node02关闭,则会发现node01上会部署两个Pod。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: test
  labels:
    app: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-deployment-tp
  template:
    metadata:
      labels:
        app: nginx-deployment-tp
    spec:
      containers:
        - name: nginx
          image: nginx
          imagePullPolicy: IfNotPresent
      tolerations:
        - key: "node.kubernetes.io/unreachable"
          operator: "Exists"
          effect: "NoExecute"
          tolerationSeconds: 30

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值