3.3. 准备您的网络
您必须通过为对等 pod 配置出站连接来准备网络。您可以使用以下方法之一执行此任务:
- 将 NAT 网关添加到默认 worker 子网。此方法非常简单并重复使用集群资源,但它提供较少的隔离。
- 为对等 pod 创建专用的 VNet 和子网,附加 NAT 网关,并将其与集群 VNet 对等。这个方法更为复杂,但它提供了更高的隔离和灵活性。
3.3.1. 配置默认 worker 子网 复制链接链接已复制到粘贴板!
您可以通过附加 NAT 网关来为出站连接配置默认 worker 子网。此方法非常简单并重复使用集群资源,但它比专用虚拟网络提供较少的隔离。
先决条件
-
已安装并进行身份验证的 Azure CLI (
az)。 - 有对 Azure 资源组和 VNet 的管理员访问权限。
流程
运行以下命令设置
AZURE_RESOURCE_GROUP环境变量:AZURE_RESOURCE_GROUP=$(oc get infrastructure/cluster \ -o jsonpath='{.status.platformStatus.azure.resourceGroupName}')$ AZURE_RESOURCE_GROUP=$(oc get infrastructure/cluster \ -o jsonpath='{.status.platformStatus.azure.resourceGroupName}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令设置
AZURE_REGION环境变量:AZURE_REGION=$(az group show --resource-group ${AZURE_RESOURCE_GROUP}\ --query "{Location:location}" --output tsv) && \ echo "AZURE_REGION: \"$AZURE_REGION\""$ AZURE_REGION=$(az group show --resource-group ${AZURE_RESOURCE_GROUP}\ --query "{Location:location}" --output tsv) && \ echo "AZURE_REGION: \"$AZURE_REGION\""Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令设置
AZURE_VNET_NAME环境变量:AZURE_VNET_NAME=$(az network vnet list \ -g "${AZURE_RESOURCE_GROUP}" --query '[].name' -o tsv)$ AZURE_VNET_NAME=$(az network vnet list \ -g "${AZURE_RESOURCE_GROUP}" --query '[].name' -o tsv)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令设置
AZURE_SUBNET_ID环境变量:AZURE_SUBNET_ID=$(az network vnet subnet list \ --resource-group "${AZURE_RESOURCE_GROUP}" \ --vnet-name "${AZURE_VNET_NAME}" --query "[].{Id:id} \ | [? contains(Id, 'worker')]" --output tsv)$ AZURE_SUBNET_ID=$(az network vnet subnet list \ --resource-group "${AZURE_RESOURCE_GROUP}" \ --vnet-name "${AZURE_VNET_NAME}" --query "[].{Id:id} \ | [? contains(Id, 'worker')]" --output tsv)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 peer pod 子网设置 NAT 网关环境变量:
export PEERPOD_NAT_GW=peerpod-nat-gw
$ export PEERPOD_NAT_GW=peerpod-nat-gwCopy to Clipboard Copied! Toggle word wrap Toggle overflow export PEERPOD_NAT_GW_IP=peerpod-nat-gw-ip
$ export PEERPOD_NAT_GW_IP=peerpod-nat-gw-ipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 NAT 网关创建公共 IP 地址:
az network public-ip create -g "${AZURE_RESOURCE_GROUP}" \ -n "${PEERPOD_NAT_GW_IP}" -l "${AZURE_REGION}" --sku Standard$ az network public-ip create -g "${AZURE_RESOURCE_GROUP}" \ -n "${PEERPOD_NAT_GW_IP}" -l "${AZURE_REGION}" --sku StandardCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建 NAT 网关并将其与公共 IP 地址关联:
az network nat gateway create -g "${AZURE_RESOURCE_GROUP}" \ -l "${AZURE_REGION}" --public-ip-addresses "${PEERPOD_NAT_GW_IP}" \ -n "${PEERPOD_NAT_GW}"$ az network nat gateway create -g "${AZURE_RESOURCE_GROUP}" \ -l "${AZURE_REGION}" --public-ip-addresses "${PEERPOD_NAT_GW_IP}" \ -n "${PEERPOD_NAT_GW}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,更新 VNet 子网以使用 NAT 网关:
az network vnet subnet update --nat-gateway "${PEERPOD_NAT_GW}" \ --ids "${AZURE_SUBNET_ID}"$ az network vnet subnet update --nat-gateway "${PEERPOD_NAT_GW}" \ --ids "${AZURE_SUBNET_ID}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令确认 NAT 网关已附加到 VNet 子网:
az network vnet subnet show --ids "${AZURE_SUBNET_ID}" \ --query "natGateway.id" -o tsv$ az network vnet subnet show --ids "${AZURE_SUBNET_ID}" \ --query "natGateway.id" -o tsvCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出中包含 NAT 网关资源 ID。如果没有附加 NAT 网关,输出为空。
输出示例
/subscriptions/12345678-1234-1234-1234-1234567890ab/resourceGroups/myResourceGroup/providers/Microsoft.Network/natGateways/myNatGateway
/subscriptions/12345678-1234-1234-1234-1234567890ab/resourceGroups/myResourceGroup/providers/Microsoft.Network/natGateways/myNatGatewayCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.2. 创建专用的对等 pod 虚拟网络 复制链接链接已复制到粘贴板!
您可以通过创建专用虚拟网络(VNet)来为对等 pod 配置出站连接。然后,您可以为 VNet 创建网络地址转换(NAT)网关,在 VNet 中创建子网,并使用非覆盖地址空间启用 VNet 对等。
这个方法比为默认 worker 子网创建 NAT 网关更为复杂,但它提供了更大的隔离和灵活性。
先决条件
-
已安装 Azure CLI (
az) - 您已登录到 Azure。请参阅使用 Azure CLI 对 Azure 进行授权。
- 具有管理员对 Azure 资源组和托管集群的 VNet 的访问权限。
-
您已验证了集群 VNet 无类别域间路由(CIDR)地址。默认值为
10.0.0.0/14。如果您覆盖默认值,请确保为对等 pod VNet 选择了非覆盖 CIDR 地址。例如,192.168.0.0/16。
流程
为 peer pod 网络设置环境变量:
运行以下命令设置 peer pod VNet 环境变量:
export PEERPOD_VNET_NAME="${PEERPOD_VNET_NAME:-peerpod-vnet}"$ export PEERPOD_VNET_NAME="${PEERPOD_VNET_NAME:-peerpod-vnet}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow export PEERPOD_VNET_CIDR="${PEERPOD_VNET_CIDR:-192.168.0.0/16}"$ export PEERPOD_VNET_CIDR="${PEERPOD_VNET_CIDR:-192.168.0.0/16}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来设置对等 pod 子网环境变量:
export PEERPOD_SUBNET_NAME="${PEERPOD_SUBNET_NAME:-peerpod-subnet}"$ export PEERPOD_SUBNET_NAME="${PEERPOD_SUBNET_NAME:-peerpod-subnet}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow export PEERPOD_SUBNET_CIDR="${PEERPOD_SUBNET_CIDR:-192.168.0.0/16}"$ export PEERPOD_SUBNET_CIDR="${PEERPOD_SUBNET_CIDR:-192.168.0.0/16}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
为 Azure 设置环境变量:
AZURE_RESOURCE_GROUP=$(oc get infrastructure/cluster \ -o jsonpath='{.status.platformStatus.azure.resourceGroupName}')$ AZURE_RESOURCE_GROUP=$(oc get infrastructure/cluster \ -o jsonpath='{.status.platformStatus.azure.resourceGroupName}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow AZURE_REGION=$(az group show --resource-group ${AZURE_RESOURCE_GROUP}\ --query "{Location:location}" --output tsv) && \ echo "AZURE_REGION: \"$AZURE_REGION\""$ AZURE_REGION=$(az group show --resource-group ${AZURE_RESOURCE_GROUP}\ --query "{Location:location}" --output tsv) && \ echo "AZURE_REGION: \"$AZURE_REGION\""Copy to Clipboard Copied! Toggle word wrap Toggle overflow AZURE_VNET_NAME=$(az network vnet list \ -g "${AZURE_RESOURCE_GROUP}" --query '[].name' -o tsv)$ AZURE_VNET_NAME=$(az network vnet list \ -g "${AZURE_RESOURCE_GROUP}" --query '[].name' -o tsv)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令设置对等 pod NAT 网关环境变量:
export PEERPOD_NAT_GW="${PEERPOD_NAT_GW:-peerpod-nat-gw}"$ export PEERPOD_NAT_GW="${PEERPOD_NAT_GW:-peerpod-nat-gw}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow export PEERPOD_NAT_GW_IP="${PEERPOD_NAT_PUBLIC_IP:-peerpod-nat-gw-ip}"$ export PEERPOD_NAT_GW_IP="${PEERPOD_NAT_PUBLIC_IP:-peerpod-nat-gw-ip}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置 VNET:
运行以下命令来创建对等 pod VNet:
az network vnet create --resource-group "${AZURE_RESOURCE_GROUP}" \ --name "${PEERPOD_VNET_NAME}" \ --address-prefixes "${PEERPOD_VNET_CIDR}"$ az network vnet create --resource-group "${AZURE_RESOURCE_GROUP}" \ --name "${PEERPOD_VNET_NAME}" \ --address-prefixes "${PEERPOD_VNET_CIDR}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为对等 pod VNet 创建公共 IP 地址:
az network public-ip create -g "${AZURE_RESOURCE_GROUP}" \ -n "${PEERPOD_NAT_GW_IP}" -l "${AZURE_REGION}"$ az network public-ip create -g "${AZURE_RESOURCE_GROUP}" \ -n "${PEERPOD_NAT_GW_IP}" -l "${AZURE_REGION}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为对等 pod VNet 创建 NAT 网关:
az network nat gateway create -g "${AZURE_RESOURCE_GROUP}" \ -l "${AZURE_REGION}" \ --public-ip-addresses "${PEERPOD_NAT_GW_IP}" \ -n "${PEERPOD_NAT_GW}"$ az network nat gateway create -g "${AZURE_RESOURCE_GROUP}" \ -l "${AZURE_REGION}" \ --public-ip-addresses "${PEERPOD_NAT_GW_IP}" \ -n "${PEERPOD_NAT_GW}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在对等 pod VNet 中创建子网并附加 NAT 网关:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
配置虚拟网络对等连接:
运行以下命令来创建对等连接:
az network vnet peering create -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-azure-vnet-to-peerpod-vnet \ --vnet-name "${AZURE_VNET_NAME}" \ --remote-vnet "${PEERPOD_VNET_NAME}" --allow-vnet-access \ --allow-forwarded-traffic$ az network vnet peering create -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-azure-vnet-to-peerpod-vnet \ --vnet-name "${AZURE_VNET_NAME}" \ --remote-vnet "${PEERPOD_VNET_NAME}" --allow-vnet-access \ --allow-forwarded-trafficCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来同步对等连接:
az network vnet peering sync -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-azure-vnet-to-peerpod-vnet \ --vnet-name "${AZURE_VNET_NAME}"$ az network vnet peering sync -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-azure-vnet-to-peerpod-vnet \ --vnet-name "${AZURE_VNET_NAME}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来完成 peering 连接:
az network vnet peering create -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-peerpod-vnet-to-azure-vnet \ --vnet-name "${PEERPOD_VNET_NAME}" \ --remote-vnet "${AZURE_VNET_NAME}" --allow-vnet-access \ --allow-forwarded-traffic$ az network vnet peering create -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-peerpod-vnet-to-azure-vnet \ --vnet-name "${PEERPOD_VNET_NAME}" \ --remote-vnet "${AZURE_VNET_NAME}" --allow-vnet-access \ --allow-forwarded-trafficCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,从集群 VNet 检查对等连接状态:
az network vnet peering show -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-azure-vnet-to-peerpod-vnet \ --vnet-name "${AZURE_VNET_NAME}" \ --query "peeringState" -o tsv$ az network vnet peering show -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-azure-vnet-to-peerpod-vnet \ --vnet-name "${AZURE_VNET_NAME}" \ --query "peeringState" -o tsvCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这应该返回
Connected。运行以下命令,验证 NAT 网关是否已附加到对等 pod 子网:
az network vnet subnet show --resource-group "${AZURE_RESOURCE_GROUP}" \ --vnet-name "${PEERPOD_VNET_NAME}" --name "${PEERPOD_SUBNET_NAME}" \ --query "natGateway.id" -o tsv$ az network vnet subnet show --resource-group "${AZURE_RESOURCE_GROUP}" \ --vnet-name "${PEERPOD_VNET_NAME}" --name "${PEERPOD_SUBNET_NAME}" \ --query "natGateway.id" -o tsvCopy to Clipboard Copied! Toggle word wrap Toggle overflow