4.6. 使用自定义网络在 AWS 上安装集群
在 OpenShift Container Platform 版本 4.8 中,您可以使用自定义网络配置选项在 Amazon Web Services(AWS)上安装集群。通过自定义网络配置,您的集群可以与环境中现有的 IP 地址分配共存,并与现有的 MTU 和 VXLAN 配置集成。
大部分网络配置参数必须在安装过程中设置,只有 kubeProxy
配置参数可以在运行的集群中修改。
4.6.1. 先决条件
- 您可以参阅有关 OpenShift Container Platform 安装和更新流程的详细信息。
- 您可以阅读有关选择集群安装方法的文档,并为用户准备它。
已将 AWS 帐户配置为托管集群。
重要如果您的计算机上存储有 AWS 配置集,则不要在使用多因素验证设备的同时使用您生成的临时会话令牌。在集群的整个生命周期中,集群会持续使用您的当前 AWS 凭证来创建 AWS 资源,因此您必须使用基于密钥的长期凭证。要生成适当的密钥,请参阅 AWS 文档中的管理 IAM 用户的访问密钥。您可在运行安装程序时提供密钥。
- 如果使用防火墙,则必须将其配置为允许集群需要访问的站点。
-
如果环境中无法访问云身份和访问管理(IAM)API,或者不想将管理员级别的凭证 secret 存储在
kube-system
命名空间中,您可以手动创建和维护 IAM 凭证。
4.6.2. OpenShift Container Platform 的互联网访问
在 OpenShift Container Platform 4.8 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类基础架构上执行受限网络安装。在此过程中,您要下载所需的内容,并使用它在镜像 registry(mirror registry) 中填充安装集群并生成安装程序所需的软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群之前,要更新 registry 镜像系统中的内容。
4.6.3. 为集群节点的 SSH 访问生成密钥对
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥会添加到每个节点中 core
用户的 ~/.ssh/authorized_keys
列表中,从而启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对以 core
用户身份通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,私钥身份必须由 SSH 进行管理,供您的本地用户使用。
如果要通过 SSH 连接集群节点来执行安装调试或灾难恢复,您必须在安装过程中提供 SSH 公钥。./openshift-install gather
命令还需要在集群节点上放置 SSH 公钥。
如果可能需要进行灾难恢复或调试,则不要在生产环境中跳过这个过程。
您必须使用一个本地密钥,而不要使用在特定平台上配置的密钥,如 AWS 密钥对。
流程
如果您的本地机器上没有用于在集群节点上进行身份验证 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 1
- 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519
。如果您已有密钥对,请确保您的公钥位于~/.ssh
目录中。
注意如果您计划在
x86_64
架构中安装使用 FIPS 验证的/Modules in Process 加密库的 OpenShift Container Platform 集群,不要创建使用ed25519
算法的密钥。反之,创建一个使用rsa
或ecdsa
算法的密钥。查看公共 SSH 密钥:
$ cat <path>/<file_name>.pub
例如,运行以下命令查看
~/.ssh/id_ed25519.pub
公钥:$ cat ~/.ssh/id_ed25519.pub
将 SSH 私钥身份添加到您本地用户的 SSH 代理(如果尚未添加)。在集群节点上进行免密码 SSH 身份验证,或者您想要使用
./openshift-install gather
命令,则需要使用 SSH 代理进行管理。注意在某些发行版中,会自动管理默认 SSH 私钥(如
~/.ssh/id_rsa
和~/.ssh/id_dsa
)。如果
ssh-agent
进程还没有针对您的本地用户运行,请将其作为后台任务启动:$ eval "$(ssh-agent -s)"
输出示例
Agent pid 31874
注意如果您的集群采用 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent
:$ ssh-add <path>/<file_name> 1
- 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
后续步骤
- 在安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
4.6.4. 获取安装程序
在安装 OpenShift Container Platform 之前,将安装文件下载到本地计算机上。
先决条件
- 运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB
流程
- 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐号,请使用自己的凭证登录。如果没有,请创建一个帐户。
- 选择您的基础架构供应商。
进入适用于您的安装类型的页面,下载您的操作系统的安装程序,并将文件放在要保存安装配置文件的目录中。。
重要安装程序会在用来安装集群的计算机上创建若干文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。
重要删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ tar xvf openshift-install-linux.tar.gz
- 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。通过此 pull secret,您可以进行所含授权机构提供的服务的身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
4.6.5. 网络配置阶段
OpenShift Container Platform 安装前有两个阶段,您可以在其中自定义网络配置。
- 阶段 1
在创建清单文件前,您可以自定义
install-config.yaml
文件中的以下网络相关字段:-
networking.networkType
-
networking.clusterNetwork
-
networking.serviceNetwork
networking.machineNetwork
有关这些字段的更多信息,请参阅安装配置参数。
注意将
networking.machineNetwork
设置为与首选 NIC 所在的 CIDR 匹配。
-
- 阶段 2
-
在运行
openshift-install create manifests
创建清单文件后,您可以只使用您要修改的字段定义一个自定义 Cluster Network Operator 清单。您可以使用清单来指定高级网络配置。
在 2 阶段,您无法覆盖 install-config.yaml
文件中的 1 阶段中指定的值。但是,您可以在第 2 阶段进一步自定义集群网络供应商。
4.6.6. 创建安装配置文件
您可以自定义在 Amazon Web Services (AWS) 上安装的 OpenShift Container Platform 集群。
先决条件
- 获取 OpenShift Container Platform 安装程序以及集群的 pull secret。
- 在订阅级别获取服务主体权限。
流程
创建
install-config.yaml
文件。更改到包含安装程序的目录,再运行以下命令:
$ ./openshift-install create install-config --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定用于保存安装程序所创建的文件的目录名称。
重要指定一个空目录。一些安装信息,如 bootstrap X.509 证书,有较短的过期间隔,因此不要重复使用安装目录。如果要重复使用另一个集群安装中的个别文件,可以将其复制到您的目录中。但是,一些安装数据的文件名可能会在发行版本之间有所改变。从 OpenShift Container Platform 老版本中复制安装文件时要格外小心。
在提示符处,提供您的云的配置详情:
可选:选择用来访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。- 选择 AWS 作为目标平台。
- 如果计算机上没有保存 Amazon Web Services (AWS) 配置集,请为您配置用于运行安装程序的用户输入 AWS 访问密钥 ID 和 Secret 访问密钥。
- 选择要将集群部署到的 AWS 区域。
- 选择您为集群配置的 Route 53 服务的基域。
- 为集群输入一个描述性名称。
- 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret。
-
修改
install-config.yaml
文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。 备份
install-config.yaml
文件,以便用于安装多个集群。重要install-config.yaml
文件会在安装过程中消耗掉。如果要重复使用此文件,必须现在备份。
4.6.6.1. 安装配置参数
在部署 OpenShift Container Platform 集群前,您可以提供参数值,以描述托管集群的云平台的帐户并选择性地自定义集群平台。在创建 install-config.yaml
安装配置文件时,您可以通过命令行来提供所需的参数的值。如果要自定义集群,可以修改 install-config.yaml
文件来提供关于平台的更多信息。
安装之后,您无法修改 install-config.yaml
文件中的这些参数。
openshift-install
命令不验证参数的字段名称。如果指定了不正确的名称,则不会创建相关的文件或对象,且不会报告错误。确保所有指定的参数的字段名称都正确。
4.6.6.1.1. 所需的配置参数
下表描述了所需的安装配置参数:
参数 | 描述 | 值 |
---|---|---|
|
| 字符串 |
|
云供应商的基域。此基础域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 |
完全限定域名或子域名,如 |
|
Kubernetes 资源 | 对象 |
|
集群的名称。集群的 DNS 记录是 |
小写字母,连字符(- |
|
执行安装的具体平台配置: | 对象 |
| 从 Red Hat OpenShift Cluster Manager 获取 pull secret,验证从 Quay.io 等服务中下载 OpenShift Container Platform 组件的容器镜像。 |
{ "auths":{ "cloud.openshift.com":{ "auth":"b3Blb=", "email":"you@example.com" }, "quay.io":{ "auth":"b3Blb=", "email":"you@example.com" } } } |
4.6.6.1.2. 网络配置参数
您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。
只支持 IPv4 地址。
参数 | 描述 | 值 |
---|---|---|
| 集群网络的配置。 | 对象 注意
您不能在安装后修改 |
| 要安装的集群网络供应商 Container Network Interface (CNI)插件。 |
|
| pod 的 IP 地址块。
默认值为 如果您指定多个 IP 地址块,则块不得互相重叠。 | 一个对象数组。例如: networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 |
|
使用 一个 IPv4 网络。 |
使用 CIDR 形式的 IP 地址块。IPv4 块的前缀长度介于 |
|
分配给每个单独节点的子网前缀长度。例如,如果 | 子网前缀。
默认值为 |
|
服务的 IP 地址块。默认值为 OpenShift SDN 和 OVN-Kubernetes 网络供应商只支持服务网络的一个 IP 地址块。 | CIDR 格式具有 IP 地址块的数组。例如: networking: serviceNetwork: - 172.30.0.0/16 |
| 机器的 IP 地址块。 如果您指定多个 IP 地址块,则块不得互相重叠。 | 一个对象数组。例如: networking: machineNetwork: - cidr: 10.0.0.0/16 |
|
使用 | CIDR 表示法中的 IP 网络块。
例如: 注意
将 |
4.6.6.1.3. 可选配置参数
下表描述了可选安装配置参数:
参数 | 描述 | 值 |
---|---|---|
| 添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用这个信任捆绑包。 | 字符串 |
| 组成计算节点的机器的配置。 |
|
|
决定池中机器的指令集合架构。目前不支持异构集群,因此所有池都必须指定相同的架构。有效值为 | 字符串 |
|
是否在计算机器上启用或禁用并发多线程或 重要 如果禁用并发多线程,请确保在容量规划时考虑到机器性能可能会显著降低的问题。 |
|
|
使用 |
|
|
使用 |
|
| 要置备的计算机器数量,也称为 worker 机器。 |
大于或等于 |
| 组成 control plane 的机器的配置。 |
|
|
决定池中机器的指令集合架构。目前不支持异构集群,因此所有池都必须指定相同的架构。有效值为 | 字符串 |
|
是否在 control plane 机器上启用或禁用并发多线程或 重要 如果禁用并发多线程,请确保在容量规划时考虑到机器性能可能会显著降低的问题。 |
|
|
使用 |
|
|
使用 |
|
| 要置备的 control plane 机器数量。 |
唯一支持的值是 |
| Cloud Credential Operator(CCO)模式。如果没有指定任何模式,CCO 会动态地尝试决定提供的凭证的功能,在支持多个模式的平台上使用 mint 模式。 注意 不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅 Cluster Operator 参考内容中的 Cloud Credential Operator 条目。 |
|
|
启用或禁用 FIPS 模式。默认为 重要
只有在 注意 如果使用 Azure File 存储,则无法启用 FIPS 模式。 |
|
| release-image 内容的源和仓库。 |
对象数组。包括一个 |
|
使用 | 字符串 |
| 指定可能还包含同一镜像的一个或多个仓库。 | 字符串数组 |
| 如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。 |
|
| 用于验证集群机器访问的 SSH 密钥或密钥。 注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 | 一个或多个密钥。例如: sshKey: <key1> <key2> <key3> |
4.6.6.1.4. 可选的 AWS 配置参数
下表描述了可选的 AWS 配置参数:
参数 | 描述 | 值 |
---|---|---|
| 用于为集群引导计算机器的 AWS AMI。对于需要自定义 RHCOS AMI 的区域来说,这是必需的。 | 属于集合 AWS 区域的任何已发布或自定义 RHCOS AMI。 |
| 一个已存在的 AWS IAM 角色应用到计算机器池实例配置集。您可以使用这些字段与命名方案匹配,并为您的 IAM 角色包含预定义的权限界限。如果未定义,安装程序会创建一个新的 IAM 角色。 | 有效 AWS IAM 角色的名称。 |
| 为根卷保留的每秒输入/输出操作 (IOPS) 数。 |
整数,如 |
| 以 GiB 为单位的根卷大小。 |
整数,如 |
| 根卷的类型。 |
有效的 AWS EBS 卷类型,如 |
| KMS 密钥的 Amazon 资源名称(密钥 ARN)。这是使用特定 KMS 密钥加密 worker 节点的操作系统卷。 | 有效的 密钥 ID 或密钥 ARN。 |
| 计算机器的 EC2 实例类型。 |
有效的 AWS 实例类型,如 |
| 安装程序在其中为计算机机器池创建机器的可用区。如果您提供自己的 VPC,则必须在那个可用域中提供一个子网。 |
有效 AWS 可用区的列表,如 |
| 安装程序在其中创建计算资源的 AWS 区域。 |
任何有效的 AWS 区域,如 |
| 用于为集群引导 control plane 机器的 AWS AMI。对于需要自定义 RHCOS AMI 的区域来说,这是必需的。 | 属于集合 AWS 区域的任何已发布或自定义 RHCOS AMI。 |
| 应用到 control plane 机器池实例配置集的已存在的 AWS IAM 角色。您可以使用这些字段与命名方案匹配,并为您的 IAM 角色包含预定义的权限界限。如果未定义,安装程序会创建一个新的 IAM 角色。 | 有效 AWS IAM 角色的名称。 |
| KMS 密钥的 Amazon 资源名称(密钥 ARN)。这需要使用特定的 KMS 密钥加密 control plane 节点的操作系统卷。 | 有效的 密钥 ID 和密钥 ARN。 |
| control plane 机器的 EC2 实例类型。 |
有效的 AWS 实例类型,如 |
| 安装程序在其中为 control plane 机器池创建机器的可用区。 |
有效 AWS 可用区的列表,如 |
| 安装程序在其中创建 control plane 资源的 AWS 区域。 |
有效的 AWS 区域,如 |
| 用于为集群引导所有机器的 AWS AMI。如果设置,AMI 必须属于与集群相同的区域。对于需要自定义 RHCOS AMI 的区域来说,这是必需的。 | 属于集合 AWS 区域的任何已发布或自定义 RHCOS AMI。 |
| 集群的现有 Route 53 私有托管区。您只能在提供自己的 VPC 时使用已存在的托管区。安装前,托管区必须已经与用户提供的 VPC 关联。另外,托管区的域必须是集群域或集群域的父域。如果未定义,安装程序会创建一个新的托管区。 |
字符串,如 |
| AWS 服务端点名称。只有在必须使用替代 AWS 端点(如 FIPS)时,才需要自定义端点。可以为 EC2、S3、IAM、Elastic Load Balancing、Tagging、Route 53 和 STS AWS 服务指定自定义 API 端点。 | 有效的 AWS 服务端点名称。 |
|
AWS 服务端点 URL。URL 必须使用 | 有效的 AWS 服务端点 URL。 |
| 键与值的映射,安装程序将其作为标签添加到它所创建的所有资源。 |
任何有效的 YAML 映射,如 |
|
如果您提供 VPC,而不是让安装程序为您创建 VPC,请指定要使用的集群子网。子网必须是您指定的同一 | 有效的子网 ID。 |
4.6.6.2. 支持的 AWS 机器类型
OpenShift Container Platform 支持以下 Amazon Web Services(AWS)实例类型。
例 4.17. 机器的实例类型
实例类型 | bootstrap | Control plane | Compute |
---|---|---|---|
| x | ||
| x | ||
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | ||
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | ||
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | ||
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | ||
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | ||
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | ||
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | ||
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | x | |
| x | ||
| x | ||
| x | ||
| x | ||
| x | ||
| x |
4.6.6.3. AWS 的自定义 install-config.yaml 文件示例
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多信息,或修改所需参数的值。
此示例 YAML 文件仅供参考。您必须使用安装程序来获取 install-config.yaml
文件,并且修改该文件。
apiVersion: v1 baseDomain: example.com 1 credentialsMode: Mint 2 controlPlane: 3 4 hyperthreading: Enabled 5 name: master platform: aws: zones: - us-west-2a - us-west-2b rootVolume: iops: 4000 size: 500 type: io1 6 type: m5.xlarge replicas: 3 compute: 7 - hyperthreading: Enabled 8 name: worker platform: aws: rootVolume: iops: 2000 size: 500 type: io1 9 type: c5.4xlarge zones: - us-west-2c replicas: 3 metadata: name: test-cluster 10 networking: 11 clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 10.0.0.0/16 networkType: OpenShiftSDN serviceNetwork: - 172.30.0.0/16 platform: aws: region: us-west-2 12 userTags: adminContact: jdoe costCenter: 7536 amiID: ami-96c6f8f7 13 serviceEndpoints: 14 - name: ec2 url: https://vpce-id.ec2.us-west-2.vpce.amazonaws.com fips: false 15 sshKey: ssh-ed25519 AAAA... 16 pullSecret: '{"auths": ...}' 17
- 1 10 12 17
- 必需。安装程序会提示您输入这个值。
- 2
- 可选:添加此参数来强制 Cloud Credential Operator(CCO)使用指定的模式,而不是让 CCO 动态尝试决定凭证的功能。如需有关 CCO 模式的详情,请查看 Platform Operator 参考内容中的 Cloud Credential Operator 条目。
- 3 7 11
- 如果没有提供这些参数和值,安装程序会提供默认值。
- 4
controlPlane
部分是一个单映射,但compute
部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane
部分的第一行则不可以连字符开头。只使用一个 control plane 池。- 5 8
- 是否要启用或禁用并发多线程或
超线程
。默认情况下,启用并发多线程以提高机器内核的性能。您可以通过将参数值设为Disabled
来禁用。如果您在某些集群机器上禁用并发多线程,则必须在所有集群机器上禁用。重要如果禁用并发多线程,请确保在容量规划时考虑到机器性能可能会显著降低的问题。如果您对机器禁用并发多线程,请使用较大的实例类型,如
m4.2xlarge
或m5.2xlarge
。 - 6 9
- 要为 etcd 配置更快的存储,特别是对于较大的集群,请将存储类型设置为
io1
,并将iops
设为2000
。 - 13
- 用于为集群引导机器的 AMI ID。如果设置,AMI 必须属于与集群相同的区域。
- 14
- AWS 服务端点。在安装到未知 AWS 区域时,需要自定义端点。端点 URL 必须使用
https
协议,主机必须信任该证书。 - 15
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS (RHCOS) 机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
只有在
x86_64
架构中的 OpenShift Container Platform 部署支持 FIPS 验证的/Modules in Process 加密库。 - 16
- 您可以选择提供您用来访问集群中机器的
sshKey
值。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。
4.6.6.4. 在安装过程中配置集群范围代理
生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml
文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。
先决条件
-
您有一个现有的
install-config.yaml
文件。 您检查了集群需要访问的站点,并决定是否需要绕过代理。默认情况下代理所有集群出口流量,包括对托管云供应商 API 的调用。您需要将站点添加到
Proxy
对象的spec.noProxy
字段来绕过代理。注意Proxy
对象status.noProxy
字段使用安装配置中的networking.machineNetwork[].cidr
、networking.clusterNetwork[].cidr
和networking.serviceNetwork[]
字段的值填充。对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,
Proxy
对象status.noProxy
字段也会使用实例元数据端点填充(169.254.169.254
)。-
如果您的集群位于 AWS 上,请将
ec2.<region>.amazonaws.com
、elasticloadbalancing.<region>.amazonaws.com
和s3.<region>.amazonaws.com
端点添加到 VPC 端点。需要这些端点才能完成节点到 AWS EC2 API 的请求。由于代理在容器级别而不是节点级别工作,因此您必须通过 AWS 专用网络将这些请求路由到 AWS EC2 API。在代理服务器中的允许列表中添加 EC2 API 的公共 IP 地址是不够的。
流程
编辑
install-config.yaml
文件并添加代理设置。例如:apiVersion: v1 baseDomain: my.domain.com proxy: httpProxy: http://<username>:<pswd>@<ip>:<port> 1 httpsProxy: https://<username>:<pswd>@<ip>:<port> 2 noProxy: example.com 3 additionalTrustBundle: | 4 -----BEGIN CERTIFICATE----- <MY_TRUSTED_CA_CERT> -----END CERTIFICATE----- ...
- 1
- 用于创建集群外 HTTP 连接的代理 URL。URL 必须是
http
。 - 2
- 用于创建集群外 HTTPS 连接的代理 URL。
- 3
- 要排除在代理中的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。在域前面加
.
来仅匹配子域。例如:.y.com
匹配x.y.com
,但不匹配y.com
。使用*
绕过所有目的地的代理。 - 4
- 如果提供,安装程序会在
openshift-config 命名空间中生成名为
的配置映射来保存额外的 CA 证书。如果您提供user-ca-
bundleadditionalTrustBundle
和至少一个代理设置,则Proxy
对象会被配置为引用trustedCA
字段中的user-ca-bundle
配置映射。然后,Cluster Network Operator 会创建一个trusted-ca-bundle
配置映射,该配置映射将为trustedCA
参数指定的内容与 RHCOS 信任捆绑包合并。additionalTrustBundle
字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。
注意安装程序不支持代理的
readinessEndpoints
字段。- 保存该文件,并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster
的集群范围代理,该代理使用提供的 install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster
Proxy
对象,但它会有一个空 spec
。
只支持名为 cluster
的 Proxy
对象,且无法创建额外的代理。
4.6.7. Cluster Network Operator 配置
集群网络的配置作为 Cluster Network Operator (CNO) 配置的一部分被指定,并存储在名为 cluster
的自定义资源(CR)对象中。CR 指定 operator.openshift.io
API 组中的 Network
API 的字段。
CNO 配置会在集群安装过程中从 Network.config.openshift.io
API 组中的 Network
API 继承以下字段,这些字段无法更改:
clusterNetwork
- 从中分配 pod IP 地址的 IP 地址池。
serviceNetwork
- 服务的 IP 地址池。
defaultNetwork.type
- 集群网络供应商,如 OpenShift SDN 或 OVN-Kubernetes。
您可以通过在名为 cluster
的 CNO 对象中设置 defaultNetwork
对象的字段来为集群指定集群网络供应商配置。
4.6.7.1. Cluster Network Operator 配置对象
Cluster Network Operator(CNO)的字段在下表中描述:
字段 | 类型 | 描述 |
---|---|---|
|
|
CNO 对象的名称。这个名称始终是 |
|
| 用于指定从哪些 IP 地址块分配 Pod IP 地址以及分配给集群中每个节点的子网前缀长度的列表。例如: spec: clusterNetwork: - cidr: 10.128.0.0/19 hostPrefix: 23 - cidr: 10.128.32.0/19 hostPrefix: 23
在创建清单前,您只能在 |
|
| 服务的 IP 地址块。OpenShift SDN 和 OVN-Kubernetes Container Network Interface(CNI)网络供应商只支持服务网络具有单个 IP 地址块。例如: spec: serviceNetwork: - 172.30.0.0/14
在创建清单前,您只能在 |
|
| 为集群网络配置 Container Network Interface(CNI)集群网络供应商。 |
|
| 此对象的字段指定 kube-proxy 配置。如果您使用 OVN-Kubernetes 集群网络供应商,则 kube-proxy 的配置不会起作用。 |
defaultNetwork 对象配置
defaultNetwork
对象的值在下表中定义:
字段 | 类型 | 描述 |
---|---|---|
|
|
注意 OpenShift Container Platform 默认使用 OpenShift SDN Container Network Interface(CNI)集群网络供应商。 |
|
| 此对象仅对 OpenShift SDN 集群网络供应商有效。 |
|
| 此对象仅对 OVN-Kubernetes 集群网络供应商有效。 |
配置 OpenShift SDN CNI 集群网络供应商
下表描述了 OpenShift SDN Container Network Interface(CNI)集群网络供应商的配置字段。
字段 | 类型 | 描述 |
---|---|---|
|
|
配置 OpenShift SDN 的网络隔离模式。默认值为
|
|
| VXLAN 覆盖网络的最大传输单元 (MTU) 。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。 如果自动探测的值不是您期望的,请确认节点上主网络接口中的 MTU 是正确的。您不能使用这个选项更改节点上主网络接口的 MTU 值。
如果您的集群中的不同节点需要不同的 MTU 值,则必须将此值设置为比集群中的最低 MTU 值小 集群安装后无法更改这个值。 |
|
|
用于所有 VXLAN 数据包的端口。默认值为 如果您在虚拟环境中运行,并且现有节点是另一个 VXLAN 网络的一部分,那么可能需要更改此值。例如,当在 VMware NSX-T 上运行 OpenShift SDN 覆盖时,您必须为 VXLAN 选择一个备用端口,因为两个 SDN 都使用相同的默认 VXLAN 端口号。
在 Amazon Web Services (AWS) 上,您可以在端口 |
OpenShift SDN 配置示例
defaultNetwork: type: OpenShiftSDN openshiftSDNConfig: mode: NetworkPolicy mtu: 1450 vxlanPort: 4789
配置 OVN-Kubernetes CNI 集群网络供应商
下表描述了 OVN-Kubernetes CNI 集群网络供应商的配置字段。
字段 | 类型 | 描述 |
---|---|---|
|
| Geneve(Generic Network Virtualization Encapsulation)覆盖网络的最大传输单元(MTU)。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。 如果自动探测的值不是您期望的,请确认节点上主网络接口中的 MTU 是正确的。您不能使用这个选项更改节点上主网络接口的 MTU 值。
如果您的集群中的不同节点需要不同的 MTU 值,则必须将此值设置为比集群中的最低 MTU 值小 集群安装后无法更改这个值。 |
|
|
用于所有 Geneve 数据包的端口。默认值为 |
|
| 指定一个空对象来启用 IPsec 加密。集群安装后无法更改这个值。 |
|
| 指定用于自定义网络策略审计日志的配置对象。如果未设置,则使用默认的审计日志设置。 |
字段 | 类型 | 描述 |
---|---|---|
| 整数 |
每个节点每秒生成的最大消息数。默认值为每秒 |
| 整数 |
审计日志的最大大小(以字节为单位)。默认值为 |
| 字符串 | 以下附加审计日志目标之一:
|
| 字符串 |
RFC5424 中定义的 syslog 工具,如 |
OVN-Kubernetes 配置示例
defaultNetwork: type: OVNKubernetes ovnKubernetesConfig: mtu: 1400 genevePort: 6081 ipsecConfig: {}
kubeProxyConfig 对象配置
kubeProxyConfig
对象的值在下表中定义:
字段 | 类型 | 描述 |
---|---|---|
|
|
注意
由于 OpenShift Container Platform 4.3 及更高版本中引进了性能上的改进,现在不再需要调整 |
|
|
刷新 kubeProxyConfig: proxyArguments: iptables-min-sync-period: - 0s |
4.6.8. 指定高级网络配置
您可以使用集群网络供应商的高级网络配置将集群集成到现有的网络环境中。您只能在安装集群前指定高级网络配置。
不支持通过修改安装程序创建的 OpenShift Container Platform 清单文件来自定义网络配置。支持应用您创建的清单文件,如以下流程所示。
先决条件
-
您已创建了
install-config.yaml
文件,并完成了对其所做的任何修改。
流程
进入包含安装程序的目录并创建清单:
$ ./openshift-install create manifests --dir <installation_directory> 1
- 1
<installation_directory>
指定包含集群的install-config.yaml
文件的目录的名称。
在
<installation_directory>/manifests/
目录下,为高级网络配置创建一个名为cluster-network-03-config.yml
的 stub 清单文件:apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec:
在
cluster-network-03-config.yml
文件中指定集群的高级网络配置,如下例所示:为 OpenShift SDN 网络供应商指定不同的 VXLAN 端口
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: defaultNetwork: openshiftSDNConfig: vxlanPort: 4800
为 OVN-Kubernetes 网络供应商启用 IPsec
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: defaultNetwork: ovnKubernetesConfig: ipsecConfig: {}
-
可选:备份
manifests/cluster-network-03-config.yml
文件。在创建 Ignition 配置文件时,安装程序会消耗manifests/
目录。
有关在 AWS 中使用网络负载平衡(Network Load Balancer)的更多信息,请参阅 使用网络负载平衡器在 AWS 上配置 Ingress 集群流量。
4.6.9. 在新 AWS 集群上配置 Ingress Controller 网络负载平衡
您可在新集群中创建一个由 AWS Network Load Balancer(NLB)支持的 Ingress Controller。
先决条件
-
创建
install-config.yaml
文件并完成对其所做的任何修改。
流程
在新集群中,创建一个由 AWS NLB 支持的 Ingress Controller。
进入包含安装程序的目录并创建清单:
$ ./openshift-install create manifests --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定含有集群的install-config.yaml
文件的目录的名称。
在
<installation_directory>/manifests/
目录中创建一个名为cluster-ingress-default-ingresscontroller.yaml
的文件:$ touch <installation_directory>/manifests/cluster-ingress-default-ingresscontroller.yaml 1
- 1
- 对于
<installation_directory>
,请指定包含集群的manifests/
目录的目录名称。
创建该文件后,
manifests/
目录中会包含多个网络配置文件,如下所示:$ ls <installation_directory>/manifests/cluster-ingress-default-ingresscontroller.yaml
输出示例
cluster-ingress-default-ingresscontroller.yaml
在编辑器中打开
cluster-ingress-default-ingresscontroller.yaml
文件,并输入描述您想要的 Operator 配置的自定义资源(CR):apiVersion: operator.openshift.io/v1 kind: IngressController metadata: creationTimestamp: null name: default namespace: openshift-ingress-operator spec: endpointPublishingStrategy: loadBalancer: scope: External providerParameters: type: AWS aws: type: NLB type: LoadBalancerService
-
保存
cluster-ingress-default-ingresscontroller.yaml
文件并退出文本编辑器。 -
可选:备份
manifests/cluster-ingress-default-ingresscontroller.yaml
文件。创建集群时,安装程序会删除manifests/
目录。
4.6.10. 使用 OVN-Kubernetes 配置混合网络
您可以将集群配置为使用 OVN-Kubernetes 的混合网络。这允许支持不同节点网络配置的混合集群。例如:集群中运行 Linux 和 Windows 节点时需要这样做。
您必须在安装集群过程中使用 OVN-Kubernetes 配置混合网络。您不能在安装过程中切换到混合网络。
先决条件
-
您在
install-config.yaml
文件中为networking.networkType
参数定义了OVNKubernetes
。如需更多信息,请参阅有关在所选云供应商上配置 OpenShift Container Platform 网络自定义的安装文档。
流程
进入包含安装程序的目录并创建清单:
$ ./openshift-install create manifests --dir <installation_directory>
其中:
<installation_directory>
-
指定包含集群的
install-config.yaml
文件的目录名称。
在
<installation_directory>/manifests/
目录下,为高级网络配置创建一个名为cluster-network-03-config.yml
的 stub 清单文件:$ cat <<EOF > <installation_directory>/manifests/cluster-network-03-config.yml apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: EOF
其中:
<installation_directory>
-
指定包含集群的
manifests/
目录的目录名称。
在编辑器中打开
cluster-network-03-config.yml
文件,并使用混合网络配置 OVN-Kubernetes,如下例所示:指定混合网络配置
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: defaultNetwork: ovnKubernetesConfig: hybridOverlayConfig: hybridClusterNetwork: 1 - cidr: 10.132.0.0/14 hostPrefix: 23 hybridOverlayVXLANPort: 9898 2
- 1
- 指定用于额外覆盖网络上节点的 CIDR 配置。
hybridClusterNetwork
CIDR 无法与clusterNetwork
CIDR 重叠。 - 2
- 为额外覆盖网络指定自定义 VXLAN 端口。这是在 vSphere 上安装的集群中运行 Windows 节点所需要的,且不得为任何其他云供应商配置。自定义端口可以是除默认
4789
端口外的任何打开的端口。有关此要求的更多信息,请参阅 Microsoft 文档中的 Pod 到主机间的 pod 连接性。
注意Windows Server Long-Term Servicing Channel(LTSC):Windows Server 2019 在带有自定义
hybridOverlayVXLANPort
值的集群中不被支持,因为这个 Windows server 版本不支持选择使用自定义的 VXLAN 端口。-
保存
cluster-network-03-config.yml
文件,再退出文本编辑器。 -
可选:备份
manifests/cluster-network-03-config.yml
文件。创建集群时,安装程序会删除manifests/
目录。
有关在同一集群中使用 Linux 和 Windows 节点的更多信息,请参阅了解 Windows 容器工作负载。
4.6.11. 部署集群
您可以在兼容云平台中安装 OpenShift Container Platform。
安装程序的 create cluster
命令只能在初始安装过程中运行一次。
先决条件
- 配置托管集群的云平台的帐户。
- 获取 OpenShift Container Platform 安装程序以及集群的 pull secret。
流程
更改为包含安装程序的目录并初始化集群部署:
$ ./openshift-install create cluster --dir <installation_directory> \ 1 --log-level=info 2
注意如果您在主机上配置的云供应商帐户没有足够的权限来部署集群,安装过程将会停止,并且显示缺少的权限。
集群部署完成后,终端会显示访问集群的信息,包括指向其 Web 控制台的链接和
kubeadmin
用户的凭证。输出示例
... INFO Install complete! INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig' INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com INFO Login to the console with user: "kubeadmin", and password: "4vYBz-Ee6gm-ymBZj-Wt5AL" INFO Time elapsed: 36m22s
注意当安装成功时,集群访问和凭证信息还会输出到
<installation_directory>/.openshift_install.log
。重要-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外情况是,您需要手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书中恢复的文档。 - 建议您在生成 12 小时后使用 Ignition 配置文件,因为集群安装后 24 小时证书从 16 小时轮转至 22 小时。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中运行证书更新时避免安装失败。
重要您不得删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外情况是,您需要手动批准待处理的
可选:从您用来安装集群的 IAM 帐户删除或禁用
AdministratorAccess
策略。注意只有在安装过程中才需要
AdministratorAccess
策略提供的升级权限。
4.6.12. 通过下载二进制文件安装 OpenShift CLI
您需要安装 CLI(oc
) 来使用命令行界面与 OpenShift Container Platform 进行交互。您可在 Linux 、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则无法使用 OpenShift Container Platform 4.8 中的所有命令。下载并安装新版本的 oc
。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 进入到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 在 Version 下拉菜单中选择相应的版本。
- 单击 OpenShift v4.8 Linux 客户端 条目旁边的 Download Now,再保存文件。
解包存档:
$ tar xvzf <file>
把
oc
二进制代码放到PATH
中的目录中。执行以下命令可以查看当前的
PATH
设置:$ echo $PATH
安装 OpenShift CLI 后,可以使用 oc
命令:
$ oc <command>
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc
)二进制代码。
流程
- 进入到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 在 Version 下拉菜单中选择相应的版本。
- 单击 OpenShift v4.8 Windows 客户端 条目旁边的 Download Now,再保存文件。
- 使用 ZIP 程序解压存档。
把
oc
二进制代码放到PATH
中的目录中。要查看您的
PATH
,请打开命令提示窗口并执行以下命令:C:\> path
安装 OpenShift CLI 后,可以使用 oc
命令:
C:\> oc <command>
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc
)二进制代码。
流程
- 进入到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 在 Version 下拉菜单中选择相应的版本。
- 单击 OpenShift v4.8 MacOSX 客户端 条目旁边的 Download Now,再保存文件。
- 解包和解压存档。
将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,打开一个终端窗口并执行以下命令:$ echo $PATH
安装 OpenShift CLI 后,可以使用 oc
命令:
$ oc <command>
4.6.13. 使用 CLI 登录到集群
您可以通过导出集群 kubeconfig
文件,以默认系统用户身份登录集群。kubeconfig
文件包含关于集群的信息,供 CLI 用于将客户端连接到正确集群和 API 服务器。该文件特只适用于一个特定的集群,在 OpenShift Container Platform 安装过程中创建。
先决条件
- 已部署了 OpenShift Container Platform 集群。
-
已安装
oc
CLI。
流程
导出
kubeadmin
凭证:$ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
使用导出的配置,验证能否成功运行
oc
命令:$ oc whoami
输出示例
system:admin
4.6.14. 使用 Web 控制台登录到集群
kubeadmin
用户默认在 OpenShift Container Platform 安装后存在。您可以使用 OpenShift Container Platform Web 控制台以 kubeadmin
用户身份登录集群。
先决条件
- 有访问安装主机的访问权限。
- 您完成了集群安装,所有集群 Operator 都可用。
流程
从安装主机上的
kubeadmin
-password
文件中获取 kubeadmin 用户的密码:$ cat <installation_directory>/auth/kubeadmin-password
注意另外,您还可以从安装主机上的
<installation_directory>/.openshift_install.log
日志文件获取kubeadmin
密码。列出 OpenShift Container Platform Web 控制台路由:
$ oc get routes -n openshift-console | grep 'console-openshift'
注意另外,您还可以从安装主机上的
<installation_directory>/.openshift_install.log 日志
文件获取 OpenShift Container Platform 路由。输出示例
console console-openshift-console.apps.<cluster_name>.<base_domain> console https reencrypt/Redirect None
-
在 Web 浏览器中导航到上一命令输出中包括的路由,以
kubeadmin
用户身份登录。
其他资源
- 如需有关访问和了解 OpenShift Container Platform Web 控制台的更多信息,请参阅访问 Web 控制台。
4.6.15. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.8 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于远程健康监控。
4.6.16. 后续步骤
- 验证安装。
- 自定义集群。
- 如果需要,您可以选择不使用远程健康报告。
- 如果需要,您可以删除云供应商凭证。