$ oc get managedclusters local-cluster
您可以通过将集群配置为托管集群来部署托管控制平面。托管集群是托管控制平面的 OpenShift Container Platform 集群。托管集群也称为管理集群。
管理集群不是被管理的集群。被管理的集群是由中心集群管理的集群。 |
多集群引擎运算符仅支持默认的local-cluster
(一个被管理的中心集群)和中心集群作为托管集群。
要在裸机上配置托管控制平面,您可以使用 Agent 平台。Agent 平台使用中央基础设施管理服务将工作节点添加到托管集群。更多信息,请参见“启用中央基础设施管理服务”。
每个 IBM Power 主机必须使用中央基础设施管理提供的发现镜像启动。每台主机启动后,它都会运行一个 Agent 进程来发现主机的详细信息并完成安装。一个 Agent 自定义资源代表每个主机。
当您使用 Agent 平台创建托管集群时,HyperShift 会在托管控制平面命名空间中安装 Agent 集群 API 提供程序。
在 OpenShift Container Platform 集群上安装的 Kubernetes 运算符多集群引擎版本 2.7 或更高版本。安装 Red Hat Advanced Cluster Management (RHACM) 时会自动安装多集群引擎运算符。您也可以从 OpenShift Container Platform OperatorHub 将多集群引擎运算符作为运算符安装,而无需 RHACM。
多集群引擎运算符必须至少有一个被管理的 OpenShift Container Platform 集群。在多集群引擎运算符版本 2.7 及更高版本中,local-cluster
托管中心集群会自动导入。有关local-cluster
的更多信息,请参见 RHACM 文档中的高级配置。您可以通过运行以下命令来检查中心集群的状态
$ oc get managedclusters local-cluster
您需要一个至少有 3 个工作节点的托管集群来运行 HyperShift 运算符。
您需要启用中央基础设施管理服务。更多信息,请参见“启用中央基础设施管理服务”。
您需要安装托管控制平面命令行界面。更多信息,请参见“安装托管控制平面命令行界面”。
托管控制平面功能默认启用。如果您禁用了此功能并希望手动启用它,请参见“手动启用托管控制平面功能”。如果您需要禁用此功能,请参见“禁用托管控制平面功能”。
Agent 平台不创建任何基础设施,但需要以下基础设施资源
代理:代理代表一个已使用发现镜像启动并已准备好配置为 OpenShift Container Platform 节点的主机。
DNS:API 和 Ingress 端点必须可路由。
托管集群的 API 服务器已公开。必须存在一个指向 API 服务器可访问目的地的 api.<托管集群名称>.<基础域名>
条目 DNS 记录。
DNS 条目可以简单地是一个指向运行托管控制平面的托管集群中一个节点的记录。
该条目也可以指向已部署的负载均衡器,以将传入流量重定向到 Ingress Pod。
请参见以下 DNS 配置示例
$ cat /var/named/<example.krnl.es.zone>
$ TTL 900
@ IN SOA bastion.example.krnl.es.com. hostmaster.example.krnl.es.com. (
2019062002
1D 1H 1W 3H )
IN NS bastion.example.krnl.es.com.
;
;
api IN A 1xx.2x.2xx.1xx (1)
api-int IN A 1xx.2x.2xx.1xx
;
;
*.apps.<hosted-cluster-name>.<basedomain> IN A 1xx.2x.2xx.1xx
;
;EOF
1 | 该记录引用处理托管控制平面出入流量的 API 负载均衡器的 IP 地址。 |
对于 IBM Power,请添加与代理 IP 地址对应的 IP 地址。
compute-0 IN A 1xx.2x.2xx.1yy
compute-1 IN A 1xx.2x.2xx.1yy
使用 Agent 平台创建托管集群时,HyperShift 会在托管控制平面命名空间中安装 Agent Cluster API 提供程序。您可以在裸机上创建托管集群或导入托管集群。
创建托管集群时,请记住以下准则
每个托管集群必须具有集群范围唯一的名称。为了让多集群引擎 Operator 进行管理,托管集群名称不能与任何现有托管集群的名称相同。
不要使用 clusters
作为托管集群名称。
不能在多集群引擎 Operator 管理的集群的命名空间中创建托管集群。
最常见的服务发布策略是通过负载均衡器公开服务。该策略是公开 Kubernetes API 服务器的首选方法。如果您使用 Web 控制台或 Red Hat Advanced Cluster Management 创建托管集群,则要为 Kubernetes API 服务器以外的服务设置发布策略,必须在 HostedCluster
自定义资源中手动指定 servicePublishingStrategy
信息。
输入以下命令创建托管控制平面命名空间
$ oc create ns <hosted_cluster_namespace>-<hosted_cluster_name>
将 <托管集群命名空间>
替换为您的托管集群命名空间名称,例如 clusters
。将 <托管集群名称>
替换为您的托管集群名称。
验证您是否已为集群配置了默认存储类。否则,您可能会看到挂起的 PVC。运行以下命令
$ hcp create cluster agent \
--name=<hosted_cluster_name> \(1)
--pull-secret=<path_to_pull_secret> \(2)
--agent-namespace=<hosted_control_plane_namespace> \(3)
--base-domain=<basedomain> \(4)
--api-server-address=api.<hosted_cluster_name>.<basedomain> \(5)
--etcd-storage-class=<etcd_storage_class> \(6)
--ssh-key <path_to_ssh_public_key> \(7)
--namespace <hosted_cluster_namespace> \(8)
--control-plane-availability-policy HighlyAvailable \(9)
--release-image=quay.io/openshift-release-dev/ocp-release:<ocp_release_image> (10)
1 | 指定您的托管集群名称,例如 example 。 |
2 | 指定您的拉取密钥路径,例如 /user/name/pullsecret 。 |
3 | 指定您的托管控制平面命名空间,例如 clusters-example 。使用 oc get agent -n <托管控制平面命名空间> 命令确保该命名空间中存在代理。 |
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 | 指定托管控制平面组件的可用性策略。支持的选项为 SingleReplica 和 HighlyAvailable 。默认值为 HighlyAvailable 。 |
10 | 指定您要使用的受支持的 OpenShift Container Platform 版本,例如 4.17.0-multi 。如果您使用的是断开连接的环境,请将 <ocp_发布镜像> 替换为摘要镜像。要提取 OpenShift Container Platform 发布镜像摘要,请参见提取 OpenShift Container Platform 发布镜像摘要。 |
片刻之后,输入以下命令验证您的托管控制平面 Pod 是否已启动并运行
$ oc -n <hosted_control_plane_namespace> get pods
NAME READY STATUS RESTARTS AGE
capi-provider-7dcf5fc4c4-nr9sq 1/1 Running 0 4m32s
catalog-operator-6cd867cc7-phb2q 2/2 Running 0 2m50s
certified-operators-catalog-884c756c4-zdt64 1/1 Running 0 2m51s
cluster-api-f75d86f8c-56wfz 1/1 Running 0 4m32s