14.10. 创建用于 AWS 的安装文件
要在 Amazon Web Services (AWS) 上安装 OpenShift Container Platform 并使用 AWS Local Zones,您必须生成安装程序部署集群所需的文件,并进行修改,以便集群只创建要使用的机器。您可以生成并自定义 install-config.yaml
文件和 Kubernetes 清单。
14.10.1. 集群安装的最低资源要求 复制链接链接已复制到粘贴板!
每台集群机器都必须满足以下最低要求:
机器 | 操作系统 | vCPU [1] | 虚拟内存 | Storage | 每秒输入/输出 (IOPS) [2] |
---|---|---|---|---|---|
bootstrap | RHCOS | 4 | 16 GB | 100 GB | 300 |
Control plane(控制平面) | RHCOS | 4 | 16 GB | 100 GB | 300 |
Compute | RHCOS、RHEL 8.6 及更新版本 [3] | 2 | 8 GB | 100 GB | 300 |
- 当未启用并发多线程(SMT)或超线程时,一个 vCPU 相当于一个物理内核。启用后,使用以下公式来计算对应的比例:(每个内核数的线程)× sockets = vCPU。
- OpenShift Container Platform 和 Kubernetes 对磁盘性能非常敏感,建议使用更快的存储速度,特别是 control plane 节点上需要 10 ms p99 fsync 持续时间的 etcd。请注意,在许多云平台上,存储大小和 IOPS 可一起扩展,因此您可能需要过度分配存储卷来获取足够的性能。
- 与所有用户置备的安装一样,如果您选择在集群中使用 RHEL 计算机器,则负责所有操作系统生命周期管理和维护,包括执行系统更新、应用补丁和完成所有其他必要的任务。RHEL 7 计算机器的使用已弃用,并已在 OpenShift Container Platform 4.10 及更新的版本中删除。
如果平台的实例类型满足集群机器的最低要求,则 OpenShift Container Platform 支持使用它。
14.10.2. 为 AWS 测试的实例类型 复制链接链接已复制到粘贴板!
以下 Amazon Web Services (AWS) 实例类型已使用 OpenShift Container Platform 测试,以用于 AWS Local Zones。
将以下图中包含的机器类型用于 AWS 实例。如果您使用没有在图中列出的实例类型,请确保使用的实例大小与集群安装"最小资源要求"中列出的最少资源要求匹配。
例 14.3. 基于 AWS 本地区的 64 位 x86 架构的机器类型
-
c5.*
-
c5d.*
-
m6i.*
-
m5.*
-
r5.*
-
t3.*
14.10.3. 创建安装配置文件 复制链接链接已复制到粘贴板!
生成并自定义安装程序部署集群所需的安装配置文件。
先决条件
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
-
使用红帽发布的附带 Red Hat Enterprise Linux CoreOS(RHCOS)AMI 检查您是否将集群部署到一个区域。如果您要部署到需要自定义 AMI 的区域,如 AWS GovCloud 区域,您必须手动创建
install-config.yaml
文件。
流程
创建
install-config.yaml
文件。进入包含安装程序的目录并运行以下命令:
./openshift-install create install-config --dir <installation_directory>
$ ./openshift-install create install-config --dir <installation_directory>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>
,请指定要存储安装程序创建的文件的目录名称。
重要指定一个空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
在提示符处,提供云的配置详情:
可选: 选择用于访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。- 选择 aws 作为目标平台。
如果计算机上没有保存 AWS 配置集,请为您配置用于运行安装程序的用户输入 AWS 访问密钥 ID 和 secret 访问密钥。
注意AWS 访问密钥 ID 和 secret 访问密钥存储在安装主机上当前用户主目录中的
~/.aws/credentials
中。如果文件中不存在导出的配置集凭证,安装程序会提示您输入凭证。您向安装程序提供的所有凭证都存储在文件中。- 选择要将集群部署到的 AWS 区域。您指定的区域必须是包含您为 AWS 帐户选择的区域相同的区域。
- 选择您为集群配置的 Route 53 服务的基域。
- 为集群输入描述性名称。
- 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret。
编辑
install-config.yaml
文件,为 VPC 使用的可用区提供子网:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加
subnets
部分,并指定 VPC 的 CloudFormation 模板输出的PrivateSubnetIds
和PublicSubnetIds
值。不要在此处包含 Local Zone 子网。
可选:备份
install-config.yaml
文件。重要install-config.yaml
文件会在安装过程中消耗掉。如果要重复使用此文件,必须现在备份。
14.10.4. 创建 Kubernetes 清单文件 复制链接链接已复制到粘贴板!
由于您必须修改一些集群定义文件并手动启动集群机器,因此您必须生成 Kubernetes 清单文件来配置机器。
先决条件
- 已获得 OpenShift Container Platform 安装程序。
-
已创建
install-config.yaml
安装配置文件。 -
安装了
jq
软件包。
流程
运行以下命令,切换到包含 OpenShift Container Platform 安装程序的目录,并为集群生成 Kubernetes 清单:
./openshift-install create manifests --dir <installation_directory>
$ ./openshift-install create manifests --dir <installation_directory>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>
,请指定包含您创建的install-config.yaml
文件的安装目录。
根据网络插件设置默认最大传输单元 (MTU):
重要通常,本地区中的 Amazon EC2 实例和 Region 中的 Amazon EC2 实例之间的最大传输单元 (MTU) 为 1300。请参阅 AWS 文档中的 Local Zones 的工作原理。对于开销,集群网络 MTU 必须总是小于 EC2 MTU。具体开销由您的网络插件决定,例如:
-
OVN-Kubernetes:
100 字节
-
OpenShift SDN:
50 字节
网络插件可以提供额外的功能,如 IPsec,它们还必须减少 MTU。查看文档以了解更多信息。
如果使用
OVN-Kubernetes
网络插件,请输入以下命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用
OpenShift SDN
网络插件,请输入以下命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
OVN-Kubernetes:
在 Local Zone 中为 worker 节点创建机器集清单。
运行以下命令,将包含您选择的 AWS 帐户的 Local Zone 名称的本地变量导出到:
export LZ_ZONE_NAME="<local_zone_name>"
$ export LZ_ZONE_NAME="<local_zone_name>"
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<local_zone_name>
,请指定您选择的 AWS 帐户的 Local Zone,如us-east-1-nyc-1a
。
运行以下命令,查看您要部署到的位置的实例类型:
aws ec2 describe-instance-type-offerings \ --location-type availability-zone \ --filters Name=location,Values=${LZ_ZONE_NAME}
$ aws ec2 describe-instance-type-offerings \ --location-type availability-zone \ --filters Name=location,Values=${LZ_ZONE_NAME} --region <region>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<region>
,请指定您要部署到的区域的名称,如us-east-1
。
运行以下命令,导出一个变量,以定义要在 Local Zone 子网上部署的 worker 机器的实例类型:
export INSTANCE_TYPE="<instance_type>"
$ export INSTANCE_TYPE="<instance_type>"
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<instance_type>
设置为经过测试的实例类型,如c5d.2xlarge
。
运行以下命令,将 AMI ID 存储为本地变量:
export AMI_ID=$(grep ami
$ export AMI_ID=$(grep ami <installation_directory>/openshift/99_openshift-cluster-api_worker-machineset-0.yaml \ | tail -n1 | awk '{print$2}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将子网 ID 存储为本地变量:
export SUBNET_ID=$(aws cloudformation describe-stacks --stack-name "<subnet_stack_name>" \ | jq -r '.Stacks[0].Outputs[0].OutputValue')
$ export SUBNET_ID=$(aws cloudformation describe-stacks --stack-name "<subnet_stack_name>" \
1 | jq -r '.Stacks[0].Outputs[0].OutputValue')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<subnet_stack_name>
,请指定您创建的子网堆栈的名称。
运行以下命令,将集群 ID 存储为本地变量:
export CLUSTER_ID="$(awk '/infrastructureName: / {print $2}' <installation_directory>/manifests/cluster-infrastructure-02-config.yml)"
$ export CLUSTER_ID="$(awk '/infrastructureName: / {print $2}' <installation_directory>/manifests/cluster-infrastructure-02-config.yml)"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 VPC 使用的 Local Zone 创建 worker 清单文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow