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.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 以使用负载均衡器:
-
通过将 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