4.5. 在 IBM Z 上部署托管的 control plane
您可以通过将集群配置为充当管理集群来部署托管的 control plane。管理集群是托管 control plane 的 OpenShift Container Platform 集群。管理集群也称为托管集群。
管理集群不是受管集群。受管集群是 hub 集群管理的集群。
您可以使用 hypershift
附加组件将受管集群转换为管理集群。然后,您可以开始创建托管集群。
multicluster engine Operator 只支持默认的 local-cluster
,它是管理的 hub 集群,而 hub 集群作为管理集群。
要在裸机上置备托管的 control plane,您可以使用 Agent 平台。Agent 平台使用中央基础架构管理服务将 worker 节点添加到托管的集群中。如需更多信息,请参阅"启用中央基础架构管理服务"。
每个 IBM Z 系统主机都必须通过中央基础架构管理提供的 PXE 镜像启动。每个主机启动后,它会运行一个代理进程来发现主机的详细信息并完成安装。Agent 自定义资源代表每个主机。
当使用 Agent 平台创建托管集群时,HyperShift Operator 会在托管的 control plane 命名空间中安装 Agent Cluster API 供应商。
4.5.1. 在 IBM Z 上配置托管的 control plane 的先决条件 复制链接链接已复制到粘贴板!
- Kubernetes Operator 版本 2.5 或更高版本的多集群引擎必须安装在 OpenShift Container Platform 集群中。您可以从 OpenShift Container Platform OperatorHub 将 multicluster engine Operator 安装为 Operator。
multicluster engine Operator 必须至少有一个受管 OpenShift Container Platform 集群。
local-cluster
在多集群引擎 Operator 2.5 及更新的版本中自动导入。有关local-cluster
的更多信息,请参阅 Red Hat Advanced Cluster Management 中的高级配置部分。您可以运行以下命令来检查 hub 集群的状态:oc get managedclusters local-cluster
$ oc get managedclusters local-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 您需要一个至少有三个 worker 节点的托管集群来运行 HyperShift Operator。
- 您需要启用中央基础架构管理服务。如需更多信息,请参阅启用中央基础架构管理服务。
- 您需要安装托管的 control plane 命令行界面。如需更多信息,请参阅安装托管的 control plane 命令行界面。
4.5.2. IBM Z 基础架构要求 复制链接链接已复制到粘贴板!
Agent 平台不会创建任何基础架构,但需要以下基础架构资源:
- 代理 : 代理 代表使用发现镜像或 PXE 镜像引导的主机,并准备好置备为 OpenShift Container Platform 节点。
- DNS :API 和入口端点必须可以被路由。
托管的 control plane 功能默认启用。如果您禁用了该功能并希望手动启用它,或者需要禁用该功能,请参阅启用或禁用托管的 control plane 功能。
4.5.3. IBM Z 上托管的 control plane 的 DNS 配置 复制链接链接已复制到粘贴板!
托管集群的 API 服务器作为 NodePort
服务公开。必须存在 api.<hosted_cluster_name>.<base_domain>
的 DNS 条目,指向可以访问 API 服务器的目标。
DNS 条目可以是一个简单的记录,指向运行托管 control plane 的受管集群中的一个节点。
该条目也可以指向部署的负载均衡器,将传入的流量重定向到 Ingress pod。
请参阅以下 DNS 配置示例:
cat /var/named/<example.krnl.es.zone>
$ cat /var/named/<example.krnl.es.zone>
输出示例
- 1
- 记录指的是 API 负载均衡器的 IP 地址,用于处理托管 control plane 的入口和出口流量。
对于 IBM z/VM,添加与代理 IP 地址对应的 IP 地址。
compute-0 IN A 1xx.2x.2xx.1yy compute-1 IN A 1xx.2x.2xx.1yy
compute-0 IN A 1xx.2x.2xx.1yy
compute-1 IN A 1xx.2x.2xx.1yy
4.5.4. 在裸机上创建托管集群 复制链接链接已复制到粘贴板!
您可以创建托管集群或导入一个集群。当 Assisted Installer 作为 multicluster engine Operator 的附加组件启用,并使用 Agent 平台创建托管集群时,HyperShift Operator 会在托管的 control plane 命名空间中安装 Agent Cluster API 供应商。
4.5.4.1. 使用 CLI 创建托管集群 复制链接链接已复制到粘贴板!
要使用命令行界面(CLI)创建托管集群,请完成以下步骤。
先决条件
- 每个托管集群都必须具有集群范围的唯一名称。托管的集群名称不能与任何现有的受管集群相同,以便多集群引擎 Operator 管理它。
-
不要使用
clusters
作为托管的集群名称。 - 无法在多集群引擎 Operator 受管集群的命名空间中创建托管集群。
- 验证您是否为集群配置了默认存储类。否则,您可能会看到待处理的持久性卷声明(PVC)。
-
默认情况下,当您使用
hcp create cluster agent
命令时,托管集群会使用节点端口创建。但是,裸机上托管集群的首选发布策略是通过负载均衡器公开服务。如果使用 Web 控制台或使用 Red Hat Advanced Cluster Management 创建托管集群,要为 Kubernetes API 服务器以外的服务设置发布策略,您必须在HostedCluster
自定义资源中手动指定servicePublishingStrategy
信息。如需更多信息,请参阅此流程中的步骤 4。 确保您满足"准备在裸机上部署托管 control plane"中所述的要求,其中包括与基础架构、防火墙、端口和服务相关的要求。例如,这些要求描述了如何在管理集群中的裸机主机中添加适当的区标签,如下例所示:
oc label node [compute-node-1] topology.kubernetes.io/zone=zone1
$ oc label node [compute-node-1] topology.kubernetes.io/zone=zone1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc label node [compute-node-2] topology.kubernetes.io/zone=zone2
$ oc label node [compute-node-2] topology.kubernetes.io/zone=zone2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc label node [compute-node-3] topology.kubernetes.io/zone=zone3
$ oc label node [compute-node-3] topology.kubernetes.io/zone=zone3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 确保您已将裸机节点添加到硬件清单中。
流程
运行以下命令来创建命名空间:
oc create ns <hosted_cluster_namespace>
$ oc create ns <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<hosted_cluster_namespace
> 替换为托管集群命名空间的标识符。通常,命名空间由 HyperShift Operator 创建,但在裸机上托管集群创建过程中,会生成一个 Cluster API 供应商角色,需要命名空间已存在。输入以下命令为托管集群创建配置文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定托管集群的名称。
- 2
- 指定 pull secret 的路径,例如
/user/name/pullsecret
。 - 3
- 指定托管的 control plane 命名空间。要确保代理在这个命名空间中可用,请输入
oc get agent -n <hosted_control_plane_namespace>
命令。 - 4
- 指定您的基域,如
krnl.es
。 - 5
--api-server-address
标志定义用于托管集群中的 Kubernetes API 通信的 IP 地址。如果没有设置--api-server-address
标志,您必须登录以连接到管理集群。- 6
- 指定 etcd 存储类名称,如
lvm-storageclass
。 - 7
- 指定 SSH 公钥的路径。默认文件路径为
~/.ssh/id_rsa.pub
。 - 8
- 指定托管集群命名空间。
- 9
- 指定托管 control plane 组件的可用性策略。支持的选项包括
SingleReplica
和HighlyAvailable
。默认值为HighlyAvailable
。 - 10
- 指定您要使用的 OpenShift Container Platform 版本,如
4.17.0-multi
。如果您使用断开连接的环境,将<ocp_release_image>
替换为摘要镜像。要提取 OpenShift Container Platform 发行镜像摘要,请参阅"提取发行镜像摘要"。 - 11
- 指定节点池副本数,例如
3
。您必须将副本数指定为0
或更高,才能创建相同数量的副本。否则,不会创建节点池。 - 12
- 在
--ssh-key
标志后,指定 SSH 密钥的路径;例如user/.ssh/id_rsa
。
配置服务发布策略。默认情况下,托管集群使用 NodePort 服务发布策略,因为节点端口始终在没有额外基础架构的情况下可用。但是,您可以将服务发布策略配置为使用负载均衡器。
- 如果您使用默认的 NodePort 策略,请将 DNS 配置为指向托管的集群计算节点,而不是管理集群节点。如需更多信息,请参阅"裸机上的 DNS 配置"。
对于生产环境,请使用 LoadBalancer 策略,因为它提供证书处理和自动 DNS 解析。要更改服务发布策略
LoadBalancer
,在托管集群配置文件中编辑服务发布策略详情:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
LoadBalancer
作为 API 服务器类型。对于所有其他服务,将Route
指定为类型。
输入以下命令将更改应用到托管集群配置文件:
oc apply -f hosted_cluster_config.yaml
$ oc apply -f hosted_cluster_config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来监控托管集群、节点池和 pod 的创建:
oc get hostedcluster \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
$ oc get hostedcluster \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get nodepool \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
$ oc get nodepool \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods -n <hosted_cluster_namespace>
$ oc get pods -n <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
确认托管集群已就绪。当集群的状态为
Available: True
时,节点池状态会显示AllMachinesReady: True
,并且所有集群 Operator 都健康。 在托管集群中安装 MetalLB:
从托管集群中提取
kubeconfig
文件,并输入以下命令为托管集群访问设置环境变量:Copy to Clipboard Copied! Toggle word wrap Toggle overflow export KUBECONFIG="/path/to/kubeconfig-<hosted_cluster_namespace>.yaml"
$ export KUBECONFIG="/path/to/kubeconfig-<hosted_cluster_namespace>.yaml"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过创建
install-metallb-operator.yaml
文件来安装 MetalLB Operator:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令应用该文件:
oc apply -f install-metallb-operator.yaml
$ oc apply -f install-metallb-operator.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过创建
deploy-metallb-ipaddresspool.yaml
文件来配置 MetalLB IP 地址池:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令应用配置:
oc apply -f deploy-metallb-ipaddresspool.yaml
$ oc apply -f deploy-metallb-ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查 Operator 状态、IP 地址池和 L2Advertisement 来验证是否安装了 MetalLB。输入以下命令:
oc get pods -n metallb-system
$ oc get pods -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get ipaddresspool -n metallb-system
$ oc get ipaddresspool -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get l2advertisement -n metallb-system
$ oc get l2advertisement -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
为入口配置负载均衡器:
创建
ingress-loadbalancer.yaml
文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令应用配置:
oc apply -f ingress-loadbalancer.yaml
$ oc apply -f ingress-loadbalancer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令验证负载均衡器服务是否按预期工作:
oc get svc metallb-ingress -n openshift-ingress
$ oc get svc metallb-ingress -n openshift-ingress
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE metallb-ingress LoadBalancer 172.31.127.129 10.11.176.71 80:30961/TCP,443:32090/TCP 16h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE metallb-ingress LoadBalancer 172.31.127.129 10.11.176.71 80:30961/TCP,443:32090/TCP 16h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
配置 DNS 以使用负载均衡器:
-
通过将 5.2.
apps
.<hosted_cluster_namespace>.<base_domain> 通配符 DNS 记录指向负载均衡器 IP 地址,为 apps
域配置 DNS。 输入以下命令验证 DNS 解析:
nslookup console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain> <load_balancer_ip_address>
$ nslookup console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain> <load_balancer_ip_address>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Server: 10.11.176.1 Address: 10.11.176.1#53 Name: console-openshift-console.apps.my-hosted-cluster.sample-base-domain.com Address: 10.11.176.71
Server: 10.11.176.1 Address: 10.11.176.1#53 Name: console-openshift-console.apps.my-hosted-cluster.sample-base-domain.com Address: 10.11.176.71
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
通过将 5.2.
验证
输入以下命令检查集群 Operator:
oc get clusteroperators
$ oc get clusteroperators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保所有 Operator 显示
AVAILABLE: True
,PROGRESSING: False
, 和DEGRADED: False
。输入以下命令检查节点:
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保所有节点的状态为
READY
。通过在 Web 浏览器中输入以下 URL 来测试对控制台的访问:
https://console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain>
https://console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.5. 为 IBM Z 上托管的 control plane 创建 InfraEnv 资源 复制链接链接已复制到粘贴板!
InfraEnv
是一个使用 PXE 镜像引导的主机可作为代理加入的环境。在这种情况下,代理会在与您托管的 control plane 相同的命名空间中创建。
流程
创建 YAML 文件以包含配置。请参见以下示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将文件保存为
infraenv-config.yaml
。 输入以下命令应用配置:
oc apply -f infraenv-config.yaml
$ oc apply -f infraenv-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要获取下载 PXE 镜像的 URL,如
initrd.img
、kernel.img
或rootfs.img
,它允许 IBM Z 机器作为代理加入,请输入以下命令:oc -n <hosted_control_plane_namespace> get InfraEnv <hosted_cluster_name> -o json
$ oc -n <hosted_control_plane_namespace> get InfraEnv <hosted_cluster_name> -o json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.6. 在 InfraEnv 资源中添加 IBM Z 代理 复制链接链接已复制到粘贴板!
要将计算节点附加到托管的 control plane,请创建有助于您扩展节点池的代理。在 IBM Z 环境中添加代理需要额外的步骤,这在本节中详细介绍。
除非另有说明,否则这些步骤适用于 IBM Z 和 IBM LinuxONE 上的 z/VM 和 RHEL KVM 安装。
4.5.6.1. 将 IBM Z KVM 作为代理添加 复制链接链接已复制到粘贴板!
对于带有 KVM 的 IBM Z,运行以下命令,使用从 InfraEnv
资源下载的 PXE 镜像启动 IBM Z 环境。创建代理后,主机与 Assisted Service 通信,并注册与管理集群上的 InfraEnv
资源相同的命名空间中。
流程
运行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 ISO 引导,从
InfraEnv
资源下载 ISO,并运行以下命令来引导节点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.6.2. 添加 IBM Z LPAR 作为代理 复制链接链接已复制到粘贴板!
您可以在 IBM Z 或 IBM LinuxONE 上将逻辑分区(LPAR)作为计算节点添加到托管的 control plane。
流程
为代理创建引导参数文件:
参数文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
coreos.live.rootfs_url
工件,请为您要启动的kernel
和initramfs
指定匹配的rootfs
工件。仅支持 HTTP 和 HTTPS 协议。 - 2
- 对于
ip
参数,请手动分配 IP 地址,如 在 IBM Z 和 IBM LinuxONE 中使用 z/VM 安装集群中所述。 - 3
- 对于在 DASD 类型磁盘中安装,请使用
rd.dasd
指定要安装 Red Hat Enterprise Linux CoreOS (RHCOS) 的 DASD。对于在 FCP 类型磁盘中安装,请使用rd.zfcp=<adapter>,<wwpn>,<lun>
指定要安装 RHCOS 的 FCP 磁盘。 - 4
- 使用 Open Systems Adapter (OSA) 或 HiperSockets 时指定此参数。
从
InfraEnv
资源下载.ins
和initrd.img.addrsize
文件。默认情况下,
InfraEnv
资源中没有.ins
和initrd.img.addrsize
文件的 URL。您必须编辑 URL 来获取这些工件。运行以下命令,将内核 URL 端点更新为包含
ins-file
:curl -k -L -o generic.ins "< url for ins-file >"
$ curl -k -L -o generic.ins "< url for ins-file >"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow URL 示例
https://…/boot-artifacts/ins-file?arch=s390x&version=4.17.0
https://…/boot-artifacts/ins-file?arch=s390x&version=4.17.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
initrd
URL 端点,使其包含s390x-initrd-addrsize
:URL 示例
https://…./s390x-initrd-addrsize?api_key=<api-key>&arch=s390x&version=4.17.0
https://…./s390x-initrd-addrsize?api_key=<api-key>&arch=s390x&version=4.17.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
initrd
、kernel
、common.ins
和initrd.img.addrsize
参数文件传输到文件服务器。有关如何使用 FTP 和引导传输文件的更多信息,请参阅"在 LPAR 中安装"。 - 启动机器。
- 对集群中的所有其他机器重复这个过程。
4.5.6.3. 添加 IBM z/VM 作为代理 复制链接链接已复制到粘贴板!
如果要将静态 IP 用于 z/VM 客户机,您必须为 z/VM 代理配置 NMStateConfig
属性,以便 IP 参数保留在第二个启动中。
完成以下步骤,使用从 InfraEnv
资源下载的 PXE 镜像启动 IBM Z 环境。创建代理后,主机与 Assisted Service 通信,并注册与管理集群上的 InfraEnv
资源相同的命名空间中。
流程
更新参数文件,以添加
rootfs_url
、network_adaptor
和disk_type
值。参数文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
coreos.live.rootfs_url
工件,请为您要启动的kernel
和initramfs
指定匹配的rootfs
工件。仅支持 HTTP 和 HTTPS 协议。 - 2
- 对于
ip
参数,请手动分配 IP 地址,如 在 IBM Z 和 IBM LinuxONE 中使用 z/VM 安装集群中所述。 - 3
- 对于在 DASD 类型磁盘中安装,请使用
rd.dasd
指定要安装 Red Hat Enterprise Linux CoreOS (RHCOS) 的 DASD。对于在 FCP 类型磁盘中安装,请使用rd.zfcp=<adapter>,<wwpn>,<lun>
指定要安装 RHCOS 的 FCP 磁盘。 - 4
- 使用 Open Systems Adapter (OSA) 或 HiperSockets 时指定此参数。
运行以下命令,将
initrd
、内核镜像和参数文件移到客户虚拟机中:vmur pun -r -u -N kernel.img $INSTALLERKERNELLOCATION/<image name>
vmur pun -r -u -N kernel.img $INSTALLERKERNELLOCATION/<image name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vmur pun -r -u -N generic.parm $PARMFILELOCATION/paramfilename
vmur pun -r -u -N generic.parm $PARMFILELOCATION/paramfilename
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vmur pun -r -u -N initrd.img $INSTALLERINITRAMFSLOCATION/<image name>
vmur pun -r -u -N initrd.img $INSTALLERINITRAMFSLOCATION/<image name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从客户机虚拟机控制台运行以下命令:
cp ipl c
cp ipl c
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要列出代理及其属性,请输入以下命令:
oc -n <hosted_control_plane_namespace> get agents
$ oc -n <hosted_control_plane_namespace> get agents
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CLUSTER APPROVED ROLE STAGE 50c23cda-cedc-9bbd-bcf1-9b3a5c75804d auto-assign 5e498cd3-542c-e54f-0c58-ed43e28b568a auto-assign
NAME CLUSTER APPROVED ROLE STAGE 50c23cda-cedc-9bbd-bcf1-9b3a5c75804d auto-assign 5e498cd3-542c-e54f-0c58-ed43e28b568a auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来批准代理。
oc -n <hosted_control_plane_namespace> patch agent \ 50c23cda-cedc-9bbd-bcf1-9b3a5c75804d -p \ '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-zvm-0.hostedn.example.com"}}' \ --type merge
$ oc -n <hosted_control_plane_namespace> patch agent \ 50c23cda-cedc-9bbd-bcf1-9b3a5c75804d -p \ '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-zvm-0.hostedn.example.com"}}' \
1 --type merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 另外,您还可以在规格中设置代理 ID
<installation_disk_id>
和<hostname>
。
运行以下命令验证代理是否已批准:
oc -n <hosted_control_plane_namespace> get agents
$ oc -n <hosted_control_plane_namespace> get agents
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CLUSTER APPROVED ROLE STAGE 50c23cda-cedc-9bbd-bcf1-9b3a5c75804d true auto-assign 5e498cd3-542c-e54f-0c58-ed43e28b568a true auto-assign
NAME CLUSTER APPROVED ROLE STAGE 50c23cda-cedc-9bbd-bcf1-9b3a5c75804d true auto-assign 5e498cd3-542c-e54f-0c58-ed43e28b568a true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.7. 为 IBM Z 上托管集群扩展 NodePool 对象 复制链接链接已复制到粘贴板!
NodePool
对象在创建托管集群时创建。通过扩展 NodePool
对象,您可以在托管的 control plane 中添加更多计算节点。
当您扩展节点池时,会创建一个机器。Cluster API 供应商会找到已批准的、通过验证的、当前没有被使用但满足节点池规格中指定的要求的代理。您可以通过检查其状态和条件来监控代理的安装。
当您缩减节点池时,代理会从对应的集群绑定。在重复使用集群前,您必须使用 PXE 镜像引导集群以更新节点数。
流程
运行以下命令,将
NodePool
对象扩展到两个节点:oc -n <clusters_namespace> scale nodepool <nodepool_name> --replicas 2
$ oc -n <clusters_namespace> scale nodepool <nodepool_name> --replicas 2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cluster API 代理供应商会随机选择两个分配给托管集群的代理。这些代理会经历不同的状态,最终将托管集群作为 OpenShift Container Platform 节点加入。代理按以下顺序通过转换阶段:
-
binding
-
discovering
-
insufficient
-
installing
-
install-in-progress
-
added-to-existing-cluster
-
运行以下命令,以查看特定扩展代理的状态:
oc -n <hosted_control_plane_namespace> get agent -o \ jsonpath='{range .items[*]}BMH: {@.metadata.labels.agent-install\.openshift\.io/bmh} \ Agent: {@.metadata.name} State: {@.status.debugInfo.state}{"\n"}{end}'
$ oc -n <hosted_control_plane_namespace> get agent -o \ jsonpath='{range .items[*]}BMH: {@.metadata.labels.agent-install\.openshift\.io/bmh} \ Agent: {@.metadata.name} State: {@.status.debugInfo.state}{"\n"}{end}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
BMH: Agent: 50c23cda-cedc-9bbd-bcf1-9b3a5c75804d State: known-unbound BMH: Agent: 5e498cd3-542c-e54f-0c58-ed43e28b568a State: insufficient
BMH: Agent: 50c23cda-cedc-9bbd-bcf1-9b3a5c75804d State: known-unbound BMH: Agent: 5e498cd3-542c-e54f-0c58-ed43e28b568a State: insufficient
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来查看转换阶段:
oc -n <hosted_control_plane_namespace> get agent
$ oc -n <hosted_control_plane_namespace> get agent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CLUSTER APPROVED ROLE STAGE 50c23cda-cedc-9bbd-bcf1-9b3a5c75804d hosted-forwarder true auto-assign 5e498cd3-542c-e54f-0c58-ed43e28b568a true auto-assign da503cf1-a347-44f2-875c-4960ddb04091 hosted-forwarder true auto-assign
NAME CLUSTER APPROVED ROLE STAGE 50c23cda-cedc-9bbd-bcf1-9b3a5c75804d hosted-forwarder true auto-assign 5e498cd3-542c-e54f-0c58-ed43e28b568a true auto-assign da503cf1-a347-44f2-875c-4960ddb04091 hosted-forwarder true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令以生成
kubeconfig
文件来访问托管集群:hcp create kubeconfig \ --namespace <clusters_namespace> \ --name <hosted_cluster_namespace> > <hosted_cluster_name>.kubeconfig
$ hcp create kubeconfig \ --namespace <clusters_namespace> \ --name <hosted_cluster_namespace> > <hosted_cluster_name>.kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 代理访问
added-to-existing-cluster
状态后,输入以下命令验证您可以看到 OpenShift Container Platform 节点:oc --kubeconfig <hosted_cluster_name>.kubeconfig get nodes
$ oc --kubeconfig <hosted_cluster_name>.kubeconfig get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS ROLES AGE VERSION worker-zvm-0.hostedn.example.com Ready worker 5m41s v1.24.0+3882f8f worker-zvm-1.hostedn.example.com Ready worker 6m3s v1.24.0+3882f8f
NAME STATUS ROLES AGE VERSION worker-zvm-0.hostedn.example.com Ready worker 5m41s v1.24.0+3882f8f worker-zvm-1.hostedn.example.com Ready worker 6m3s v1.24.0+3882f8f
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 集群 Operator 开始通过向节点添加工作负载来协调。
输入以下命令验证在扩展
NodePool
对象时是否创建了两台机器:oc -n <hosted_control_plane_namespace> get machine.cluster.x-k8s.io
$ oc -n <hosted_control_plane_namespace> get machine.cluster.x-k8s.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION hosted-forwarder-79558597ff-5tbqp hosted-forwarder-crqq5 worker-zvm-0.hostedn.example.com agent://50c23cda-cedc-9bbd-bcf1-9b3a5c75804d Running 41h 4.15.0 hosted-forwarder-79558597ff-lfjfk hosted-forwarder-crqq5 worker-zvm-1.hostedn.example.com agent://5e498cd3-542c-e54f-0c58-ed43e28b568a Running 41h 4.15.0
NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION hosted-forwarder-79558597ff-5tbqp hosted-forwarder-crqq5 worker-zvm-0.hostedn.example.com agent://50c23cda-cedc-9bbd-bcf1-9b3a5c75804d Running 41h 4.15.0 hosted-forwarder-79558597ff-lfjfk hosted-forwarder-crqq5 worker-zvm-1.hostedn.example.com agent://5e498cd3-542c-e54f-0c58-ed43e28b568a Running 41h 4.15.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来检查集群版本:
oc --kubeconfig <hosted_cluster_name>.kubeconfig get clusterversion,co
$ oc --kubeconfig <hosted_cluster_name>.kubeconfig get clusterversion,co
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS clusterversion.config.openshift.io/version 4.15.0-ec.2 True False 40h Cluster version is 4.15.0-ec.2
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS clusterversion.config.openshift.io/version 4.15.0-ec.2 True False 40h Cluster version is 4.15.0-ec.2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来检查集群 Operator 状态:
oc --kubeconfig <hosted_cluster_name>.kubeconfig get clusteroperators
$ oc --kubeconfig <hosted_cluster_name>.kubeconfig get clusteroperators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
对于集群的每个组件,输出显示以下集群操作器状态: NAME
,VERSION
,AVAILABLE
,PROGRESSING
,DEGRADED
,SINCE
, 和 MESSAGE
。
如需输出示例,请参阅 Initial Operator 配置。