你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
通常,在设置群集时,必须指定用于部署群集对象的资源组(如下图所示的基资源组)。 在这种情况下,可以为虚拟网络(VNET)和群集使用相同的资源组,也可以只为 VNET 选择单独的资源组。 这两个资源组都不直接对应于单个群集,因此你可以完全控制它们。 这意味着可以自由创建、修改或删除这些资源组中的资源。
在群集创建过程中,资源提供程序(RP)会建立特定于群集需求的专用资源组。 此组包含各种特定于群集的资源,如节点虚拟机(VM)、负载均衡器和网络安全组(NSG),如下面的托管资源组图所示。 托管资源组受到严格保护,禁止对其内容进行任何修改,包括链接到群集创建期间指定的 VNET 子网的 NSG。 在某些情况下,RP 生成的 NSG 可能不符合某些组织的安全策略。
本文介绍如何使用“自定义”网络安全组(NSG)功能,将驻留在 Base/VNET 资源组(RG)中的预配置 NSG(如以下图中的 BYO-NSG所示)附加到群集子网。 由于拥有此预配置的 NSG,因此可以在群集的生存期内添加/删除规则。
常规功能和限制
在创建群集之前,需要将预配置的 NSG 附加到主子网和辅助角色子网。 未能将预先配置的 NSG 附加到这两个子网会导致发生错误。
可以选择对主子网和工作子网使用相同或不同的预配置的网络安全组(NSG)。
使用您自己的 NSG 时,RP 仍然会在托管资源组中创建一个默认的 NSG,但此 NSG 不会附加到工作节点或主节点的子网中。
无法在现有群集上启用预配置 NSG 功能。 目前,只能在创建群集时启用此功能。
预配置的 NSG 选项无法从 Azure 门户进行配置。
如果在预览期间使用了此功能,则现有的预配置群集现在完全受支持。
注释
如果使用的是“自带”NSG 功能并想要使用 NSG 流日志,请参阅 Azure 网络观察程序文档中 网络安全组的流日志记录 ,而不是特定的流日志文档(这不适用于自带 NSG 功能)。
应用规则
警告
在群集中创建 Kubernetes LoadBalancer 类型服务或 OpenShift 路由时,预配置的 NSG 不会自动更新规则。 因此,必须根据需要手动更新这些规则。 此行为不同于原始行为,在这种情况下,默认 NSG 以编程方式更新。
创建 Kubernetes LoadBalancer 类型服务或群集中的 OpenShift 路由时,默认群集 NSG(在使用此功能时未附加到任何子网)仍将使用规则进行更新。
可以将预配置的 NSG 与使用此功能创建的群集的子网分离。 这会导致具有没有 NSG 的子网的群集。 然后,可以将一组不同的预配置 NSG 附加到群集。 或者,可以将默认 NSG 附加到群集子网(此时群集会像不使用此功能的任何其他群集一样)。
预配置的 NSG 不应具有以下类型的入站/出站拒绝(INBOUND/OUTBOUND DENY)规则,因为这些规则可能会干扰群集的运行,或阻碍支持/站点可靠性工程师(SRE)团队提供支持或管理。 (此处,子网指示子网中的任何或所有 IP 地址以及对应于该子网的所有端口):
主子网←→主子网
辅助角色子网←→辅助角色子网
主子网←→辅助角色子网
配置不当的规则会导致 Azure Monitor 用来 帮助排查预配置的 NSG 的信号。
为了允许流量进入您的公共群集,请在 NSG 中设置以下入站允许规则(或等效规则)。 请参阅群集的默认 NSG,以获取特定详细信息,并查看部署中显示的示例 NSG。 即使 NSG 中没有此类规则,也可以创建群集。
- 对于访问 API 服务器,请从 Internet(或您首选的源 IP)连接到主子网上的端口 6443。
- 若要访问 OpenShift 路由器(因此访问 OpenShift 控制台和 OpenShift 路由),→从 Internet(或首选的源 IP)到群集公共负载均衡器上默认 v4 公共 IP 上的端口 80 和 443。
- 若要访问任何负载均衡器类型 Kubernetes 服务,→从 Internet(或首选的源 IP)访问与群集公共负载均衡器上的服务相对应的公共 IP 上的服务端口。
有关 OpenShift 的网络流和端口要求的详细信息,在配置一个最小允入的预配置 NSG 时,可能会对您有所帮助,请参阅 基本网络流。
部署
创建 VNET 并创建和配置预配置的 NSG
创建 VNET,然后在其中创建主节点子网和工作节点子网。
使用默认规则(也可以没有规则)创建预配置的网络安全组(NSG),并将其附加到主节点子网和工作负载子网。
创建群集并更新预配置的 NSG
创建群集。
az aro create \ --resource-group BASE_RESOURCE_GROUP_NAME \ --name CLUSTER_NAME \ --vnet VNET_NAME \ --master-subnet MASTER_SUBNET_NAME \ --worker-subnet WORKER_SUBNET_NAME \ --client-id CLUSTER_SERVICE_PRINCIPAL_ID \ --client-secret CLUSTER_SERVICE_PRINCIPAL_SECRET \ --enable-preconfigured-nsg根据要求使用规则更新预配置 NSG,同时考虑 功能和限制中提到的要点。
以下示例包含群集公共负载均衡器,如屏幕截图/CLI 输出中所示:
$ oc get svc | grep tools tools LoadBalancer 172.30.182.7 20.141.176.3 80:30520/TCP 143m $ $ oc get svc -n openshift-ingress | grep Load router-default LoadBalancer 172.30.105.218 20.159.139.208 80:31157/TCP,443:31177/TCP 5d20