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 CLI hcp
  • 一个负载均衡器后端(如 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 类别和机器集。
  • 已安装并配置了 ocopenstack CLI 工具。
  • 您熟悉 TopoLVM 和逻辑卷管理器(LVM)存储概念。
  • 在受管集群中安装了 LVM Storage Operator。如需更多信息,请参阅 OpenShift Container Platform 文档中的存储部分中的"使用 CLI 安装 LVM 存储"。

流程

  1. 使用 openstack CLI,创建具有额外临时磁盘的 Nova 类别。例如:

    $ openstack flavor create \
      --id auto \
      --ram 8192 \
      --disk 0 \
      --ephemeral 100 \
      --vcpus 4 \
      --public \
      hcp-etcd-ephemeral
    Copy to Clipboard Toggle word wrap
    注意

    当服务器使用该类别创建时,Nova 会自动将临时磁盘附加到实例,并将它格式化为 vfat

  2. 创建使用新类别的计算机器集。如需更多信息,请参阅 OpenShift Container Platform 文档中的"在 OpenStack 上创建计算机器集"。
  3. 扩展机器集以满足您的要求。如果集群为高可用性部署,则必须至少部署 3 个 worker,以便相应地分发 pod。
  4. 标记新的 worker 节点,以标识它们以供 etcd 使用。例如:

    $ oc label node <node_name> hypershift-capable=true
    Copy to Clipboard Toggle word wrap

    该标签是任意的;稍后您可以更新它。

  5. 在名为 lvmcluster.yaml 的文件中,在 etcd 的本地存储配置中创建以下 LVMCluster 自定义资源:

    apiVersion: lvm.topolvm.io/v1alpha1
    kind: LVMCluster
    metadata:
      name: etcd-hcp
      namespace: openshift-storage
    spec:
      storage:
        deviceClasses:
        - name: etcd-class
          default: true
          nodeSelector:
             nodeSelectorTerms:
             - matchExpressions:
               - key: hypershift-capable
                operator: In
                values:
                - "true"
          deviceSelector:
            forceWipeDevicesAndDestroyAllData: true
            paths:
            - /dev/vdb
    Copy to Clipboard Toggle word wrap

    在这个示例资源中:

    • 临时磁盘位置为 /dev/vdb,在大多数情况下都是如此。验证此位置是否适合您的情况,并请注意,符号链接不被支持。
    • 参数 forceWipeDevicesAndDestroyAllData 设置为 True 值,因为默认的 Nova 临时磁盘会以 VFAT 格式化。
  6. 运行以下命令来应用 LVMCluster 资源:

    oc apply -f lvmcluster.yaml
    Copy to Clipboard Toggle word wrap
  7. 运行以下命令验证 LVMCluster 资源:

    $ oc get lvmcluster -A
    Copy to Clipboard Toggle word wrap

    输出示例

    NAMESPACE           NAME    STATUS
    openshift-storage   etcd-hcp   Ready
    Copy to Clipboard Toggle word wrap

  8. 运行以下命令验证 StorageClass 资源:

    $ oc get storageclass
    Copy to Clipboard Toggle word wrap

    输出示例

    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 Toggle word wrap

现在,您可以使用高性能 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>
    Copy to Clipboard Toggle word wrap

    其中:

    <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
    Copy to Clipboard Toggle word wrap

    其中:

    <image_file_name>
    指定 RHCOS 镜像的文件名。

4.7.5. 在 OpenStack 上创建托管集群

您可以使用 hcp CLI 在 Red Hat OpenStack Platform (RHOSP) 上创建托管集群。

先决条件

  • 您完成了"准备部署托管 control plane"中的所有先决条件步骤。
  • 您检查了"OpenStack 前提条件"。
  • 您完成了"为 etcd 本地存储准备管理集群"中的所有步骤。
  • 您可以访问管理集群。
  • 您可以访问 RHOSP 云。

流程

  • 通过运行 hcp create 命令创建托管集群。例如,对于一个集群,它利用了"准备 etcd 本地存储的管理集群"中详述的性能 etcd 配置,请输入:

    $ hcp create cluster openstack \
      --name my-hcp-cluster \
      --openstack-node-flavor m1.xlarge \
      --base-domain example.com \
      --pull-secret /path/to/pull-secret.json \
      --release-image quay.io/openshift-release-dev/ocp-release:4.19.0-x86_64 \
      --node-pool-replicas 3 \
      --etcd-storage-class lvms-etcd-class
    Copy to Clipboard Toggle word wrap
注意

集群创建时提供了许多选项。有关特定于 RHOSP 的选项,请参阅"在 OpenStack 上创建托管 Control Planes 集群的实施"。有关常规选项,请查看 hcp 文档。

验证

  1. 运行以下命令验证托管集群是否已就绪:

    $ oc -n clusters-<cluster_name> get pods
    Copy to Clipboard Toggle word wrap

    其中:

    <cluster_name>
    指定集群名称。

    几分钟后,输出应该会显示托管的 control plane pod 正在运行。

    输出示例

    NAME                                                  READY   STATUS    RESTARTS   AGE
    capi-provider-5cc7b74f47-n5gkr                        1/1     Running   0          3m
    catalog-operator-5f799567b7-fd6jw                     2/2     Running   0          69s
    certified-operators-catalog-784b9899f9-mrp6p          1/1     Running   0          66s
    cluster-api-6bbc867966-l4dwl                          1/1     Running   0          66s
    ...
    ...
    ...
    redhat-operators-catalog-9d5fd4d44-z8qqk              1/1     Running   0
    Copy to Clipboard Toggle word wrap

  2. 验证集群的 etcd 配置:

    1. 运行以下命令验证 etcd 持久性卷声明(PVC):

      $ oc get pvc -A
      Copy to Clipboard Toggle word wrap
    2. 在托管的 control plane etcd pod 中,运行以下命令来确认挂载路径和设备:

      $ df -h /var/lib
      Copy to Clipboard Toggle word wrap
注意

集群 API (CAPI)供应商创建的 RHOSP 资源使用标签 openshiftClusterID=<infraID> 进行标记。

您可以将资源的额外标签定义为用于创建托管集群的 YAML 清单的 HostedCluster.Spec.Platform.OpenStack.Tags 字段中的值。扩展节点池后,标签将应用到资源。

您可以在 Red Hat OpenStack Platform (RHOSP)上部署 Hosted Control Planes 集群时为 hcp CLI 提供几个选项。

Expand
选项描述必填

--openstack-ca-cert-file

OpenStack CA 证书文件的路径。如果没有提供,这将从 clouds.yaml 中的 cloud 条目自动提取。

--openstack-cloud

clouds.yaml 中的云条目的名称。默认值为 openstack

--openstack-credentials-file

OpenStack 凭证文件的路径。如果没有提供,hcp 将搜索以下目录:

  • 当前工作目录
  • $HOME/.config/openstack
  • /etc/openstack

--openstack-dns-nameservers

创建子网时提供的 DNS 服务器地址列表。

--openstack-external-network-id

OpenStack 外部网络的 ID。

--openstack-ingress-floating-ip

OpenShift ingress 的浮动 IP。

--openstack-node-additional-port

附加到节点的额外端口。有效值为: network-idvnic-typedisable-port-securityaddress-pairs

--openstack-node-availability-zone

节点池的可用区。

--openstack-node-flavor

节点池的 flavor。

--openstack-node-image-name

节点池的镜像名称。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat