15.2. 关于使用自定义 VPC
OpenShift Container Platform 4.14 安装程序无法在 AWS Outposts 上自动部署 AWS 子网,因此您需要手动配置 VPC。因此,您必须在 Amazon Web Services (AWS) 的现有 Amazon Virtual Private Cloud (VPC) 中将集群部署到现有子网中。另外,您可以通过将 OpenShift Container Platform 部署到现有的 AWS VPC 中,您可能会避开新帐户中的限制,或者更容易地利用公司所设置的操作限制。
因为安装程序无法了解您现有子网中还有哪些其他组件,所以无法选择子网 CIDR 。您必须为安装集群的子网配置网络。
15.2.1. 使用 VPC 的要求 复制链接链接已复制到粘贴板!
安装程序不再创建以下组件:
- 互联网网关
- NAT 网关
- 子网
- 路由表
- VPCs
- VPC DHCP 选项
- VPC 端点
安装程序要求您使用由云提供的 DNS 服务器。不支持使用自定义 DNS 服务器,并导致安装失败。
如果使用自定义 VPC,您必须为安装程序和集群正确配置它及其子网。有关创建和管理 AWS VPC VPC 的更多信息,请参阅 AWS 文档中的 Amazon VPC 控制台向导配置以及处理 VPC 和子网。
安装程序无法:
- 分割网络范围供集群使用。
- 设置子网的路由表。
- 设置 VPC 选项,如 DHCP。
您必须在安装集群前完成这些任务。有关在 AWS VPC 中配置网络的更多信息,请参阅 VPC 的 VPC 网络组件和您的 VPC 的路由表。
您的 VPC 必须满足以下特征:
要允许在 AWS Outposts 中使用远程 worker 创建 OpenShift Container Platform,您必须在 AWS Outpost 实例中创建一个专用子网,以便创建工作负载实例,并在 AWS 区域中的一个专用子网来创建 control plane 实例。如果您在区域中指定多个专用子网,则 control plane 实例将在这些子网中分发。您还需要在用于专用子网的每个可用区中创建公共子网,包括 Outpost 专用子网,因为网络 Load Balancers 将在 API 服务器和 Ingress 网络的 AWS 区域中创建,作为集群安装的一部分。可以在与 Outpost 专用子网相同的可用区中创建 AWS 区域专用子网。
在 AWS 区域中为 control plane 使用的每个可用区创建一个公共和私有子网。每个可用区都不包含 AWS 区域中的一个公共子网。有关此类配置的示例,请参阅 AWS 文档中的具有公共和私有子网(NAT)的 VPC。
要在 AWS Outposts 中创建专用子网,首先需要确保 Outpost 实例位于所需的可用区中。然后,您可以通过添加 Outpost ARN,在 Outpost 实例中在该可用区中创建专用子网。确保在同一可用区中创建的 AWS 区域中存在另一个公共子网。
记录每个子网 ID。完成安装要求您在 AWS 区域(在
install-config.yaml
文件的platform
部分中)输入所有子网 ID,并将 workermachineset
更改为使用 Outpost 中创建的专用子网 ID。请参阅 AWS 文档中的查找子网 ID。重要如果您需要在 AWS Outposts 中创建公共子网,请验证此子网没有用于网络或经典 LoadBalancer,否则 LoadBalancer 创建会失败。要达到此目的,
kubernetes.io/cluster/.*-outposts: owned
的特殊标签必须包含在子网中。-
VPC 的 CIDR 块必须包含
Networking.machineCIDR
,它是集群机器的 IP 地址池。子网 CIDR 块必须属于您指定的机器 CIDR。 VPC 必须附加一个公共互联网网关。对于每个可用区:
- 公共子网需要路由到互联网网关。
- 公共子网需要一个具有 EIP 地址的 NAT 网关。
- 专用子网需要路由到公共子网中的 NAT 网关。
注意要通过本地网络访问本地集群,VPC 必须与您的 Outpost 的本地网关路由表关联。如需更多信息,请参阅 AWS Outposts 用户指南中的 VPC 关联。
VPC 不能使用
kubernetes.io/cluster/.*: owned
,Name
, 和openshift.io/cluster
标签。安装程序会修改子网以添加
kubernetes.io/cluster/.*: shared
标签,因此您的子网必须至少有一个可用的空闲标签插槽。请参阅 AWS 文档中的 标签限制 部分,以确认安装程序可以为您指定的每个子网添加标签。您不能使用Name
标签,因为它与 EC2Name
字段重叠,且安装失败。您需要在您的 VPC 中启用
enableDnsSupport
和enableDnsHostnames
属性,以便集群可以使用附加到 VPC 中的 Route 53 区来解析集群内部的 DNS 记录。请参阅 AWS 文档中的您的 VPC 中的 DNS 支持部分 。如果要使用您自己的 Route 53 托管私有区,您必须在安装集群前将现有托管区与 VPC 相关联。您可以使用
install-config.yaml
文件中的platform.aws.hostedZone
和platform.aws.hostedZoneRole
字段定义托管区。您可以通过与安装集群的帐户共享来使用来自另一个帐户的私有托管区。如果使用另一个帐户的私有托管区,则必须使用Passthrough
或Manual
凭证模式。
15.2.1.1. 选项 1:创建 VPC 端点 复制链接链接已复制到粘贴板!
创建 VPC 端点,并将其附加到集群使用的子网。将端点命名为如下:
-
ec2.<aws_region>.amazonaws.com
-
elasticloadbalancing.<aws_region>.amazonaws.com
-
s3.<aws_region>.amazonaws.com
通过这个选项,网络流量在 VPC 和所需的 AWS 服务之间保持私有。
15.2.1.2. 选项 2:创建一个没有 VPC 端点的代理 复制链接链接已复制到粘贴板!
作为安装过程的一部分,您可以配置 HTTP 或 HTTPS 代理。使用此选项时,互联网流量会通过代理访问所需的 AWS 服务。
15.2.1.3. 选项 3:创建带有 VPC 端点的代理 复制链接链接已复制到粘贴板!
作为安装过程的一部分,您可以使用 VPC 端点配置 HTTP 或 HTTPS 代理。创建 VPC 端点,并将其附加到集群使用的子网。将端点命名为如下:
-
ec2.<aws_region>.amazonaws.com
-
elasticloadbalancing.<aws_region>.amazonaws.com
-
s3.<aws_region>.amazonaws.com
在 install-config.yaml
文件中配置代理时,将这些端点添加到 noProxy
字段。通过这个选项,代理会阻止集群直接访问互联网。但是,您的 VPC 和所需的 AWS 服务之间网络流量保持私有。
所需的 VPC 组件
您必须提供合适的 VPC 和子网,以便与您的机器通信。
组件 | AWS 类型 | 描述 | |
---|---|---|---|
VPC |
| 您必须提供一个公共 VPC 供集群使用。VPC 使用引用每个子网的路由表的端点,以改进与托管在 S3 中的 registry 的通信。 | |
公共子网 |
| 您的 VPC 必须有 1 到 3 个可用区的公共子网,并将其与适当的入口规则关联。 | |
互联网网关 |
| 您必须有一个公共互联网网关,以及附加到 VPC 的公共路由。在提供的模板中,每个公共子网都有一个具有 EIP 地址的 NAT 网关。这些 NAT 网关允许集群资源(如专用子网实例)访问互联网,而有些受限网络或代理场景则不需要它们。 | |
网络访问控制 |
| 您必须允许 VPC 访问下列端口: | |
端口 | 原因 | ||
| 入站 HTTP 流量 | ||
| 入站 HTTPS 流量 | ||
| 入站 SSH 流量 | ||
| 入站临时流量 | ||
| 出站临时流量 | ||
专用子网 |
| 您的 VPC 可以具有私有子网。提供的 CloudFormation 模板可为 1 到 3 个可用区创建专用子网。要启用在 Outpost 中运行的远程 worker,VPC 必须包含位于 Outpost 实例的专用子网,以及位于对应 AWS 区域的专用子网。如果您使用专用子网,必须为其提供适当的路由和表。 |
15.2.2. VPC 验证 复制链接链接已复制到粘贴板!
要确保您提供的子网适合您的环境,安装程序会确认以下信息:
- 您指定的所有子网都存在。
- 您提供了私有子网。
- 子网 CIDR 属于您指定的机器 CIDR。
- 您为每个可用区提供子网。每个可用区都仅包含一个公共子网,以及 AWS 区域中的一个专用子网(未在 Outpost 实例中创建)。安装 Outpost 实例的可用区应该在 Outpost 实例中包含一个外部专用子网。
- 您可以为每个私有子网可用区提供一个公共子网。机器不会在没有为其提供私有子网的可用区中置备。
如果您销毁使用现有 VPC 的集群,VPC 不会被删除。从 VPC 中删除 OpenShift Container Platform 集群时,kubernetes.io/cluster/.*: shared
标签会从使用它的子网中删除。
15.2.3. 权限划分 复制链接链接已复制到粘贴板!
从 OpenShift Container Platform 4.3 开始,您不需要安装程序置备的基础架构集群部署所需的所有权限。这与您所在机构可能已有的权限划分类似:不同的个人可以在您的云中创建不同的资源。。例如,您可以创建针对于特定应用程序的对象,如实例、存储桶和负载均衡器,但不能创建与网络相关的组件,如 VPC 、子网或入站规则。
您在创建集群时使用的 AWS 凭证不需要 VPC 和 VPC 中的核心网络组件(如子网、路由表、互联网网关、NAT 和 VPN)所需的网络权限。您仍然需要获取集群中的机器需要的应用程序资源的权限,如 ELB 、安全组、S3 存储桶和节点。
15.2.4. 集群间隔离 复制链接链接已复制到粘贴板!
如果您将 OpenShift Container Platform 部署到现有网络中,集群服务的隔离将在以下方面减少:
- 您可以在同一 VPC 中安装多个 OpenShift Container Platform 集群。
- 整个网络允许 ICMP 入站流量。
- 整个网络都允许 TCP 22 入站流量 (SSH)。
- 整个网络都允许 control plane TCP 6443 入站流量 (Kubernetes API)。
- 整个网络都允许 control plane TCP 22623 入站流量 (MCS) 。
15.2.5. AWS 安全组 复制链接链接已复制到粘贴板!
默认情况下,安装程序会创建安全组并将其附加到 control plane 和计算机器。不可修改与默认安全组关联的规则。
但是,您可以将与现有 VPC 关联的其他现有 AWS 安全组应用到 control plane 和计算机器。应用自定义安全组可帮助您满足机构的安全需求,在这种情况下,您需要控制这些机器的传入或传出流量。
作为安装过程的一部分,您可以在部署集群前通过修改 install-config.yaml
文件来应用自定义安全组。
如需更多信息,请参阅"将现有 AWS 安全组应用到集群"。