Azure Arc 启用的 AKS 中的代理服务器设置

适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

本文介绍如何为 Azure Arc 启用的 AKS 配置代理设置。如果网络需要使用代理服务器连接到 Internet,本文将指导你完成使用 AksHci PowerShell 模块在 AKS 中设置代理支持的步骤。 步骤因代理服务器是否需要身份验证而异。

注意

如果要将 Kubernetes 和 Azure 服务与 Azure Arc 配合使用,请确保还将将 现有 Kubernetes 群集连接到 Azure Arc 中显示的 URL 添加到允许列表。

使用以下选项配置部署后,可以在 Azure Stack HCI 上安装 AKS 主机并使用 PowerShell 创建 Kubernetes 群集

准备阶段

请确保满足 系统要求中的所有先决条件。

代理服务器配置信息

AKS 部署的代理服务器配置包括以下设置:

  • HTTP URL 和端口,例如 http://proxy.corp.contoso.com:8080
  • HTTPS URL 和端口,例如 https://proxy.corp.contoso.com:8443
  • (可选)用于对代理服务器进行身份验证的有效凭据。
  • (可选)如果代理服务器配置为拦截 SSL 流量,则为有效的证书链。 此证书链将导入到所有 AKS 控制平面和工作器节点以及管理群集中,以与代理服务器建立受信任的连接。

用于排除发送到代理的专用子网的排除列表

下表包含必须使用 中的 New-AksHciProxySetting参数排除-noProxy的地址列表。

IP 地址 排除原因
localhost, 127.0.0.1 Localhost 流量
.svc 内部 Kubernetes 服务流量,其中 .svc 表示通配符名称。 这类似于说 *.svc,但此架构中未使用任何内容。
10.0.0.0/8 专用网络地址空间。
172.16.0.0/12 专用网络地址空间 - Kubernetes 服务 CIDR。
192.168.0.0/16 专用网络地址空间 - Kubernetes Pod CIDR。
.contoso.com`` | You might want to exempt your enterprise namespace (.contoso.com) from being directed through the proxy. To exclude all addresses in a domain, you must add the domain to the noProxy.contoso.comlist. Use a leading period rather than a wildcard (\*) character. In the example, the addressesexcludes addresses prefix1.contoso.com, prefix2.contoso.com'等。

noProxy 的默认值为 localhost,127.0.0.1,.svc,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16。 尽管这些默认值适用于许多网络,但可能需要将更多子网范围和/或名称添加到豁免列表。 例如,你可能希望免除企业命名空间 (.contoso.com) 通过代理定向。 可以通过在 noProxy 列表中指定相应的值来实现此目的。

为具有计算机范围的代理设置的 Azure Stack HCI 和 Windows Server 群集设置代理

如果 Azure Stack HCI/Windows Server 群集上已有计算机范围的代理设置,则这些设置可能会替代任何特定于 AKS 的代理设置,并在安装过程中导致故障。

若要检测是否拥有计算机范围的代理设置,请在每个物理群集节点上运行以下脚本:

$http_proxy = [System.Environment]::GetEnvironmentVariable("HTTP_PROXY", "Machine")
$https_proxy = [System.Environment]::GetEnvironmentVariable("HTTPS_PROXY", "Machine")
$no_proxy = [System.Environment]::GetEnvironmentVariable("NO_PROXY", "Machine")

if ($http_proxy -or $https_proxy) {
    if (-not $no_proxy) {
        Write-Host "Problem Detected! A machine-wide proxy server is configured, but no proxy exclusions are configured"
    }
}

在检测到问题的每个物理群集主机上配置计算机范围的代理排除项。

运行以下 PowerShell 脚本,并将 $no_proxy 参数字符串替换为适用于你的环境的适当 NO_PROXY 排除字符串。 有关如何为环境正确配置 noProxy 列表的信息,请参阅 排除将专用子网发送到代理的排除列表

$no_proxy = "localhost,127.0.0.1,.svc,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.contoso.com"
[Environment]::SetEnvironmentVariable("NO_PROXY", $no_proxy, "Machine")
$env:NO_PROXY = [System.Environment]::GetEnvironmentVariable("NO_PROXY", "Machine")

注意

建议在故障转移群集中的所有节点上使用相同的代理设置。 在故障转移群集中的不同物理节点上设置不同的代理设置可能会导致意外结果或安装问题。 此外,具有通配符的 IP 地址 (*) ,例如 172。*, 无效。 IP 地址必须以正确的 CIDR 表示法 (172.0.0.0/8) 。

安装 AksHci PowerShell 模块

在群集中的每个物理节点上配置系统代理设置,并确保所有节点都有权访问 系统要求中所述的 URL 和端口。

如果你使用的是远程 PowerShell,则必须使用 CredSSP。

在运行以下命令之前关闭所有打开的 PowerShell 窗口:

Install-Module -Name AksHci -Repository PSGallery

如果环境使用代理服务器访问 Internet,则可能需要在安装 AKS 之前将代理参数添加到 Install-Module 命令。 有关详细信息,请参阅 Install-Module 文档 ,并按照 Azure Stack HCI 文档 在物理群集节点上配置代理设置。

下载 AksHci PowerShell 模块时,我们还下载将 AKS 主机注册到 Azure 进行计费所需的 Az PowerShell 模块。

针对采用基本身份验证的代理服务器配置 AKS 主机

如果代理服务器要求进行身份验证,请以管理员身份打开 PowerShell,然后运行以下命令来获取凭据,并设置配置详细信息:

$proxyCred = Get-Credential
$proxySetting=New-AksHciProxySetting -name "corpProxy" -http http://contosoproxy:8080 -https https://contosoproxy:8443 -noProxy localhost,127.0.0.1,.svc,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.contoso.com -credential $proxyCredential

针对不要求进行身份验证的代理服务器配置 AKS 主机

如果代理服务器不要求进行身份验证,请运行以下命令:

$proxySetting=New-AksHciProxySetting -name "corpProxy" -http http://contosoproxy:8080 -https https://contosoproxy:8443 -noProxy localhost,127.0.0.1,.svc,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.contoso.com

针对采用受信任的证书的代理服务器配置 AKS 主机

如果你的代理服务器要求代理客户端信任某个证书,请在运行 Set-AksHciConfig 时指定证书文件。 证书文件的格式为 Base-64 编码的 X .509。 这使你能够在整个堆栈中创建和信任证书。

重要

如果代理要求物理 Azure Stack HCI 节点信任证书,请确保将证书链导入每个 Azure Stack HCI 节点上的相应证书存储,然后再继续。 请按照部署过程操作,使用代理身份验证所需的证书来注册 Azure Stack HCI 节点。

$proxySetting=New-AksHciProxySetting -name "corpProxy" -http http://contosoproxy:8080 -https https://contosoproxy:8443 -noProxy localhost,127.0.0.1,.svc,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.contoso.com -credential $proxyCredential

注意

代理证书必须作为个人信息交换 (PFX) 文件格式或字符串提供,并包含根授权链以使用证书进行身份验证或进行 SSL 隧道设置。

后续步骤

现在可以继续在 Azure Stack HCI 或 Windows Server 群集上安装 AKS,方法是运行 ,Install-AksHci然后运行 Set-AksHciConfig