4.6. 在 IBM Power 上部署托管的 control plane
您可以通过将集群配置为充当托管集群来部署托管 control plane。此配置为管理许多集群提供了高效且可扩展的解决方案。托管的集群是托管 control plane 的 OpenShift Container Platform 集群。托管集群也称为管理集群。
管理集群不是受管集群。受管集群是 hub 集群管理的集群。
multicluster engine Operator 只支持默认的 local-cluster
,它是一个受管 hub 集群,hub 集群作为托管集群。
要在裸机基础架构上置备托管的 control plane,您可以使用 Agent 平台。Agent 平台使用中央基础架构管理服务将计算节点添加到托管集群。如需更多信息,请参阅"启用中央基础架构管理服务"。
您必须使用中央基础架构管理提供的发现镜像启动每个 IBM Power 主机。每个主机启动后,它会运行一个代理进程来发现主机的详细信息并完成安装。Agent 自定义资源代表每个主机。
当使用 Agent 平台创建托管集群时,Hyper HyperShift 会在托管的 control plane 命名空间中安装 Agent Cluster API 供应商。
4.6.1. 在 IBM Power 上配置托管的 control plane 的先决条件 复制链接链接已复制到粘贴板!
- 在 OpenShift Container Platform 集群上安装 Kubernetes Operator 版本 2.7 及更新的版本。安装 Red Hat Advanced Cluster Management (RHACM) 时会自动安装 multicluster engine Operator。您还可以在没有 RHACM 的情况下从 OpenShift Container Platform OperatorHub 安装 multicluster engine Operator。
multicluster engine Operator 必须至少有一个受管 OpenShift Container Platform 集群。
local-cluster
受管 hub 集群会在 multicluster engine Operator 版本 2.7 及更高版本中自动导入。有关local-cluster
的更多信息,请参阅 RHACM 文档中的高级配置。您可以运行以下命令来检查 hub 集群的状态:oc get managedclusters local-cluster
$ oc get managedclusters local-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 您需要具有至少 3 个计算节点的托管集群来运行 HyperShift Operator。
- 您需要启用中央基础架构管理服务。如需更多信息,请参阅"启用中央基础架构管理服务"。
- 您需要安装托管的 control plane 命令行界面。如需更多信息,请参阅"安装托管的 control plane 命令行界面"。
托管的 control plane 功能默认启用。如果您禁用了这个功能并希望手动启用该功能,请参阅"手动启用托管的 control plane 功能"。如果您需要禁用该功能,请参阅"禁用托管的 control planes 功能"。
4.6.2. IBM Power 基础架构要求 复制链接链接已复制到粘贴板!
Agent 平台不会创建任何基础架构,但需要以下基础架构资源:
- 代理 : 代理 代表使用 Discovery 镜像引导的主机,您可以置备为 OpenShift Container Platform 节点。
- DNS :API 和入口端点必须可以被路由。
4.6.3. IBM Power 上托管的 control plane 的 DNS 配置 复制链接链接已复制到粘贴板!
集群外的客户端可以访问托管集群的 API 服务器。必须存在 api.<hosted_cluster_name>.<basedomain>
的 DNS 条目,指向可以访问 API 服务器的目标。
DNS 条目可以像一个记录一样简单,该记录指向运行托管 control plane 的受管集群中的一个节点。
该条目也可以指向部署的负载均衡器,将传入的流量重定向到入口 pod。
请参阅以下 DNS 配置示例:
cat /var/named/<example.krnl.es.zone>
$ cat /var/named/<example.krnl.es.zone>
输出示例
- 1
- 记录指的是 API 负载均衡器的 IP 地址,用于处理托管 control plane 的入口和出口流量。
对于 IBM Power,添加与代理 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.6.3.1. 定义自定义 DNS 名称 复制链接链接已复制到粘贴板!
作为集群管理员,您可以使用外部 API DNS 名称创建托管集群,它与用于节点 bootstrap 和 control plane 通信的内部端点不同。您可能需要定义不同的 DNS 名称,理由如下:
- 要将面向用户的 TLS 证书替换为公共 CA 中的一个,而不破坏绑定到内部 root CA 的 control plane 功能。
- 支持 split-horizon DNS 和 NAT 场景。
-
为确保与独立 control plane 类似的体验,您可以使用带有正确的
kubeconfig
和 DNS 配置等功能,如Show Login Command
功能。
您可以通过在 HostedCluster
对象的 kubeAPIServerDNSName
参数中输入域名,在初始设置或安装后操作期间定义 DNS 名称。
先决条件
-
您有一个有效的 TLS 证书,用于覆盖
kubeAPIServerDNSName
参数中设置的 DNS 名称。 - 您有一个可解析的 DNS 名称 URI,可以访问并指向正确的地址。
流程
在
HostedCluster
对象的规格中,添加kubeAPIServerDNSName
参数和域的地址,并指定要使用的证书,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
kubeAPIServerDNSName
参数的值必须是有效且可寻址的域。
在定义了 kubeAPIServerDNSName
参数并指定证书后,Control Plane Operator 控制器会创建一个名为 custom-admin-
文件,其中的文件存储在 kubeconfig
的 kubeconfigHostedControlPlane
命名空间中。证书生成发生自 root CA,而 HostedControlPlane
命名空间则管理其过期和续订。
Control Plane Operator 在 HostedControlPlane
命名空间中报告一个名为 CustomKubeconfig
的新 kubeconfig
文件。该文件使用 kubeAPIServerDNSName
参数中定义的新服务器。
自定义 kubeconfig
文件的引用存在于 status
参数中,作为 HostedCluster
对象的 CustomKubeconfig
。CustomKubeConfig
参数是可选的,只有在 kubeAPIServerDNSName
参数不为空时才添加该参数。设置 CustomKubeConfig
参数后,参数会在 HostedCluster
命名空间中触发名为 < hosted_cluster_name>-custom-admin-kubeconfig
的 secret 生成。您可以使用 secret 访问 HostedCluster
API 服务器。如果在安装后操作过程中删除 CustomKubeConfig
参数,请删除所有相关 secret 和状态引用。
定义自定义 DNS 名称不会影响数据平面,因此不会发生预期的推出部署。HostedControlPlane
命名空间从 HyperShift Operator 接收更改并删除对应的参数。
如果您从 HostedCluster
对象的规格中删除 kubeAPIServerDNSName
参数,则所有新生成的 secret 和 CustomKubeconfig
引用都会从集群中和 status
参数中删除。
4.6.4. 使用 CLI 创建托管集群 复制链接链接已复制到粘贴板!
在裸机基础架构上,您可以创建或导入托管集群。在为多集群引擎 Operator 启用 Assisted Installer 作为附加组件后,您可以使用 Agent 平台创建一个托管集群,HyperShift Operator 会在托管的 control plane 命名空间中安装 Agent Cluster API 供应商。Agent Cluster API 供应商连接托管 control plane 和一个仅由计算节点组成的托管集群的管理集群。
先决条件
- 每个托管集群都必须具有集群范围的唯一名称。托管的集群名称都不能与任何现有受管集群相同。否则,多集群引擎 Operator 无法管理托管集群。
-
不要使用单词
cluster
作为托管的集群名称。 - 您不能在多集群引擎 Operator 受管集群的命名空间中创建托管集群。
- 为获得最佳安全性和管理实践,请创建一个与其他托管集群分开的托管集群。
- 验证您是否为集群配置了默认存储类。否则,您可能会看到待处理的持久性卷声明(PVC)。
-
默认情况下,当使用
hcp create cluster agent
命令时,命令会创建一个带有配置的节点端口的托管集群。裸机上托管集群的首选发布策略通过负载均衡器公开服务。如果使用 Web 控制台或使用 Red Hat Advanced Cluster Management 创建托管集群,要为 Kubernetes API 服务器以外的服务设置发布策略,您必须在HostedCluster
自定义资源中手动指定servicePublishingStrategy
信息。 确保您满足裸机上托管 control plane 的 "Requirements for hosted 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 命名空间,如
cluster-example
。使用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.19.0-multi
。如果您使用断开连接的环境,将<ocp_release_image>
替换为摘要镜像。要提取 OpenShift Container Platform 发行镜像摘要,请参阅 提取 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 以使用负载均衡器:
-
为
apps
域配置 DNS,将*.apps.<hosted_cluster_namespace>.<base_domain>
通配符 DNS 记录指向负载均衡器的 IP 地址。 输入以下命令验证 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
-
为
验证
输入以下命令检查集群 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.6.5. 关于在代理托管集群中创建异构节点池 复制链接链接已复制到粘贴板!
节点池是集群中共享相同配置的一组节点。异构节点池有不同的配置,以便您可以创建池并针对各种工作负载优化它们。
您可以在代理平台上创建异构节点池。平台可让集群在单个托管集群中运行各种机器类型,如 x86_64
或 ppc64le
。
创建异构节点池需要完成以下常规步骤:
-
创建一个
AgentServiceConfig
自定义资源(CR),告知 Operator 会为组件(如数据库和文件系统)需要多少存储。CR 还定义要支持哪些 OpenShift Container Platform 版本。 - 创建代理集群。
- 创建异构节点池。
- 为托管的 control plane 配置 DNS
-
为每个架构创建一个
InfraEnv
自定义资源 (CR)。 - 为异构集群添加代理。
4.6.5.1. 创建 AgentServiceConfig 自定义资源 复制链接链接已复制到粘贴板!
要在托管集群中的代理中创建异构节点池,您需要创建带两个异构架构操作系统(OS)镜像的 AgentServiceConfig
CR。
流程
运行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 为 Kubernetes Operator
agentserviceconfig
配置、数据库卷名称指定多集群引擎。 - 2
- 指定 multicluster engine Operator
agentserviceconfig
配置,文件系统卷名称。 - 3
- 指定 OpenShift Container Platform 的当前版本。
- 4
- 为 x86 指定当前的 OpenShift Container Platform 发行版本。
- 5
- 指定 x86 的 ISO URL。
- 6
- 指定 x86 的根文件系统 URL。
- 7
- 指定 x86 的 CPU 架构。
- 8
- 指定当前的 OpenShift Container Platform 版本。
- 9
- 指定
ppc64le
的 OpenShift Container Platform 发行版本。 - 10
- 指定
ppc64le
的 ISO URL。 - 11
- 指定
ppc64le
的根文件系统 URL。 - 12
- 指定
ppc64le
的 CPU 架构。
4.6.5.2. 创建代理集群 复制链接链接已复制到粘贴板!
基于代理的方法管理和调配代理集群。代理集群可以使用异构节点池,允许在同一集群中使用不同类型的计算节点。
先决条件
- 您在创建托管集群时,您使用多架构发行镜像启用对异构节点池的支持。在 Multi-arch 发行镜像页中找到最新的多架构镜像。
流程
运行以下命令,为集群命名空间创建环境变量:
export CLUSTERS_NAMESPACE=<hosted_cluster_namespace>
$ export CLUSTERS_NAMESPACE=<hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为机器无类别域间路由(CIDR)标记创建环境变量:
export MACHINE_CIDR=192.168.122.0/24
$ export MACHINE_CIDR=192.168.122.0/24
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建托管的控制命名空间:
oc create ns <hosted_control_plane_namespace>
$ oc create ns <hosted_control_plane_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建集群:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6.5.3. 创建异构节点池 复制链接链接已复制到粘贴板!
您可以使用 NodePool
自定义资源(CR)创建异构节点池,以便您可以通过将不同的工作负载与特定硬件关联来优化成本和性能。
流程
要定义
NodePool
CR,请创建一个类似以下示例的 YAML 文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- selector 块选择与指定标签匹配的代理。要创建带有零副本的架构
ppc64le
的节点池,请指定ppc64le
。这样可确保选择器块在扩展操作期间仅从ppc64le
架构中选择代理。
4.6.5.4. 托管 control plane 的 DNS 配置 复制链接链接已复制到粘贴板!
托管 control plane 的域名服务(DNS)配置意味着外部客户端可以访问入口控制器,以便客户端可以将流量路由到内部组件。配置此设置可确保流量路由到 ppc64le
或 x86_64
计算节点。
您可以将 5.2. apps.<cluster_name
> 记录指向托管 ingress 应用程序的任何计算节点。或者,如果您可以在计算节点之上设置负载均衡器,请将记录指向此负载均衡器。当您创建异构节点池时,请确保计算节点可以相互连接,或者将其保存在同一网络中。
4.6.5.5. 创建基础架构环境资源 复制链接链接已复制到粘贴板!
对于异构节点池,您必须为每个架构创建一个 infraEnv
自定义资源 (CR)。此配置可确保在节点置备过程中使用了正确的特定于架构的操作系统和引导工件。例如,对于带有 x86_64
和 ppc64le
架构的节点池,请为 x86_64
和 ppc64le
创建 InfraEnv
CR。
在开始这个过程前,请确保将 x86_64
和 ppc64le
架构的操作系统镜像添加到 AgentServiceConfig
资源中。之后,您可以使用 InfraEnv
资源获取最小 ISO 镜像。
流程
运行以下命令,使用
x86_64
架构为异构节点池创建InfraEnv
资源:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用异构节点池的
ppc64le
架构创建InfraEnv
资源:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
InfraEnv
资源是否成功创建:验证
x86_64
InfraEnv
资源是否成功创建:oc describe InfraEnv <hosted_cluster_name>-<arch_x86>
$ oc describe InfraEnv <hosted_cluster_name>-<arch_x86>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
ppc64le
InfraEnv
资源是否成功创建:oc describe InfraEnv <hosted_cluster_name>-<arch_ppc64le>
$ oc describe InfraEnv <hosted_cluster_name>-<arch_ppc64le>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,生成一个实时 ISO,允许虚拟机或裸机作为代理加入代理:
为
x86_64
生成 live ISO:oc -n <hosted_control_plane_namespace> get InfraEnv <hosted_cluster_name>-<arch_x86> -ojsonpath="{.status.isoDownloadURL}"
$ oc -n <hosted_control_plane_namespace> get InfraEnv <hosted_cluster_name>-<arch_x86> -ojsonpath="{.status.isoDownloadURL}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
ppc64le
生成 live ISO:oc -n <hosted_control_plane_namespace> get InfraEnv <hosted_cluster_name>-<arch_ppc64le> -ojsonpath="{.status.isoDownloadURL}"
$ oc -n <hosted_control_plane_namespace> get InfraEnv <hosted_cluster_name>-<arch_ppc64le> -ojsonpath="{.status.isoDownloadURL}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6.5.6. 在异构集群中添加代理 复制链接链接已复制到粘贴板!
您可以通过手动配置机器以使用 live ISO 引导来添加代理。您可以下载 live ISO,并使用它来引导裸机节点或虚拟机。在引导时,节点与 assisted-service
通信,并作为与 InfraEnv
资源相同的命名空间中的代理注册。创建每个代理后,您可以选择在规格中设置它的 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 86f7ac75-4fc4-4b36-8130-40fa12602218 auto-assign e57a637f-745b-496e-971d-1abbf03341ba auto-assign
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 auto-assign e57a637f-745b-496e-971d-1abbf03341ba auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来修补代理:
oc -n <hosted_control_plane_namespace> patch agent 86f7ac75-4fc4-4b36-8130-40fa12602218 -p '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-0.example.krnl.es"}}' --type merge
$ oc -n <hosted_control_plane_namespace> patch agent 86f7ac75-4fc4-4b36-8130-40fa12602218 -p '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-0.example.krnl.es"}}' --type merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来修补第二个代理:
oc -n <hosted_control_plane_namespace> patch agent 23d0c614-2caa-43f5-b7d3-0b3564688baa -p '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-1.example.krnl.es"}}' --type merge
$ oc -n <hosted_control_plane_namespace> patch agent 23d0c614-2caa-43f5-b7d3-0b3564688baa -p '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-1.example.krnl.es"}}' --type merge
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 86f7ac75-4fc4-4b36-8130-40fa12602218 true auto-assign e57a637f-745b-496e-971d-1abbf03341ba true auto-assign
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 true auto-assign e57a637f-745b-496e-971d-1abbf03341ba true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6.5.7. 扩展节点池 复制链接链接已复制到粘贴板!
批准代理后,您可以扩展节点池。您在节点池中配置的 agentLabelSelector
值可确保仅将匹配的代理添加到集群中。这也有助于缩减节点池。要从集群中删除特定的架构节点,请缩减对应的节点池。
流程
运行以下命令来扩展节点池:
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
,installing-in-progress
, 和added-to-existing-cluster
。
验证
运行以下命令列出代理:
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 4dac1ab2-7dd5-4894-a220-6a3473b67ee6 hypercluster1 true auto-assign d9198891-39f4-4930-a679-65fb142b108b true auto-assign da503cf1-a347-44f2-875c-4960ddb04091 hypercluster1 true auto-assign
NAME CLUSTER APPROVED ROLE STAGE 4dac1ab2-7dd5-4894-a220-6a3473b67ee6 hypercluster1 true auto-assign d9198891-39f4-4930-a679-65fb142b108b true auto-assign da503cf1-a347-44f2-875c-4960ddb04091 hypercluster1 true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查特定扩展代理的状态:
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: ocp-worker-2 Agent: 4dac1ab2-7dd5-4894-a220-6a3473b67ee6 State: binding BMH: ocp-worker-0 Agent: d9198891-39f4-4930-a679-65fb142b108b State: known-unbound BMH: ocp-worker-1 Agent: da503cf1-a347-44f2-875c-4960ddb04091 State: insufficient
BMH: ocp-worker-2 Agent: 4dac1ab2-7dd5-4894-a220-6a3473b67ee6 State: binding BMH: ocp-worker-0 Agent: d9198891-39f4-4930-a679-65fb142b108b State: known-unbound BMH: ocp-worker-1 Agent: da503cf1-a347-44f2-875c-4960ddb04091 State: insufficient
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 ocp-worker-1 Ready worker 5m41s v1.24.0+3882f8f ocp-worker-2 Ready worker 6m3s v1.24.0+3882f8f
NAME STATUS ROLES AGE VERSION ocp-worker-1 Ready worker 5m41s v1.24.0+3882f8f ocp-worker-2 Ready worker 6m3s v1.24.0+3882f8f
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将工作负载添加到节点可以协调一些集群 operator。以下命令显示创建在扩展节点池后出现的两台机器:
oc -n <hosted_control_plane_namespace> get machines
$ oc -n <hosted_control_plane_namespace> get machines
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION hypercluster1-c96b6f675-m5vch hypercluster1-b2qhl ocp-worker-1 agent://da503cf1-a347-44f2-875c-4960ddb04091 Running 15m 4.11.5 hypercluster1-c96b6f675-tl42p hypercluster1-b2qhl ocp-worker-2 agent://4dac1ab2-7dd5-4894-a220-6a3473b67ee6 Running 15m 4.11.5
NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION hypercluster1-c96b6f675-m5vch hypercluster1-b2qhl ocp-worker-1 agent://da503cf1-a347-44f2-875c-4960ddb04091 Running 15m 4.11.5 hypercluster1-c96b6f675-tl42p hypercluster1-b2qhl ocp-worker-2 agent://4dac1ab2-7dd5-4894-a220-6a3473b67ee6 Running 15m 4.11.5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow