AKS 集群配置参考

Rancher 2.6 变更

  • 支持添加多个节点池
  • 支持私有集群
  • 启用自动缩放节点池
  • 在云凭证中配置 AKS 权限

RBAC

在 Rancher UI 中配置 AKS 集群时,无法禁用 RBAC。如果在 AKS 中为集群禁用了 RBAC,则无法在 Rancher 中注册或导入集群。

Rancher 可以使用与其他集群一样的方式为 AKS 集群配置成员角色。有关详细信息,请参阅 RBAC

云凭证

AKS 集群配置参考 - 图1备注

本节中的配置信息假设你已经为 Rancher 设置了服务主体。有关如何设置服务主体的分步说明,请参阅本节

订阅 ID

要获取订阅 ID,请单击左侧导航栏中的 All Services。然后单击 Subscriptions。转到要与 Kubernetes 集群关联的订阅的名称,然后复制 Subscription ID

客户端 ID

要获取客户端 ID,请转到 Azure 门户,然后单击 Azure Active Directory,单击 App registrations,然后单击服务主体的名称。客户端 ID 在 app registration 详细信息页面上列为 Application (client) ID

客户端密码

在创建客户端密码值后,你无法再获取它的值。因此如果你还没有客户端密码值,则需要创建一个新的客户端密码。

要获取新的客户端密码,请转到 Azure 门户,然后单击 Azure Active Directory,单击 App registrations,然后单击服务主体的名称。

然后点击 Certificates & secrets 并点击 New client secret。单击 Add。然后复制新客户端密码的 Value

环境

Microsoft 提供了多个来满足地区法律的要求:

  • AzurePublicCloud
  • AzureGermanCloud
  • AzureChinaCloud
  • AzureUSGovernmentCloud

账号访问

在本部分中,你需要选择现有的 Azure 云凭证或创建一个新凭证。

有关配置 Azure 云凭证的帮助,请参阅本部分

集群位置

配置集群和节点位置。有关 AKS 可用区的详细信息,请参阅 AKS 文档

高可用性位置包括多个可用区。

集群选项

Kubernetes 版本

可用的 Kubernetes 版本是从 Azure API 动态获取的。

集群资源组

资源组是一个容器,其中包含 Azure 解决方案的相关资源。资源组可以包括解决方案的所有资源,或者仅包括你希望作为一个组来管理的资源。你可以根据组织的需求来决定如何将资源分配给资源组。通常情况下,你可以将生命周期相同的资源添加到同一个资源组,以便轻松地按组进行部署、更新和删除。

你可以使用现有资源组,也可以输入资源组的名称,然后系统将为你创建一个资源组。

使用包含现有 AKS 集群的资源组将会创建一个新资源组。Azure AKS 仅允许每个资源组对应一个 AKS 集群。

有关管理资源组的信息,请参阅 Azure 文档

Linux 管理员用户名

用于创建到 Linux 节点的 SSH 连接的用户名。

AKS 节点的默认用户名是 azureuser

SSH 公钥

用于创建到 Linux 节点的 SSH 连接的密钥。

Tags

如果你的组织使用标签(Tag)来管理多个 Azure 服务的资源,那么集群标签则非常有用。这些标签不适用于集群内的资源。

网络选项

负载均衡器 SKU

Azure 负载均衡器支持 standard 和 basic SKU(stock keeping units)。

有关 standard 负载均衡器和 basic 负载均衡器的对比,请参阅官方 Azure 文档。Microsoft 建议使用 standard 负载均衡器。

如果你选择了一个或多个可用区,或者你有多个节点池,则需要 Standard 负载均衡器。

网络策略

默认情况下,AKS 集群中的所有 Pod 都可以无限制地发送和接收流量。为了提高安全性,你可以定义控制流量的规则。Kubernetes 中的网络策略功能允许你定义集群中 pod 之间的入口和出口流量规则。

Azure 提供了两种实现网络策略的方法。创建 AKS 集群时会选择网络策略选项。创建集群后无法更改策略选项:

  • Azure 自己的实现,称为 Azure 网络策略。Azure 网络策略需要 Azure CNI。
  • Calico Network Policies,一个由 Tigera 创立的开源网络和网络安全解决方案。

你也可以选择不使用网络策略。

有关 Azure 和 Calico 网络策略及其功能之间的差异,请参阅 AKS 文档

DNS 前缀

为集群的 Kubernetes API server FQDN 输入唯一的 DNS 前缀。

网络插件

有两个网络插件,分别是 kubenet 和 Azure CNI。

kubenet Kubernetes 插件是 AKS 创建的集群的默认配置。使用 kubenet 时,集群中的每个节点都会收到一个可路由的 IP 地址。Pod 使用 NAT 与 AKS 集群外部的其他资源进行通信。这种方法减少了需要在网络空间中保留以供 Pod 使用的 IP 地址数量。

如果使用 Azure CNI(高级)网络插件,Pod 可以使用完整的虚拟网络连接,并且可以从连接的网络中通过 pod 的私有 IP 地址直接访问。这个插件需要更多的 IP 地址空间。

有关 kubenet 和 Azure CNI 之间差异的详细信息,请参阅 AKS 文档

HTTP 应用路由

启用后,HTTP 应用路由附加组件可以更轻松地访问部署到 AKS 集群的应用。它部署了两个组件,分别是 Kubernetes Ingress controllerExternal-DNS controller。

有关详细信息,请参阅 AKS 文档

设置授权 IP 范围

你可以使用授权的 IP 地址范围来保护对 Kubernetes API server 的访问。

Kubernetes API server 公开 Kubernetes API。该组件提供管理工具(例如 kubectl)的交互。AKS 提供带有专用 API server 的单租户集群 controlplane。默认情况下,API server 分配了一个公共 IP 地址,你应该使用基于 Kubernetes 或 Azure 的 RBAC 来控制对 API server 的访问。

要保护对其他可公开的 AKS controlplane 和 API server 的访问,你可以启用并使用授权的 IP 范围。这些授权的 IP 范围只允许定义的 IP 地址范围与 API server 通信。

但是,即使你使用了授权的 IP 地址范围,你仍应使用 Kubernetes RBAC 或 Azure RBAC 来授权用户及其请求的操作。

容器监控

容器监控使用 Metrics API 从 Kubernetes 中可用的控制器、节点和容器中收集内存和处理器指标,从而为你可视化性能数据。容器日志也能被收集。启用监控后,系统会通过 Linux 的 Log Analytics 代理的容器化版本自动为你收集指标和日志。指标会被写入指标存储,而日志数据会被写入与你的 Log Analytics 工作区关联的日志存储。

Log Analytics 工作区资源组

资源组包含 Log Analytics 工作区。你必须至少创建一个工作区才能使用 Azure Monitor Logs。

Log Analytics 工作区名称

Azure Monitor Logs 收集的数据存储在一个或多个 Log Analytics 工作区中。工作区定义了数据的地理位置、访问权限(定义了哪些用户可以访问数据)以及配置设置(定价层和数据保留等)。

你必须至少创建一个工作区才能使用 Azure Monitor Logs。一个工作区可能就足以满足你的所有监控数据。你也可以根据需求创建多个工作区。例如,你可能有一个工作区用于生产数据,另一个工作区用于测试。

有关 Azure Monitor Logs 的详细信息,请参阅 Azure 文档

支持私有 Kubernetes 服务

通常情况下,无论集群是否为私有,AKS worker 节点都不会获得公共 IP。在私有集群中,controlplane 没有公共端点。

Rancher 可以通过以下两种方式之一连接到私有 AKS 集群。

第一种方法是确保 Rancher 运行在与 AKS 节点相同的 NAT 上。

第二种方法是运行命令向 Rancher 注册集群。配置集群后,你可以在任何能连接到集群的 Kubernetes API 的地方运行显示的命令。配置启用了私有 API 端点的 AKS 集群时,此命令将显示在弹出窗口中。

AKS 集群配置参考 - 图2备注

注册现有 AKS 集群时,集群可能需要一些时间(可能是数小时)才会出现在 Cluster To register 下拉列表中。不同区域的结果可能不同。

有关连接到 AKS 专用集群的详细信息,请参阅 AKS 文档

节点池

模式

在 Azure 界面中,用户能够指定主要节点池(Primary Node Pool)依赖于 system(通常用于 controlplane)还是 user(Rancher 最常用的)。

你可以指定主要节点池(Primary Node Pool)的模式、操作系统、数量和大小。

system 节点池总是需要运行节点,因此它们不能缩容到一个节点以下。至少需要一个 system 节点池。

对于后续的节点池,Rancher UI 强制使用默认的 useruser 节点池允许缩容到零节点。user 节点池不运行 Kubernetes controlplane 的任何部分。

AKS 不会公开运行 Kubernetes controlplane 组件的节点。

可用区

可用区是区域内的唯一物理位置。每个可用区由一个或多个配备独立电源、冷却系统和网络的数据中心组成。

并非所有区域都支持可用区。有关具有可用区的 Azure 区域列表,请参阅 Azure 文档

虚拟机大小

为节点池中的每个 VM 选择一个大小。有关每个 VM 大小的详细信息,请参阅此页面

操作系统磁盘类型

节点池中的节点可以使用托管磁盘或临时磁盘。

临时 OS 磁盘在本地虚拟机存储上创建,并不会保存到远程 Azure 存储。临时 OS 磁盘适用于无状态工作负载,其中的应用可以容忍单个 VM 故障,但更容易受 VM 部署时间或重置单个虚拟机实例镜像的影响。使用临时 OS 磁盘,你可以体验更低的 OS 磁盘读/写延迟和更快的 VM 重置镜像过程。

Azure 托管磁盘是由 Azure 管理并与 Azure Virtual Machines 一起使用的块级存储卷。托管磁盘旨在实现 99.999% 的高可用性。托管磁盘通过提供三个数据副本来实现高可用性和高持续性。

操作系统磁盘大小

每个节点的磁盘大小(以 GB 为单位)。

节点数

节点池中的节点数。Azure 订阅可能会限制最大节点数。

每个节点的最大 Pod 数量

每个节点的最大 Pod 数量默认为 110,最大为 250。

启用自动扩缩容

启用自动扩缩容后,你需要输入最小和最大节点数。

启用 Auto Scaling 后,你将无法手动对节点池进行扩缩容。扩缩容由 AKS autoscaler 控制。