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。
流程
输入以下命令提取
admin-kubeconfig
secret:oc extract -n <hosted_cluster_namespace> \ secret/<hosted_cluster_name>-admin-kubeconfig \ --to=./hostedcluster-secrets --confirm
$ oc extract -n <hosted_cluster_namespace> \ secret/<hosted_cluster_name>-admin-kubeconfig \ --to=./hostedcluster-secrets --confirm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
hostedcluster-secrets/kubeconfig
hostedcluster-secrets/kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来查看托管集群的节点列表以验证您的访问:
oc --kubeconfig ./hostedcluster-secrets/kubeconfig get nodes
$ oc --kubeconfig ./hostedcluster-secrets/kubeconfig get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.2. 为托管集群启用节点自动扩展 复制链接链接已复制到粘贴板!
当 Red Hat OpenStack Platform (RHOSP)和备用代理上的托管集群中需要更多容量时,您可以启用自动扩展来安装新的 worker 节点。
流程
要启用自动扩展,请输入以下命令:
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 }}]'
$ 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 Copied! Toggle word wrap Toggle overflow 创建需要新节点的工作负载。
使用以下示例创建一个包含工作负载配置的 YAML 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用名称
workload-config.yaml
保存文件。 输入以下命令应用 YAML:
oc apply -f workload-config.yaml
$ oc apply -f workload-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
输入以下命令提取
admin-kubeconfig
secret:oc extract -n <hosted_cluster_namespace> \ secret/<hosted_cluster_name>-admin-kubeconfig \ --to=./hostedcluster-secrets --confirm
$ oc extract -n <hosted_cluster_namespace> \ secret/<hosted_cluster_name>-admin-kubeconfig \ --to=./hostedcluster-secrets --confirm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
hostedcluster-secrets/kubeconfig
hostedcluster-secrets/kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以输入以下命令来检查新节点是否处于
Ready
状态:oc --kubeconfig ./hostedcluster-secrets get nodes
$ oc --kubeconfig ./hostedcluster-secrets get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要删除节点,请输入以下命令删除工作负载:
oc --kubeconfig ./hostedcluster-secrets -n <namespace> \ delete deployment <deployment_name>
$ oc --kubeconfig ./hostedcluster-secrets -n <namespace> \ delete deployment <deployment_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待几分钟,无需额外容量。您可以输入以下命令确认节点已被删除:
oc --kubeconfig ./hostedcluster-secrets get nodes
$ oc --kubeconfig ./hostedcluster-secrets get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.3. 为可用区配置节点池 复制链接链接已复制到粘贴板!
您可以在多个 Red Hat OpenStack Platform (RHOSP) Nova 可用区间分发节点池,以提高托管集群的高可用性。
可用性区域不一定与故障域对应,并且并不具有高可用性优势。
先决条件
- 您创建了托管集群。
- 您可以访问管理集群。
-
已安装
hcp
和oc
CLI。
流程
设置环境变量,适合您的需要。例如,如果要在
az1
可用区中创建两个额外的机器,您可以输入:export NODEPOOL_NAME="${CLUSTER_NAME}-az1" \ && export WORKER_COUNT="2" \ && export FLAVOR="m1.xlarge" \ && export AZ="az1"
$ export NODEPOOL_NAME="${CLUSTER_NAME}-az1" \ && export WORKER_COUNT="2" \ && export FLAVOR="m1.xlarge" \ && export AZ="az1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来使用环境变量创建节点池:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<cluster_name>
- 指定托管集群的名称。
运行以下命令,通过列出 clusters 命名空间中的
nodepool
资源来检查节点池的状态:oc get nodepools --namespace clusters
$ oc get nodepools --namespace clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
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
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 Copied! Toggle word wrap Toggle overflow 运行以下命令,观察它们在托管集群上开始的备注:
oc --kubeconfig $CLUSTER_NAME-kubeconfig get nodes
$ oc --kubeconfig $CLUSTER_NAME-kubeconfig get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
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 ...
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 Copied! Toggle word wrap Toggle overflow 运行以下命令验证节点池是否已创建:
oc get nodepools --namespace clusters
$ oc get nodepools --namespace clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CLUSTER DESIRED CURRENT AVAILABLE PROGRESSING MESSAGE <node_pool_name> <cluster_name> 2 2 2 False All replicas are available
NAME CLUSTER DESIRED CURRENT AVAILABLE PROGRESSING MESSAGE <node_pool_name> <cluster_name> 2 2 2 False All replicas are available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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 上托管的集群中的节点。标志采用逗号分隔的参数列表。参数可以多次使用,将多个额外端口附加到节点。
参数是:
参数 | 描述 | 必填 | default |
---|---|---|---|
| 附加到节点的网络的 ID。 | 是 | N/A |
|
用于端口的 VNIC 类型。如果未指定,Neutron 将使用默认类型 | 否 | N/A |
| 是否为端口禁用端口安全性。如果未指定,Neutron 将启用端口安全性,除非它在网络级别明确禁用。 | 否 | N/A |
|
要分配给端口的 IP 地址对列表。格式为 | 否 | N/A |
5.6.4.3. 为节点池创建额外的端口 复制链接链接已复制到粘贴板!
您可以为在 Red Hat OpenStack Platform (RHOSP) 上运行的托管集群配置节点池的额外端口。
先决条件
- 您创建了托管集群。
- 您可以访问管理集群。
-
已安装
hcp
CLI。 - 在 RHOSP 中创建额外网络。
- 托管集群使用的项目必须有权访问额外网络。
- 您检查了"Options 用于节点池额外端口"中列出的选项。
流程
使用
--openstack-node-additional-port
选项运行hcp create nodepool openstack
命令,创建附加端口的托管集群。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<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 网络。网络必须可供托管集群使用的项目使用。
流程
在名为
perfprofile.yaml
的文件中创建一个满足您的要求的性能配置集。例如:配置映射中的性能配置集示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果您还没有为 HyperShift Operator 命名空间、隔离和保留 CPU 和巨页计数设置环境变量,请在应用性能配置集前创建它们。
运行以下命令来应用性能配置集配置:
oc apply -f perfprof.yaml
$ oc apply -f perfprof.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果您还没有为集群名称设置
CLUSTER_NAME
环境变量,请定义它。 运行以下命令设置节点池名称环境变量:
export NODEPOOL_NAME=$CLUSTER_NAME-cnf
$ export NODEPOOL_NAME=$CLUSTER_NAME-cnf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来设置 flavor 环境变量:
export FLAVOR="m1.xlarge.nfv"
$ export FLAVOR="m1.xlarge.nfv"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建使用性能配置集的节点池:
hcp create nodepool openstack \ --cluster-name $CLUSTER_NAME \ --name $NODEPOOL_NAME \ --node-count 0 \ --openstack-node-flavor $FLAVOR
$ hcp create nodepool openstack \ --cluster-name $CLUSTER_NAME \ --name $NODEPOOL_NAME \ --node-count 0 \ --openstack-node-flavor $FLAVOR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来修补节点池来引用
PerformanceProfile
资源:oc patch nodepool -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ -p '{"spec":{"tuningConfig":[{"name":"cnf-performanceprofile"}]}}' --type=merge
$ oc patch nodepool -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ -p '{"spec":{"tuningConfig":[{"name":"cnf-performanceprofile"}]}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来扩展节点池:
oc scale nodepool/$CLUSTER_NAME --namespace ${HYPERSHIFT_NAMESPACE} --replicas=1
$ oc scale nodepool/$CLUSTER_NAME --namespace ${HYPERSHIFT_NAMESPACE} --replicas=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待节点就绪:
运行以下命令等待节点就绪:
oc wait --for=condition=UpdatingConfig=True nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=5m
$ oc wait --for=condition=UpdatingConfig=True nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令等待配置更新完成:
oc wait --for=condition=UpdatingConfig=False nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=30m
$ oc wait --for=condition=UpdatingConfig=False nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=30m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令等待所有节点健康:
oc wait --for=condition=AllNodesHealthy nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=5m
$ oc wait --for=condition=AllNodesHealthy nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以对节点进行 SSH 连接,或使用 oc debug
命令验证性能配置。
5.6.5.2. 在托管集群中启用 SR-IOV Network Operator 复制链接链接已复制到粘贴板!
您可以启用 SR-IOV Network Operator,在 NodePool
资源部署的节点中管理支持 SR-IOV 的设备。Operator 在托管集群中运行,需要标记的 worker 节点。
流程
运行以下命令,为托管集群生成
kubeconfig
文件:hcp create kubeconfig --name $CLUSTER_NAME > $CLUSTER_NAME-kubeconfig
$ hcp create kubeconfig --name $CLUSTER_NAME > $CLUSTER_NAME-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
kubeconfig
资源环境变量:export KUBECONFIG=$CLUSTER_NAME-kubeconfig
$ export KUBECONFIG=$CLUSTER_NAME-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,标记每个 worker 节点来指示 SR-IOV 功能:
oc label node <worker_node_name> feature.node.kubernetes.io/network-sriov.capable=true
$ oc label node <worker_node_name> feature.node.kubernetes.io/network-sriov.capable=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<worker_node_name>
- 指定托管集群中的 worker 节点的名称。
- 按照"安装 SR-IOV Network Operator"中的说明,在托管集群中安装 SR-IOV Network Operator。
- 安装后,使用与独立集群相同的流程在托管集群中配置 SR-IOV 工作负载。