5.6. 在 OpenStack 中管理托管的 control plane


在 Red Hat OpenStack Platform (RHOSP)代理机器上部署托管的 control plane 后,您可以通过完成以下任务来管理托管集群。

5.6.1. 访问托管集群

您可以使用 oc CLI 直接从资源中提取 kubeconfig secret 来访问 Red Hat OpenStack Platform (RHOSP)上的托管集群。

托管的集群(hosting) 命名空间包含托管的集群资源和访问 secret。托管 control plane 命名空间是托管 control plane 运行的位置。

secret 名称格式如下:

  • kubeconfig secret: <hosted_cluster_namespace>-<name>-admin-kubeconfig。例如 clusters-hypershift-demo-admin-kubeconfig
  • kubeadmin 密码 secret: <hosted_cluster_namespace>-<name>-kubeadmin-password。例如,clusters-hypershift-demo-kubeadmin-password

kubeconfig secret 包含 Base64 编码的 kubeconfig 字段。kubeadmin 密码 secret 也是 Base64 编码的;您可以提取它,然后使用密码登录到托管集群的 API 服务器或控制台。

先决条件

  • 已安装 oc CLI。

流程

  1. 输入以下命令提取 admin-kubeconfig secret:

    $ oc extract -n <hosted_cluster_namespace> \
      secret/<hosted_cluster_name>-admin-kubeconfig \
      --to=./hostedcluster-secrets --confirm
    Copy to Clipboard Toggle word wrap

    输出示例

    hostedcluster-secrets/kubeconfig
    Copy to Clipboard Toggle word wrap

  2. 输入以下命令来查看托管集群的节点列表以验证您的访问:

    $ oc --kubeconfig ./hostedcluster-secrets/kubeconfig get nodes
    Copy to Clipboard Toggle word wrap

5.6.2. 为托管集群启用节点自动扩展

当 Red Hat OpenStack Platform (RHOSP)和备用代理上的托管集群中需要更多容量时,您可以启用自动扩展来安装新的 worker 节点。

流程

  1. 要启用自动扩展,请输入以下命令:

    $ oc -n <hosted_cluster_namespace> patch nodepool <hosted_cluster_name> \
      --type=json \
      -p '[{"op": "remove", "path": "/spec/replicas"},{"op":"add", "path": "/spec/autoScaling", "value": { "max": 5, "min": 2 }}]'
    Copy to Clipboard Toggle word wrap
  2. 创建需要新节点的工作负载。

    1. 使用以下示例创建一个包含工作负载配置的 YAML 文件:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        labels:
          app: reversewords
        name: reversewords
        namespace: default
      spec:
        replicas: 40
        selector:
          matchLabels:
            app: reversewords
        template:
          metadata:
            labels:
              app: reversewords
          spec:
            containers:
            - image: quay.io/mavazque/reversewords:latest
              name: reversewords
              resources:
                requests:
                  memory: 2Gi
      Copy to Clipboard Toggle word wrap
    2. 使用名称 workload-config.yaml 保存文件。
    3. 输入以下命令应用 YAML:

      $ oc apply -f workload-config.yaml
      Copy to Clipboard Toggle word wrap
  3. 输入以下命令提取 admin-kubeconfig secret:

    $ oc extract -n <hosted_cluster_namespace> \
      secret/<hosted_cluster_name>-admin-kubeconfig \
      --to=./hostedcluster-secrets --confirm
    Copy to Clipboard Toggle word wrap

    输出示例

    hostedcluster-secrets/kubeconfig
    Copy to Clipboard Toggle word wrap

  4. 您可以输入以下命令来检查新节点是否处于 Ready 状态:

    $ oc --kubeconfig ./hostedcluster-secrets get nodes
    Copy to Clipboard Toggle word wrap
  5. 要删除节点,请输入以下命令删除工作负载:

    $ oc --kubeconfig ./hostedcluster-secrets -n <namespace> \
      delete deployment <deployment_name>
    Copy to Clipboard Toggle word wrap
  6. 等待几分钟,无需额外容量。您可以输入以下命令确认节点已被删除:

    $ oc --kubeconfig ./hostedcluster-secrets get nodes
    Copy to Clipboard Toggle word wrap

5.6.3. 为可用区配置节点池

您可以在多个 Red Hat OpenStack Platform (RHOSP) Nova 可用区间分发节点池,以提高托管集群的高可用性。

注意

可用性区域不一定与故障域对应,并且并不具有高可用性优势。

先决条件

  • 您创建了托管集群。
  • 您可以访问管理集群。
  • 已安装 hcpoc CLI。

流程

  1. 设置环境变量,适合您的需要。例如,如果要在 az1 可用区中创建两个额外的机器,您可以输入:

    $ export NODEPOOL_NAME="${CLUSTER_NAME}-az1" \
      && export WORKER_COUNT="2" \
      && export FLAVOR="m1.xlarge" \
      && export AZ="az1"
    Copy to Clipboard Toggle word wrap
  2. 输入以下命令来使用环境变量创建节点池:

    $ hcp create nodepool openstack \
      --cluster-name <cluster_name> \
      --name $NODEPOOL_NAME \
      --replicas $WORKER_COUNT \
      --openstack-node-flavor $FLAVOR \
      --openstack-node-availability-zone $AZ
    Copy to Clipboard Toggle word wrap

    其中:

    <cluster_name>
    指定托管集群的名称。
  3. 运行以下命令,通过列出 clusters 命名空间中的 nodepool 资源来检查节点池的状态:

    $ oc get nodepools --namespace clusters
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                      CLUSTER         DESIRED NODES   CURRENT NODES   AUTOSCALING   AUTOREPAIR   VERSION   UPDATINGVERSION   UPDATINGCONFIG   MESSAGE
    example                   example         5               5               False         False        4.17.0
    example-az1               example         2                               False         False                  True              True             Minimum availability requires 2 replicas, current 0 available
    Copy to Clipboard Toggle word wrap

  4. 运行以下命令,观察它们在托管集群上开始的备注:

    $ oc --kubeconfig $CLUSTER_NAME-kubeconfig get nodes
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                      STATUS   ROLES    AGE     VERSION
    ...
    example-extra-az-zh9l5    Ready    worker   2m6s    v1.27.4+18eadca
    example-extra-az-zr8mj    Ready    worker   102s    v1.27.4+18eadca
    ...
    Copy to Clipboard Toggle word wrap

  5. 运行以下命令验证节点池是否已创建:

    $ oc get nodepools --namespace clusters
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME              CLUSTER         DESIRED   CURRENT   AVAILABLE   PROGRESSING   MESSAGE
    <node_pool_name>  <cluster_name>  2         2         2           False         All replicas are available
    Copy to Clipboard Toggle word wrap

5.6.4. 为节点池配置额外的端口

您可以为节点池配置额外的端口来支持高级网络场景,如 SR-IOV 或多个网络。

5.6.4.1. 节点池的额外端口用例

为节点池配置额外端口的常见原因包括:

SR-IOV (单根 I/O 虚拟化)
使物理网络设备显示为多个虚拟功能(VF)。通过将额外端口附加到节点池,工作负载可以使用 SR-IOV 接口来实现低延迟、高性能的网络。
DPDK(数据平面开发套件)
提供了在用户空间中绕过内核的快速数据包处理。带有额外端口的节点池可能会公开使用 DPDK 的工作负载接口,以提高网络性能。
NFS 上的 Manila RWX 卷
支持通过 NFS 的 ReadWriteMany (RWX) 卷,允许多个节点访问共享存储。将额外端口附加到节点池可让工作负载访问 Manila 使用的 NFS 网络。
Multus CNI
启用 pod 连接到多个网络接口。带有额外端口的节点池支持需要二级网络接口的用例,包括双栈连接和流量分离。

5.6.4.2. 节点池的额外端口的选项

您可以使用 --openstack-node-additional-port 标志,将额外端口附加到 OpenStack 上托管的集群中的节点。标志采用逗号分隔的参数列表。参数可以多次使用,将多个额外端口附加到节点。

参数是:

Expand
参数描述必填default

network-id

附加到节点的网络的 ID。

N/A

vnic-type

用于端口的 VNIC 类型。如果未指定,Neutron 将使用默认类型 normal

N/A

disable-port-security

是否为端口禁用端口安全性。如果未指定,Neutron 将启用端口安全性,除非它在网络级别明确禁用。

N/A

address-pairs

要分配给端口的 IP 地址对列表。格式为 ip_address=mac_address。可以提供多个对,用连字符(-)分隔。mac_address 部分是可选的。

N/A

5.6.4.3. 为节点池创建额外的端口

您可以为在 Red Hat OpenStack Platform (RHOSP) 上运行的托管集群配置节点池的额外端口。

先决条件

  • 您创建了托管集群。
  • 您可以访问管理集群。
  • 已安装 hcp CLI。
  • 在 RHOSP 中创建额外网络。
  • 托管集群使用的项目必须有权访问额外网络。
  • 您检查了"Options 用于节点池额外端口"中列出的选项。

流程

  • 使用 --openstack-node-additional-port 选项运行 hcp create nodepool openstack 命令,创建附加端口的托管集群。例如:

    $ hcp create nodepool openstack \
      --cluster-name <cluster_name> \
      --name <nodepool_name> \
      --replicas <replica_count> \
      --openstack-node-flavor <flavor> \
      --openstack-node-additional-port "network-id=<sriov_net_id>,vnic-type=direct,disable-port-security=true" \
      --openstack-node-additional-port "network-id=<lb_net_id>,address-pairs:192.168.0.1-192.168.0.2"
    Copy to Clipboard Toggle word wrap

    其中:

    <cluster_name>
    指定托管集群的名称。
    <nodepool_name>
    指定节点池的名称。
    <replica_count>
    指定所需的副本数。
    <flavor>
    指定要使用的 RHOSP 类别。
    <sriov_net_id>
    指定 SR-IOV 网络 ID。
    <lb_net_id>
    指定负载均衡器网络 ID。

5.6.5. 为节点池配置额外的端口

您可以针对高性能工作负载(如云原生网络功能(CNF))调整 RHOSP 上的托管集群节点性能。性能调优包括配置 RHOSP 资源、创建性能配置集、部署 tuned NodePool 资源并启用 SR-IOV 设备支持。

CNF 设计为在云原生环境中运行。它们可以提供路由、防火墙和负载平衡等网络服务。您可以将节点池配置为使用高性能计算和网络设备来运行 CNF。

5.6.5.1. 调整托管集群节点的性能

创建性能配置集并部署一个 tuned NodePool 资源,以便在 Red Hat OpenStack Platform (RHOSP) 托管的 control plane 上运行高性能工作负载。

先决条件

  • 您有运行工作负载所需的资源的 RHOSP 类别,包括专用 CPU、内存和主机聚合信息。
  • 您有一个附加到支持 SR-IOV 或 DPDK 的 NIC 的 RHOSP 网络。网络必须可供托管集群使用的项目使用。

流程

  1. 在名为 perfprofile.yaml 的文件中创建一个满足您的要求的性能配置集。例如:

    配置映射中的性能配置集示例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: perfprof-1
      namespace: clusters
    data:
      tuning: |
        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: cnf-performanceprofile
          namespace: "${HYPERSHIFT_NAMESPACE}"
        data:
          tuning: |
            apiVersion: performance.openshift.io/v2
            kind: PerformanceProfile
            metadata:
              name: cnf-performanceprofile
            spec:
              additionalKernelArgs:
                - nmi_watchdog=0
                - audit=0
                - mce=off
                - processor.max_cstate=1
                - idle=poll
                - intel_idle.max_cstate=0
                - amd_iommu=on
              cpu:
                isolated: "${CPU_ISOLATED}"
                reserved: "${CPU_RESERVED}"
              hugepages:
                defaultHugepagesSize: "1G"
                pages:
                  - count: ${HUGEPAGES}
                    node: 0
                    size: 1G
              nodeSelector:
                node-role.kubernetes.io/worker: ''
              realTimeKernel:
                enabled: false
              globallyDisableIrqLoadBalancing: true
    Copy to Clipboard Toggle word wrap

    重要

    如果您还没有为 HyperShift Operator 命名空间、隔离和保留 CPU 和巨页计数设置环境变量,请在应用性能配置集前创建它们。

  2. 运行以下命令来应用性能配置集配置:

    $ oc apply -f perfprof.yaml
    Copy to Clipboard Toggle word wrap
  3. 如果您还没有为集群名称设置 CLUSTER_NAME 环境变量,请定义它。
  4. 运行以下命令设置节点池名称环境变量:

    $ export NODEPOOL_NAME=$CLUSTER_NAME-cnf
    Copy to Clipboard Toggle word wrap
  5. 运行以下命令来设置 flavor 环境变量:

    $ export FLAVOR="m1.xlarge.nfv"
    Copy to Clipboard Toggle word wrap
  6. 运行以下命令,创建使用性能配置集的节点池:

    $ hcp create nodepool openstack \
      --cluster-name $CLUSTER_NAME \
      --name $NODEPOOL_NAME \
      --node-count 0 \
      --openstack-node-flavor $FLAVOR
    Copy to Clipboard Toggle word wrap
  7. 运行以下命令来修补节点池来引用 PerformanceProfile 资源:

    $ oc patch nodepool -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \
      -p '{"spec":{"tuningConfig":[{"name":"cnf-performanceprofile"}]}}' --type=merge
    Copy to Clipboard Toggle word wrap
  8. 运行以下命令来扩展节点池:

    $ oc scale nodepool/$CLUSTER_NAME --namespace ${HYPERSHIFT_NAMESPACE} --replicas=1
    Copy to Clipboard Toggle word wrap
  9. 等待节点就绪:

    1. 运行以下命令等待节点就绪:

      $ oc wait --for=condition=UpdatingConfig=True nodepool \
        -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \
        --timeout=5m
      Copy to Clipboard Toggle word wrap
    2. 运行以下命令等待配置更新完成:

      $ oc wait --for=condition=UpdatingConfig=False nodepool \
        -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \
        --timeout=30m
      Copy to Clipboard Toggle word wrap
    3. 运行以下命令等待所有节点健康:

      $ oc wait --for=condition=AllNodesHealthy nodepool \
        -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \
        --timeout=5m
      Copy to Clipboard Toggle word wrap
注意

您可以对节点进行 SSH 连接,或使用 oc debug 命令验证性能配置。

5.6.5.2. 在托管集群中启用 SR-IOV Network Operator

您可以启用 SR-IOV Network Operator,在 NodePool 资源部署的节点中管理支持 SR-IOV 的设备。Operator 在托管集群中运行,需要标记的 worker 节点。

流程

  1. 运行以下命令,为托管集群生成 kubeconfig 文件:

    $ hcp create kubeconfig --name $CLUSTER_NAME > $CLUSTER_NAME-kubeconfig
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来创建 kubeconfig 资源环境变量:

    $ export KUBECONFIG=$CLUSTER_NAME-kubeconfig
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令,标记每个 worker 节点来指示 SR-IOV 功能:

    $ oc label node <worker_node_name> feature.node.kubernetes.io/network-sriov.capable=true
    Copy to Clipboard Toggle word wrap

    其中:

    <worker_node_name>
    指定托管集群中的 worker 节点的名称。
  4. 按照"安装 SR-IOV Network Operator"中的说明,在托管集群中安装 SR-IOV Network Operator。
  5. 安装后,使用与独立集群相同的流程在托管集群中配置 SR-IOV 工作负载。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat