4.7. 在 OpenStack 上部署托管的 control plane
在 Red Hat OpenStack Platform (RHOSP) 上部署托管 control plane 集群只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以使用在 Red Hat OpenStack Platform (RHOSP) 17.1 上运行的托管集群部署托管的 control plane。
托管的集群 是一个 OpenShift Container Platform 集群,其 API 端点和 control plane 托管在管理集群中。使用托管的 control plane,control plane 作为管理集群中的 pod 存在于管理集群中,而无需为每个 control plane 专用虚拟机或物理机器。
4.7.1. OpenStack 的先决条件 复制链接链接已复制到粘贴板!
在 Red Hat OpenStack Platform (RHOSP) 上创建托管集群前,请确保满足以下要求:
- 有对 OpenShift Container Platform 集群版本 4.17 或更高版本的管理访问权限。此集群可以在裸机、RHOSP 或受支持的公共云上运行。
- HyperShift Operator 安装在管理集群上,如 "Preparing to deploy hosted control plane" 中指定的。
- 管理集群使用 OVN-Kubernetes 配置为默认 pod 网络 CNI。
-
已安装 OpenShift CLI (
oc
)和托管的 control plane CLIhcp
。 一个负载均衡器后端(如 Octavia)安装在管理 OCP 集群中。每个托管集群创建
kube-api
服务需要负载均衡器。- 当使用 Octavia 负载均衡配置 ingress 时,RHOSP Octavia 服务会在托管客户机集群的云中运行。
-
quay.io/openshift-release-dev
仓库有一个有效的 pull secret 文件。 -
管理集群的默认外部网络可从客户机集群访问。
kube-apiserver
load-balancer 类型服务在此网络上创建。 如果您将预定义的浮动 IP 地址用于 ingress,则创建了指向以下通配符域的 DNS 记录:
*.apps.<cluster_name>.<base_domain>
,其中:-
<cluster_name>
是管理集群的名称。 -
<base_domain>
是集群应用程序所在的父 DNS 域。
-
4.7.2. 为 etcd 本地存储准备管理集群 复制链接链接已复制到粘贴板!
在 Red Hat OpenStack Platform (RHOSP)上部署托管 Control Plane (HCP)部署中,您可以使用带有 TopoLVM CSI 驱动程序置备的本地临时存储来提高 etcd 性能,而不依赖于默认的基于 Cinder 的持久性卷声明(PVC)。
先决条件
- 您可以访问安装了 HyperShift 的管理集群。
- 您可以创建和管理 RHOSP 类别和机器集。
-
已安装并配置了
oc
和openstack
CLI 工具。 - 您熟悉 TopoLVM 和逻辑卷管理器(LVM)存储概念。
- 在受管集群中安装了 LVM Storage Operator。如需更多信息,请参阅 OpenShift Container Platform 文档中的存储部分中的"使用 CLI 安装 LVM 存储"。
流程
使用
openstack
CLI,创建具有额外临时磁盘的 Nova 类别。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意当服务器使用该类别创建时,Nova 会自动将临时磁盘附加到实例,并将它格式化为
vfat
。- 创建使用新类别的计算机器集。如需更多信息,请参阅 OpenShift Container Platform 文档中的"在 OpenStack 上创建计算机器集"。
- 扩展机器集以满足您的要求。如果集群为高可用性部署,则必须至少部署 3 个 worker,以便相应地分发 pod。
标记新的 worker 节点,以标识它们以供 etcd 使用。例如:
oc label node <node_name> hypershift-capable=true
$ oc label node <node_name> hypershift-capable=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该标签是任意的;稍后您可以更新它。
在名为
lvmcluster.yaml
的文件中,在 etcd 的本地存储配置中创建以下LVMCluster
自定义资源:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个示例资源中:
-
临时磁盘位置为
/dev/vdb
,在大多数情况下都是如此。验证此位置是否适合您的情况,并请注意,符号链接不被支持。 -
参数
forceWipeDevicesAndDestroyAllData
设置为True
值,因为默认的 Nova 临时磁盘会以 VFAT 格式化。
-
临时磁盘位置为
运行以下命令来应用
LVMCluster
资源:oc apply -f lvmcluster.yaml
oc apply -f lvmcluster.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证
LVMCluster
资源:oc get lvmcluster -A
$ oc get lvmcluster -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME STATUS openshift-storage etcd-hcp Ready
NAMESPACE NAME STATUS openshift-storage etcd-hcp Ready
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证
StorageClass
资源:oc get storageclass
$ oc get storageclass
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE lvms-etcd-class topolvm.io Delete WaitForFirstConsumer true 23m standard-csi (default) cinder.csi.openstack.org Delete WaitForFirstConsumer true 56m
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE lvms-etcd-class topolvm.io Delete WaitForFirstConsumer true 23m standard-csi (default) cinder.csi.openstack.org Delete WaitForFirstConsumer true 56m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您可以使用高性能 etcd 配置部署托管集群。部署过程在"在 OpenStack 上创建托管集群"中进行了描述。
4.7.3. 为入口创建一个浮动 IP 复制链接链接已复制到粘贴板!
如果要在没有手动干预的情况下在托管集群中提供入口,您可以预先为其创建一个浮动 IP 地址。
先决条件
- 您可以访问 Red Hat OpenStack Platform (RHOSP)云。
如果您将预定义的浮动 IP 地址用于 ingress,则创建了指向以下通配符域的 DNS 记录:
*.apps.<cluster_name>.<base_domain>
,其中:-
<cluster_name>
是管理集群的名称。 -
<base_domain>
是集群应用程序所在的父 DNS 域。
-
流程
运行以下命令来创建浮动 IP 地址:
openstack floating ip create <external_network_id>
$ openstack floating ip create <external_network_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<external_network_id>
- 指定外部网络的 ID。
如果您使用 --openstack-ingress-floating-ip
标志指定浮动 IP 地址,但没有提前创建它,cloud-provider-openstack
组件会尝试自动创建它。只有 Neutron API 策略允许创建带有特定 IP 地址的浮动 IP 地址时,此过程才会成功。
4.7.4. 将 RHCOS 镜像上传到 OpenStack 复制链接链接已复制到粘贴板!
如果要在和托管 control plane 和 Red Hat OpenStack Platform (RHOSP)部署上部署节点池时指定要使用的 RHCOS 镜像,请将镜像上传到 RHOSP 云。如果没有上传镜像,OpenStack Resource Controller (ORC)会从 OpenShift Container Platform 镜像下载镜像,并在删除托管集群时删除它。
先决条件
- 您已从 OpenShift Container Platform 镜像下载了 RHCOS 镜像。
- 您可以访问 RHOSP 云。
流程
运行以下命令,将 RHCOS 镜像上传到 RHOSP:
openstack image create --disk-format qcow2 --file <image_file_name> rhcos
$ openstack image create --disk-format qcow2 --file <image_file_name> rhcos
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<image_file_name>
- 指定 RHCOS 镜像的文件名。
4.7.5. 在 OpenStack 上创建托管集群 复制链接链接已复制到粘贴板!
您可以使用 hcp
CLI 在 Red Hat OpenStack Platform (RHOSP) 上创建托管集群。
先决条件
- 您完成了"准备部署托管 control plane"中的所有先决条件步骤。
- 您检查了"OpenStack 前提条件"。
- 您完成了"为 etcd 本地存储准备管理集群"中的所有步骤。
- 您可以访问管理集群。
- 您可以访问 RHOSP 云。
流程
通过运行
hcp create
命令创建托管集群。例如,对于一个集群,它利用了"准备 etcd 本地存储的管理集群"中详述的性能 etcd 配置,请输入:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
集群创建时提供了许多选项。有关特定于 RHOSP 的选项,请参阅"在 OpenStack 上创建托管 Control Planes 集群的实施"。有关常规选项,请查看 hcp
文档。
验证
运行以下命令验证托管集群是否已就绪:
oc -n clusters-<cluster_name> get pods
$ oc -n clusters-<cluster_name> get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<cluster_name>
- 指定集群名称。
几分钟后,输出应该会显示托管的 control plane pod 正在运行。
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证集群的 etcd 配置:
运行以下命令验证 etcd 持久性卷声明(PVC):
oc get pvc -A
$ oc get pvc -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在托管的 control plane etcd pod 中,运行以下命令来确认挂载路径和设备:
df -h /var/lib
$ df -h /var/lib
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
集群 API (CAPI)供应商创建的 RHOSP 资源使用标签 openshiftClusterID=<infraID>
进行标记。
您可以将资源的额外标签定义为用于创建托管集群的 YAML 清单的 HostedCluster.Spec.Platform.OpenStack.Tags
字段中的值。扩展节点池后,标签将应用到资源。
4.7.5.1. 在 OpenStack 上创建托管 Control Planes 集群的选项 复制链接链接已复制到粘贴板!
您可以在 Red Hat OpenStack Platform (RHOSP)上部署 Hosted Control Planes 集群时为 hcp
CLI 提供几个选项。
选项 | 描述 | 必填 |
---|---|---|
|
OpenStack CA 证书文件的路径。如果没有提供,这将从 | 否 |
|
| 否 |
|
OpenStack 凭证文件的路径。如果没有提供,
| 否 |
| 创建子网时提供的 DNS 服务器地址列表。 | 否 |
| OpenStack 外部网络的 ID。 | 否 |
| OpenShift ingress 的浮动 IP。 | 否 |
|
附加到节点的额外端口。有效值为: | 否 |
| 节点池的可用区。 | 否 |
| 节点池的 flavor。 | 是 |
| 节点池的镜像名称。 | 否 |