Kubernetes: Controller 概述

170 阅读3分钟

什么是控制器?Kubernetes 控制器简介

1.什么是 Kubernetes 控制器

Kubernetes 控制器一个控制循环,用于监视集群的状态,然后进行更改以使当前集群状态更接近所需状态。

转存失败,建议直接上传图片文件

控制回路

以下是控制循环实现的基本示例:

for {  
desired := getDesiredState()  
current := getCurrentState()  
makeChanges(desired, current)  
}

2. 期望状态与当前状态

几乎每个 Kubernetes对象都包含两个管理对象配置的嵌套对象字段: objectspec和 object status

  • spec描述了对象的所需状态,提供了您希望资源具有的特征的描述。

  • status描述了对象的当前状态,由 Kubernetes 系统及其组件提供和更新。

Kubernetes 控制器持续主动地管理每个对象的当前状态,以匹配您提供的所需状态

3. 控制器模式

控制器模式是一种主动监控并维护一组 Kubernetes 资源处于所需状态的模式。

Kubernetes 本身的核心由一组控制器组成,它们定期监视应用程序的当前状态并将其与所需状态进行协调。

该模式描述了如何利用这一核心概念来扩展我们自己的应用程序的平台。

4. Kubernetes 内置控制器

大量的 Kubernetes Controller 运行在 Control Plane 中的两个主要组件中:kube-controller-managercloud-controller-manager。

Kubernetes 集群的组件

kube 控制器管理器

从逻辑上讲,每个控制器都是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件并在单个进程中运行。

kube-controller-manager:一个二进制文件中的多个控制器

这些控制器的一些类型是:

  • 节点控制器:负责在节点出现故障时进行通知并做出响应。
  • 作业控制器:监视代表一次性任务的作业对象,然后创建 Pod 来运行这些任务直至完成。
  • Endpoints 控制器:填充 Endpoints 对象(即加入 Services 和 Pod)。
  • 服务帐户和令牌控制器:为新命名空间创建默认帐户和 API 访问令牌。

云控制器管理器

cloud-controller-manager 仅运行特定于您的云提供商的控制器,并允许您将集群链接到云提供商的 API。

云控制器管理器还将各种控制器组合成一个二进制文件,您可以将其作为单个进程运行。您可以水平扩展(运行多个副本)以提高性能或帮助容忍故障。

以下控制器可以具有云提供商依赖性:

  • 节点控制器:**用于检查云提供商以确定节点停止响应后是否已在云中删除
  • 路由控制器:用于在底层云基础设施中设置路由
  • 服务控制器:用于创建、更新和删除云提供商负载均衡器