群集扩展
Helm 图表提供定义、安装和升级最复杂的 Kubernetes 应用程序所需的构建基块,有助于管理 Kubernetes 应用程序。
群集扩展功能在 Helm 的打包组件的基础上进行构建。 借助扩展,可以使用 Azure 资源管理器驱动的体验在 Kubernetes 群集上安装不同的功能并对它们进行生命周期管理。
群集操作员或管理员可以使用群集扩展功能来实现以下目的:
- 在 Kubernetes 群集上安装和管理密钥管理、数据与应用程序产品/服务。
- 使用 Azure Policy 跨环境中的所有群集自动大规模部署群集扩展。
- 订阅每个扩展的版本序列(例如预览版或稳定版)。
- 为扩展设置自动升级,或固定为特定的版本并手动升级版本。
- 更新扩展属性或删除扩展实例。
扩展可用于支持各种 Azure 服务和方案。 如需当前支持的扩展的列表,请参阅已启用 Azure Arc 的 Kubernetes 群集的可用扩展。
体系结构
群集扩展实例基于 Azure 资源管理器中已启用 Azure Arc 的 Kubernetes 资源(由 Microsoft.Kubernetes/connectedClusters
表示)创建为扩展 Azure 资源管理器资源 (Microsoft.KubernetesConfiguration/extensions
)。
Azure 资源管理器中的此表示方式让你可以创作一个策略,用于检查所有已启用 Azure Arc 的 Kubernetes 资源,无论这些资源是否具有特定群集扩展。 确定缺少具有所需属性值的群集扩展的群集后,可以使用 Azure Policy 修正这些不符合的资源。
群集中运行的 config-agent
跟踪已启用 Azure Arc 的 Kubernetes 资源上的新增和更新的扩展资源。 群集中运行的 extensions-manager
代理会读取需要安装的扩展类型,然后从 Azure 容器注册表拉取关联的 Helm 图表,并将其安装在群集上。
群集中运行的 config-agent
和 extensions-manager
组件处理扩展实例更新、版本更新和扩展实例删除。 这些代理使用群集的系统分配托管标识来安全地与 Azure 服务通信。
注意
config-agent
检查已启用 Azure Arc 的 Kubernetes 群集上新的或更新的扩展实例。 代理需要建立连接才能使扩展的所需状态可拉取到群集。 若代理无法连接到 Azure,则延迟将所需状态传播到群集。
扩展实例的受保护配置设置可在已启用 Azure Arc 的 Kubernetes 服务中存储 48 小时。 因此,若在 Azure 上创建扩展资源后的 48 小时内群集处于断开连接状态,则扩展将状态从 Pending
更改为 Failed
。 若要防止此情况出现,建议定期将群集联机。
重要
目前,基于 ARM64 的群集不支持已启用 Azure Arc 的 Kubernetes 群集扩展,但 Flux (GitOps) 除外。 若要安装和使用其他群集扩展,群集必须至少有一个操作系统节点和体系结构类型 linux/amd64
。
扩展范围
每个扩展类型都定义了它们在群集上运行的范围。 已启用 Arc 的 Kubernetes 群集上的扩展安装范围为群集或命名空间。
群集范围的扩展将安装在创建扩展期间指定的 release-namespace
中。 通常,只有群集范围扩展的一个实例及其组件(例如 Pod、运算符和自定义资源定义 (CRD))安装在群集的发布命名空间中。
命名空间范围的扩展可以安装在使用 -namespace
属性提供的给定命名空间中。 由于扩展可以部署在命名空间范围内,因此命名空间范围扩展的多个实例及其组件可以在群集上运行。 每个扩展实例都具有对其部署到的命名空间的权限。 上述都是群集范围的扩展,但 Kubernetes 上的事件网格的扩展除外。
所有当前可用的扩展都是群集范围的扩展,但 Azure Arc 上的 Azure API 管理除外。
后续步骤
- 使用我们的快速入门将 Kubernetes 群集连接到 Azure Arc。
- 在已启用 Azure Arc 的 Kubernetes 群集上部署群集扩展。