你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

访问 Azure Kubernetes 服务 (AKS) API 服务器

Azure Bastion
Azure ExpressRoute
Azure Kubernetes 服务 (AKS)
Azure 专用链接
Azure VPN 网关

本文概述了如何连接到 Azure Kubernetes 服务 (AKS) 群集的 API 服务器的选项。 在标准 AKS 群集中,API 服务器通过 Internet 公开。 在专用 AKS 群集中,只能从对专用群集具有网络访问权限的设备连接到 Internet。

规划 API 服务器访问是一项零天的活动,访问服务器的方式取决于部署方案。

AKS API 服务器访问权限

若要管理 AKS 群集,请与其 API 服务器进行交互。 必须仅将 API 服务器访问权限限制为必要的用户。 可以通过将 AKS 群集与 Microsoft Entra ID 集成来提供精细访问。 管理员可以使用基于角色的访问控制(RBAC)管理访问权限。 他们还可以将用户和标识放置在Microsoft Entra 组中,并分配适当的角色和权限。 Microsoft通过 OpenID Connect 在 AKS 群集中启用 Entra 身份验证。 有关详细信息,请参阅以下资源:

注意

可以通过仅允许 授权 IP 地址范围 访问 API 服务器来增强 AKS 群集安全性。

Azure DDoS 防护,结合应用程序设计最佳做法,针对分布式拒绝服务(DDoS)攻击提供增强的缓解功能。 在每个外围虚拟网络上启用 DDoS 防护。

通过 Internet 访问 AKS 群集

创建解析为 API 服务器的完全限定域名(FQDN)的非专用群集时,默认情况下会为其分配公共 IP 地址。 可以使用 Azure 门户或 shell(例如 Azure CLI、PowerShell 或命令提示符)连接到群集。

注意

可以使用 Kubernetes 命令行客户端 kubectl通过 Internet 连接到群集

Cloud Shell

Azure Cloud Shell 是 Azure 门户中内置的 shell。 可以通过 Cloud Shell 管理和连接到 Azure 资源,例如 PowerShell 或 Azure CLI。

访问 AKS 专用群集

可通过多种方式连接到 AKS 专用群集。 规划访问权限是基于方案的需求和限制的一天零活动。 可以使用以下组件和服务连接到专用群集:

  • 作为作工作站部署到子网中的跳转盒: 此设置可以在 可用性集Azure 虚拟机规模集独立的永久性虚拟机(VM)

  • Azure 容器实例和 与 OpenSSH 兼容的客户端 部署运行安全外壳(SSH)服务器的容器实例,然后使用与 OpenSSH 兼容的客户端访问容器。 此容器充当网络中用于访问专用群集的跳转盒。

  • Azure Bastion 使用 Azure Bastion 在 Azure 虚拟网络中建立对 VM 或跳转框的更安全、基于浏览器的远程访问。 通过此访问,可以更安全地连接到 AKS API 服务器等专用终结点。

  • 虚拟专用网络(VPN) 创建将本地或远程网络扩展到虚拟网络的安全 VPN 连接。 通过此连接,可以像在本地连接一样访问专用群集。

  • Azure ExpressRoute 使用 ExpressRoute 在本地网络和 Azure 之间建立专用连接。 此连接有助于确保对专用群集的更安全且可靠的访问,而无需使用公共 Internet。

  • Azure CLI az aks 命令调用 命令: 将 Azure CLI 与 az aks command invoke 命令配合使用,直接在 AKS 群集上执行命令。 此命令与群集交互,而不会公开更多网络终结点。

  • Cloud Shell 实例,该实例部署到连接到群集的 API 服务器的子网中: 在链接到群集 API 服务器的子网中部署 Cloud Shell。 此方法提供更安全的托管命令行环境来管理专用群集。

  • Azure 虚拟桌面 访问 Azure 虚拟桌面以使用 Windows 或 Linux 桌面作为跳转框,以便从几乎任何地方安全地管理专用群集。

注意

通过传输控制协议将 API 服务器的所有流量通过 HTTPS 传输到端口 443。 网络安全组(NSG)或其他网络防火墙必须允许流量从源发到端口 443 上的 API 服务器的 FQDN(对于 HTTPS)。 流量限制应专门限制为群集 API 服务器的 FQDN。

Azure Bastion

Azure Bastion 是一种平台即服务产品,支持与虚拟网络中不需要公共 IP 地址的 VM 的安全远程桌面协议(RDP)或 SSH 连接。 连接到专用 AKS 群集时,请使用 Azure Bastion 访问中心虚拟网络中的跳转框。

或者,可以使用 SSH、RDP 和远程桌面服务远程控制跳转框。 AKS 群集驻留在辐射网络中,该网络将其与跳线框分开。 虚拟网络对等互连连接中心和辐射网络。 跳转框可以使用 Azure 专用终结点、专用 DNS 区域和 DNS A 记录解析 AKS API 服务器的 FQDN。 此设置有助于确保 API 服务器的 FQDN 只能在虚拟网络中解析。 此配置提供与专用 AKS 群集的受信任连接。

注意

若要持续访问专用 AKS 群集,跳转框的可用性和冗余至关重要。 为了帮助确保这种可靠性,请将跳转框放在可用性集中,并使用具有少数 VM 实例的虚拟机规模集。 有关详细信息,请参阅以下资源:

体系结构图,显示从用户到专用 AKS 群集的流量路由。流量通过 Azure Bastion 和跳转盒流动。

下载此体系结构的 Visio 文件

数据流

  1. 用户尝试使用 Azure Bastion 和具有传输层安全性加密的 HTML5 浏览器连接到跳转框。

  2. 用户从门户中选择是使用 RDP 还是 SSH 连接到跳转框。

  3. 用户通过 Azure Bastion 登录到跳转框。 从此跳转框中尝试连接到 AKS 专用群集。 中心虚拟网络具有指向 AKS 专用 DNS 区域的虚拟网络链接,用于解析专用群集的 FQDN。

  4. 中心虚拟网络和辐射虚拟网络使用虚拟网络对等互连相互通信。

  5. 若要访问专用 AKS 群集,流量将进入 Azure 主干。 专用终结点建立与专用 AKS 群集的专用独立连接。

  6. 流量到达专用 AKS 群集的 API 服务器。 然后,用户可以管理 Pod、节点和应用程序。

注意

如果不直接 在现有群集上禁用公共 FQDN,则可以从虚拟网络外部解析专用群集的 FQDN。

排查连接问题

如果无法连接到专用群集:

  • 检查虚拟网络对等互连。 此机制提供两个虚拟网络之间的网络到网络连接。 若要使流量在这两个网络之间流动,需要在它们之间建立虚拟网络对等互连。 建立虚拟网络对等互连时,将路由放置在虚拟网络的系统路由表中。 该路由提供用于到达目标地址空间的路径。 有关对虚拟网络对等互连进行故障排除的详细信息,请参阅 创建、更改或删除虚拟网络对等互连

    注意

    如果跳转框与专用终结点和 AKS 专用群集位于同一虚拟网络中,则不需要虚拟网络对等互连。

  • 检查指向专用 DNS 区域的虚拟网络链接。 虚拟网络链接为虚拟网络中的 VM 提供一种方法,用于连接到专用 DNS 区域并解析区域中的 DNS 记录。 如果无法连接到专用 AKS 群集或无法解析专用群集的 FQDN,请检查虚拟网络是否具有指向专用 DNS 区域的虚拟网络链接。 专用 DNS 区域的名称应采用 privatelink.<region>.azmk8s.io 格式。

    有关如何排查虚拟网络链接问题的详细信息,请参阅以下资源:

    注意

    创建专用 AKS 群集时,会创建一个专用 DNS 区域,该区域具有指向托管专用 AKS 群集的虚拟网络的链接。

提高安全性

为了帮助保护 AKS 工作负载和跳线框,请使用实时(JIT)访问和特权访问工作站(PAW)。 JIT 访问是 Microsoft Defender for Cloud 的一部分。 它可以帮助最大程度地减少潜在的攻击面和漏洞,方法是阻止传入跳线的入站流量,并在需要时仅允许访问指定时间。 时间过期后,将自动撤销访问权限。 有关详细信息,请参阅 实时计算机访问

PAW 是强化设备,通过阻止常见攻击途径(如电子邮件和 Web 浏览)为作员提供高安全性。 有关详细信息,请参阅 安全设备作为特权访问故事的一部分。

VPN

VPN 连接提供从本地环境到 Azure 的混合连接。 此连接允许访问专用 AKS 群集。 专用群集的 API 服务器在虚拟网络外部无法访问。 使用 VPN,可以通过加密隧道连接到 Azure 中的虚拟网络,访问跳转盒,然后连接到专用群集的 API 服务器。

体系结构图,显示从用户流向专用 AKS 群集的流量。该路由包括 VPN 网关、Internet 协议安全隧道和跳转盒。

下载此体系结构的 Visio 文件

数据流

  1. 用户从本地工作站启动 RDP 或 SSH 流量到跳转盒。

  2. 跳转盒流量离开客户边缘路由器和 VPN 设备。 流量使用加密的 Internet 协议安全隧道遍历 Internet。

  3. 跳转盒流量到达 Azure 中的虚拟网络网关,这是 Azure 虚拟网络基础结构的入口点和出口点。

  4. 流量经过虚拟网络网关后,会到达跳转框。 尝试从跳转框连接到 AKS 专用群集。 中心虚拟网络具有指向 AKS 专用 DNS 区域的虚拟网络链接,用于解析专用群集的 FQDN。

  5. 中心虚拟网络和辐射虚拟网络使用虚拟网络对等互连相互通信。

  6. 若要访问专用 AKS 群集,流量将进入 Azure 主干。 专用终结点建立与专用 AKS 群集的专用独立连接。

  7. 流量到达专用 AKS 群集的 API 服务器。 然后,用户可以管理 Pod、节点和应用程序。

ExpressRoute

ExpressRoute 从本地环境提供与 AKS 专用群集的连接。 ExpressRoute 使用边界网关协议在本地网络和 Azure 之间交换路由。 此连接在基础结构即服务资源和本地工作站之间创建安全路径。 ExpressRoute 提供具有一致带宽和延迟的专用独立连接,这使得它非常适合企业环境。

体系结构图,显示从用户到专用 AKS 群集的流量路由。路线包括 ExpressRoute 和跳转框。

下载此体系结构的 Visio 文件

数据流

  1. 用户从本地工作站启动 RDP 或 SSH 流量到跳转盒。

  2. 跳转盒流量离开客户边缘路由器,并在光纤连接上与 ExpressRoute 线路所在的 meet-me 位置通信。 流量到达Microsoft企业边缘(MSEE)设备。 然后,它进入 Azure 构造。

  3. 跳转盒流量会到达 ExpressRoute 网关,该网关既是 Azure 虚拟网络基础结构的入口点,也是出口点。

  4. 流量到达跳线框。 尝试从跳转框连接到 AKS 专用群集。 中心虚拟网络具有指向 AKS 专用 DNS 区域的虚拟网络链接,用于解析专用群集的 FQDN。

  5. 中心虚拟网络和辐射虚拟网络使用虚拟网络对等互连相互通信。

  6. 若要访问专用 AKS 群集,流量将进入 Azure 主干。 专用终结点建立与专用 AKS 群集的专用独立连接。

  7. 流量到达专用 AKS 群集的 API 服务器。 然后,用户可以管理 Pod、节点和应用程序。

注意

ExpressRoute 要求非Microsoft连接提供商提供与 MSEE 路由器的对等互连连接。 ExpressRoute 流量未加密

运行 aks 命令调用

使用 AKS 专用群集,可以从有权访问 API 服务器的 VM 进行连接。 使用 Azure CLI aks command invoke 命令通过 Azure API 远程运行 kubectlhelm 等命令。 此方法在群集中创建暂时性 Pod,该 Pod 仅在命令期间持续。 如果缺少 VPN、ExpressRoute 或对等互连虚拟网络,aks command invoke 命令将用作备用连接方法。 确保群集和节点池有足够的资源来创建暂时性 Pod。

有关详细信息,请参阅 使用命令调用访问专用 AKS 群集

将 Cloud Shell 连接到子网

将 Cloud Shell 部署到所控制的虚拟网络时,可以与该网络内的资源进行交互。 将 Cloud Shell 部署到所管理的子网中,可以连接到 AKS 专用群集的 API 服务器。 此部署允许连接到专用群集。 有关详细信息,请参阅 将 Cloud Shell 部署到 Azure 虚拟网络

使用 SSH 和 Visual Studio Code 进行测试

SSH 使用公钥对安全地管理和访问远程主机上的文件。 在本地计算机上,可以将 SSH 与 Visual Studio Code Remote - SSH 扩展配合使用,以连接到虚拟网络中的跳转框。 加密的 SSH 隧道在跳转框的公共 IP 地址处终止,因此可以轻松修改 Kubernetes 清单文件。

若要了解如何通过 SSH 连接到跳转盒,请参阅 通过 SSH 进行远程开发

如果无法通过 SSH 连接到 VM 来管理专用群集:

  • 检查 VM 子网的入站 NSG 规则。 默认 NSG 规则阻止来自 Azure 外部的所有入站流量,因此请创建一个新规则,允许来自本地计算机的公共 IP 地址的 SSH 流量。

  • 检查证书位置并验证证书的正确位置。 确保私钥位于本地计算机上的 C:\Users\User\.ssh\id_rsa 目录中,公钥位于 Azure 中 VM 上的 ~/.ssh/id_rsa.pub 文件中。

注意

建议:

  • 避免使用公共 IP 地址连接到生产环境中的资源。 仅在开发或测试环境中使用公共 IP 地址。 在这些方案中,创建入站 NSG 规则以允许来自本地计算机的公共 IP 地址的流量。 有关 NSG 规则的详细信息,请参阅 创建、更改或删除 NSG

  • 避免使用 SSH 直接连接到 AKS 节点或容器。 请改用专用的外部管理解决方案。 使用 aks command invoke 命令在群集中创建暂时性 Pod 进行代理访问时,这种做法尤其重要。

结论

  • 如果启用了公共 FQDN,则可以通过 Internet 访问 AKS 群集的 API 服务器。

  • Cloud Shell 是 Azure 门户中的内置命令行 shell,可用于连接到 AKS 群集。

  • 若要获得更安全的访问,请使用 Azure Bastion 和专用终结点。

  • VPN 和 ExpressRoute 提供与专用 AKS 群集的混合连接。

  • 如果没有可用的外部连接解决方案,则可以远程使用 aks command invoke

  • 可以直接将 Cloud Shell 部署到你管理以访问专用群集的虚拟网络中。

  • 可以在跳转框中将 Visual Studio Code 与 SSH 配合使用来加密连接并简化清单文件修改。 但是,此方法会在环境中公开公共 IP 地址。

贡献

Microsoft维护本文。 以下参与者撰写了本文。

主要作者:

其他参与者:

若要查看非公共LinkedIn配置文件,请登录到LinkedIn。

后续步骤