配置控制器
Karmada 维护了一系列包含控制循环的控制器,它们监视系统状态,然后在需要时进行更改或请求更改。 每个控制器都尝试将当前状态转换为更接近期望状态。有关更多详细信息,请参考 Kubernetes 控制器概念。
Karmada 控制器
这些控制器嵌入在 karmada-controller-manager 或 karmada-agent 的组件中,并且将随这些组件一起启动。
一些控制器可能由 karmada-controller-manager 和 karmada-agent 共享。
| 控制器 | 在 karmada-controller-manager 中 | 在 karmada-agent 中 |
|---|---|---|
| cluster | 是 | 否 |
| clusterStatus | 是 | 是 |
| binding | 是 | 否 |
| bindingStatus | 是 | 否 |
| execution | 是 | 是 |
| workStatus | 是 | 是 |
| namespace | 是 | 否 |
| serviceExport | 是 | 是 |
| endpointSlice | 是 | 否 |
| serviceImport | 是 | 否 |
| unifiedAuth | 是 | 否 |
| federatedResourceQuotaSync | 是 | 否 |
| federatedResourceQuotaStatus | 是 | 否 |
| gracefulEviction | 是 | 否 |
| certRotation | 否 | 是(默认禁用) |
| applicationFailover | 是 | 否 |
| federatedHorizontalPodAutoscaler | 是 | 否 |
| cronFederatedHorizontalPodAutoscaler | 是 | 否 |
| hpaScaleTargetMarker | 是(默认禁用) | 否 |
| deploymentReplicasSyncer | 是(默认禁用) | 否 |
| multiclusterservice | 是 | 否 |
| endpointsliceCollect | 是 | 是 |
| endpointsliceDispatch | 是 | 否 |
| remedy | 是 | 否 |
| workloadRebalancer | 是 | 否 |
| agentcsrapproving | 是 | 否 |
配置 Karmada 控制器
您可以使用 --controllers 标志为 karmada-controller-manager 和 karmada-agent 指定启用的控制器列表,或者在默认列表中禁用其中一些。
例如: 指定控制器列表:
--controllers=cluster,clusterStatus,binding,xxx
例如:禁用某些控制器(如果要保留默认列表中的其余控制器,请记得保留 *):
--controllers=-hpa,-unifiedAuth,*
使用 -foo 禁用名为 foo 的控制器。
注意:默认的控制器列表可能会在将来的版本中更改。 上一个版本中启用的控制器可能会被禁用或弃用,同时也可能会引入新的控制器。 使用此标志的用户应该在系统升级之前查看发布说明。
Kubernetes 控制器
除了由 Karmada 社区维护的控制器之外,Karmada 还需要来自 Kubernetes 的一些控制器。
这些控制器作为 kube-controller-manager 的一部分运行,并由 Kubernetes 社区维护。
建议用户将 kube-controller-manager 与 Karmada 组件一起部署。
installation guide 中的安装方法将帮助您部署它以及 Karmada 组件。
必需的控制器
并非 kube-controller-manager 中的所有控制器都对 Karmada 是必需的。如果您使用其他工具部署 Karmada,则可能需要像我们在
example of kube-controller-manager deployment中所做的那样通过 --controllers 标志来配置控制器。
以下控制器已由 Karmada 进行测试并推荐使用。