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 本地 上安装 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 本地群集和 Windows Server 群集设置代理

如果 Azure 本地/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 本地文档在物理群集节点上配置代理设置。

下载 AksHci PowerShell 模块时,我们还下载向 Azure 注册 AKS 主机所需的 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 本地节点信任证书,请确保在继续之前将证书链导入到每个 Azure 本地节点上的相应证书存储。 按照部署过程,使用代理身份验证所需的证书注册 Azure 本地节点。

$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 隧道设置。

后续步骤

现在,可以通过运行 Set-AksHciConfigInstall-AksHci跟在 Azure 本地或 Windows Server 群集上安装 AKS。