中小型网站建设与管理设计总结,注册会计师协会,中国工程造价网官网,网页的设计与制作在机器人技术和自动化领域#xff0c;控制回路#xff08;Control Loop#xff09;是一个非终止回路#xff0c;用于调节系统状态。这是一个控制环的例子#xff1a;房间里的温度自动调节器。当你设置了温度#xff0c;告诉了温度自动调节器你的期望状态#xff08;Desi…在机器人技术和自动化领域控制回路Control Loop是一个非终止回路用于调节系统状态。这是一个控制环的例子房间里的温度自动调节器。当你设置了温度告诉了温度自动调节器你的期望状态Desired State。 房间的实际温度是当前状态Current State。 通过对设备的开关控制温度自动调节器让其当前状态接近期望状态。在 Kubernetes 中控制器通过监控集群 的公共状态并致力于将当前状态转变为期望的状态。控制器模式一个控制器至少追踪一种类型的 Kubernetes 资源。这些 对象 有一个代表期望状态的 spec 字段。 该资源的控制器负责确保其当前状态接近期望状态。控制器可能会自行执行操作在 Kubernetes 中更常见的是一个控制器会发送信息给 API 服务器这会有副作用。 具体可参看后文的例子。通过 API 服务器来控制Job 控制器是一个 Kubernetes 内置控制器的例子。 内置控制器通过和集群 API 服务器交互来管理状态。Job 是一种 Kubernetes 资源它运行一个或者多个 Pod 来执行一个任务然后停止。 一旦被调度了对 kubelet 来说 Pod 对象就会变成了期望状态的一部分。在集群中当 Job 控制器拿到新任务时它会保证一组 Node 节点上的 kubelet 可以运行正确数量的 Pod 来完成工作。 Job 控制器不会自己运行任何的 Pod 或者容器。Job 控制器是通知 API 服务器来创建或者移除 Pod。 控制面中的其它组件 根据新的消息作出反应调度并运行新 Pod并且最终完成工作。创建新 Job 后所期望的状态就是完成这个 Job。Job 控制器会让 Job 的当前状态不断接近期望状态创建为 Job 要完成工作所需要的 Pod使 Job 的状态接近完成。控制器也会更新配置对象。例如一旦 Job 的工作完成了Job 控制器会更新 Job 对象的状态为 Finished。这有点像温度自动调节器关闭了一个灯以此来告诉你房间的温度现在到你设定的值了。直接控制相比 Job 控制器有些控制器需要对集群外的一些东西进行修改。例如如果你使用一个控制回路来保证集群中有足够的 节点那么控制器就需要当前集群外的 一些服务在需要时创建新节点。和外部状态交互的控制器从 API 服务器获取到它想要的状态然后直接和外部系统进行通信 并使当前状态更接近期望状态。实际上有一个控制器 可以水平地扩展集群中的节点。这里的重点是控制器做出了一些变更以使得事物更接近你的期望状态 之后将当前状态报告给集群的 API 服务器。 其他控制回路可以观测到所汇报的数据的这种变化并采取其各自的行动。在温度计的例子中如果房间很冷那么某个控制器可能还会启动一个防冻加热器。 就 Kubernetes 集群而言控制面间接地与 IP 地址管理工具、存储服务、云驱动 APIs 以及其他服务协作通过扩展 Kubernetes 来实现这点。期望状态与当前状态Kubernetes 采用了系统的云原生视图并且可以处理持续的变化。在任务执行时集群随时都可能被修改并且控制回路会自动修复故障。 这意味着很可能集群永远不会达到稳定状态。只要集群中的控制器在运行并且进行有效的修改整体状态的稳定与否是无关紧要的。设计作为设计原则之一Kubernetes 使用了很多控制器每个控制器管理集群状态的一个特定方面。 最常见的一个特定的控制器使用一种类型的资源作为它的期望状态 控制器管理控制另外一种类型的资源向它的期望状态演化。 例如Job 的控制器跟踪 Job 对象以发现新的任务和 Pod 对象以运行 Job然后查看任务何时完成。 在这种情况下新任务会创建 Job而 Job 控制器会创建 Pod。使用简单的控制器而不是一组相互连接的单体控制回路是很有用的。 控制器会失败所以 Kubernetes 的设计正是考虑到了这一点。说明可以有多个控制器来创建或者更新相同类型的对象。 在后台Kubernetes 控制器确保它们只关心与其控制资源相关联的资源。例如你可以创建 Deployment 和 Job它们都可以创建 Pod。 Job 控制器不会删除 Deployment 所创建的 Pod因为有信息 标签让控制器可以区分这些 Pod。运行控制器的方式Kubernetes 内置一组控制器运行在 kube-controller-manager 内。 这些内置的控制器提供了重要的核心功能。Deployment 控制器和 Job 控制器是 Kubernetes 内置控制器的典型例子。 Kubernetes 允许你运行一个稳定的控制平面这样即使某些内置控制器失败了 控制平面的其他部分会接替它们的工作。你会遇到某些控制器运行在控制面之外用以扩展 Kubernetes。 或者如果你愿意你也可以自己编写新控制器。 你可以以一组 Pod 来运行你的控制器或者运行在 Kubernetes 之外。 最合适的方案取决于控制器所要执行的功能是什么。