Clusters
了解如何跨云供应商创建、导入和管理集群。
摘要
第 1 章 管理集群
了解如何通过使用 Red Hat Advanced Cluster Management for Kubernetes 控制台来跨云供应商环境中创建、导入和管理集群。
通过以下主题了解如何在跨云供应商环境中管理集群:
第 2 章 集群生命周期架构
集群主要有两种类型:hub 集群和 受管集群 (managed clusters)。
hub 集群是在其上安装的 Red Hat Advanced Cluster Management for Kubernetes 的主集群。您可以使用 hub 集群创建、管理和监控其他 Kubernetes 集群。
受管集群是由 hub 集群管理的 Kubernetes 集群。您可以使用 Red Hat Advanced Cluster Management hub 集群创建一些集群,同时也可以导入现有集群由 hub 集群管理。
下图显示了安装 Red Hat Advanced Cluster Management for 集群管理的组件:
集群生命周期管理架构的组件包括以下项目:
hub 集群上的组件:
- 控制台:提供基于 Web 的界面,以管理 Red Hat Advanced Cluster Management 受管集群的集群生命周期。
- Hive Controller:置备使用 Red Hat Advanced Cluster Management 创建的集群。Hive Controller 还会分离并销毁由 Red Hat Advanced Cluster Management 创建的受管集群。
- Managed Cluster Import Controller:将 klusterlet operator 部署到受管集群。
- Klusterlet Add-on Controller:将 klusterlet 附加组件 Operator 部署到受管集群。
受管集群中的组件:
- Klusterlet Operator:在受管集群中部署注册和工作控制器。
- Registration Agent:将受管集群注册到 hub 集群。
- Work Agent:将清单应用到受管集群。
- Klusterlet Add-on Operator:部署附加组件组件。
第 3 章 支持的云
了解 Red Hat Advanced Cluster Management for Kubernetes 支持的云供应商。此外,查找记录在案的可用受管供应商。有关支持的云的更多信息,请参阅 Red Hat Advanced Cluster Management 2.3 支持列表。
最佳实践:对于受管集群供应商,请使用 Kubernetes 的最新版本。
3.1. 支持的 hub 集群供应商
Red Hat OpenShift Container Platform 版本 4.6.1 或更高版本都支持 hub 集群。
- 请参阅 Red Hat OpenShift Container Platform on Amazon Web Services。
- 请参阅 Red Hat OpenShift Container Platform on Microsoft Azure。
- 请参阅 Red Hat OpenShift Container Platform on Google Cloud Platform。
- 请参阅 Red Hat OpenShift Dedicated (OSD) (OpenShift Container Platform 版本 4.7 及更新版本)。
- 请参阅 Red Hat OpenShift Container Platform on IBM Cloud (ROKS) (Red Hat OpenShift Container Platform 版本 4.7 和更新版本)。
- 请参阅 Azure for Red Hat OpenShift (ARO) (Red Hat OpenShift Container Platform 版本 4.7 和更新版本)。
- 请参阅 Red Hat OpenShift Container Platform on VMware vSphere。
- 请参阅 Red Hat OpenShift Container Platform on OpenStack (OpenStack 版本 16.1 或更改版本)。
- 请参阅 OpenShift on Amazon Web Services (ROSA)。
- 技术预览:请参阅 OpenShift Container Platform on IBM Power systems。
3.2. 支持的受管集群供应商
Red Hat OpenShift Container Platform 版本 3.11.200 或更高版本,受管集群支持 4.6.1 或更高版本。
请参阅可用的受管集群选项和文档:
- 请参阅 Red Hat OpenShift Container Platform on Amazon Web Services。
- 请参阅 Red Hat OpenShift Container Platform on Microsoft Azure。
- 请参阅 Red Hat OpenShift Container Platform on Google Cloud Platform。
- 请参阅 Red Hat OpenShift Dedicated (OSD) (Red Hat OpenShift Container Platform 版本 4.5.16 和更高版本)。
- 请参阅 IBM Cloud(ROKS)(Kubernetes 1.17 及更高版本)上的 Red Hat OpenShift Container Platform。
- 请参阅 Azure Red Hat OpenShift (ARO)。
- 请参阅 Red Hat OpenShift Container Platform on VMware vSphere。
- 请参阅 Red Hat OpenShift Container Platform on OpenStack (OpenStack 版本 16.1 或更改版本)。
- 请参阅 OpenShift on Amazon Web Services (ROSA)。
- 请参阅关于 Red Hat OpenShift Kubernetes Engine。
- 请参阅 Amazon Elastic Kubernetes Service (Kubernetes 1.17.6 及更高版本)。
- 请参阅 Google Kubernetes Engine (Kubernetes 1.17 及更高版本)。
- 请参阅开始使用 IBM Cloud Kubernetes Service (Kubernetes 1.18 及更高版本)。
- 请参阅 Azure Kubernetes Service (Kubernetes 1.19.6 及更高版本)。
- 请参阅 IBM Z 上的 Red Hat OpenShift Container Platform 4.6.1 及更新的版本。
- 请参阅 OpenShift Container Platform on IBM Power systems。
3.3. 配置 kubectl
对于以上列出的厂商文档,您可能需要了解如何配置 kubectl
。当将受管集群导入到 hub 集群时,您必须已安装 kubectl
。详情请参阅把目标受管集群导入到 hub 集群。
第 4 章 重新定义集群大小(技术预览)
您可以自定义受管集群规格,如虚拟机大小和节点数量。
许多由 Red Hat Advanced Cluster Management for Kubernetes 管理的集群可以使用 Red Hat Advanced Cluster Management 控制台或命令行和 MachinePool
资源进行扩展。MachinePool
资源是 Hub 集群上的 Kubernetes 资源,用于将 MachineSet
资源分组到受管集群上。MachinePool
资源统一配置一组计算机资源,包括区配置、实例类型和 root 存储。它还可帮助您手动配置所需的节点数,或配置受管集群中的节点的自动扩展。
4.1. 扩展由 Red Hat Advanced Cluster Management 创建的受管集群
使用 MachinePool
资源扩展 Red Hat Advanced Cluster Management 创建的集群是一个技术预览功能,它不支持由 Red Hat Advanced Cluster Management 创建的裸机集群。
4.1.1. 自动缩放
配置自动扩展可让集群根据需要进行扩展,从而降低资源成本,在流量较低时进行缩减,并通过向上扩展以确保在资源需求较高时有足够的资源。
4.1.1.1. 启用自动扩展
要使用 Red Hat Advanced Cluster Management 控制台在
MachinePool
资源上启用自动扩展,请完成以下步骤:- 在 Red Hat Advanced Cluster Management 导航中,选择 Infrastructure > Clusters。
- 点击目标集群的名称查看集群的详情。
- 选择 Machine pool 选项卡来查看机器池信息。
- 在 machine pool 页中,从目标机器池的 Options 菜单中选择 Enable autoscale。
- 选择机器设置副本的最小和最大数量。计算机集副本直接映射到集群中的节点。
单击 Scale 以提交更改。
更改可能需要几分钟时间才可以在控制台中反映出来。您可以通过单击 Machine pools 中的通知中的 View machines 来查看扩展操作的状态。
要使用命令行在
MachinePool
资源上启用自动扩展,请完成以下步骤:输入以下命令查看您的机器池列表:
oc get machinepools -n <managed-cluster-namespace>
将
managed-cluster-namespace
替换为目标受管集群的命名空间。输入以下命令为机器池编辑 YAML 文件:
oc edit machinepool <name-of-MachinePool-resource> -n <namespace-of-managed-cluster>
将
name-of-MachinePool-resource
替换为MachinePool
资源的名称。将
namespace-of-managed-cluster
替换为受管集群的命名空间的名称。-
从 YAML 文件删除
spec.replicas
字段。 -
在资源 YAML 中添加
spec.autoscaling.minReplicas
设置和spec.autoscaling.maxReplicas
项。 -
将最小副本数添加到
minReplicas
设置。 -
将最大副本数添加到
maxReplicas
设置中。 - 保存文件以提交更改。
为机器池启用自动扩展。
4.1.1.2. 禁用自动扩展
您可以使用控制台或命令行禁用自动扩展。
要使用 Red Hat Advanced Cluster Management 控制台禁用自动扩展,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management 导航中,选择 Infrastructure > Clusters。
- 点击目标集群的名称查看集群的详情。
- 选择 Machine pool 选项卡来查看机器池信息。
- 在 machine pool 页面中,从目标机器池的 Options 菜单中选择 Disable autoscale。
- 选择您想要的机器集副本数量。机器集副本直接与集群中的节点映射。
- 单击 Scale 以提交更改。在控制台中显示可能需要几分钟时间。
- 在 Machine pool 选项卡中的通知中单击 View machine 以查看扩展的状态。
要使用命令行禁用自动扩展,请完成以下步骤:
输入以下命令查看您的机器池列表:
oc get machinepools -n <managed-cluster-namespace>
将
managed-cluster-namespace
替换为目标受管集群的命名空间。输入以下命令为机器池编辑 YAML 文件:
oc edit machinepool <name-of-MachinePool-resource> -n <namespace-of-managed-cluster>
将
name-of-MachinePool-resource
替换为MachinePool
资源的名称。将
namespace-of-managed-cluster
替换为受管集群的命名空间的名称。-
从 YAML 文件中删除
spec.autoscaling
字段。 -
将
spec.replicas
字段添加到资源 YAML。 -
将副本数添加到
replicas
设置中。 - 保存文件以提交更改。
禁用自动扩展。
4.1.2. 手动扩展集群
如果您不想启用集群自动扩展,可以使用 Red Hat Advanced Cluster Management 控制台或命令行更改您希望集群维护的静态副本数。这有助于根据需要增加或缩小大小。
4.1.2.1. 使用控制台手动扩展集群
要使用 Red Hat Advanced Cluster Management 控制台扩展 MachinePool
资源,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management 导航中,选择 Infrastructure > Clusters。
- 点击目标集群的名称查看集群的详情。
选择 Machine pool 选项卡来查看机器池信息。
注: 如果 Autoscale 字段中的值是
Enabled
,您必须首先通过完成禁用自动扩展中的步骤来禁用自动扩展功能,然后再继续。- 从机器池的 Options 菜单中,选择 Scale 机器池。
- 调整机器设置副本数量,以扩展计算机池。
- 选择 Scale 以实施更改。
4.1.2.2. 使用命令行手动扩展集群
要使用命令行扩展 MachinePool
资源,请完成以下步骤:
输入以下命令查看您的机器池列表:
oc get machinepools -n <managed-cluster-namespace>
将
managed-cluster-namespace
替换为目标受管集群的命名空间。输入以下命令为机器池编辑 YAML 文件:
oc edit machinepool <name-of-MachinePool-resource> -n <namespace-of-managed-cluster>
将
name-of-MachinePool-resource
替换为MachinePool
资源的名称。将
namespace-of-managed-cluster
替换为受管集群的命名空间的名称。-
将 YAML 中的
spec.replicas
配置更新为副本数。 - 保存文件以提交更改。
集群使用新的大小设置。
4.2. 扩展导入的受管集群
导入的受管集群没有与 Red Hat Advanced Cluster Management 创建的集群相同的资源。因此,扩展集群的步骤有所不同。供应商的文档包含有关如何为导入集群扩展集群的信息。
请参阅以下列表中列出的每个可用供应商的推荐设置,但也请参阅文档的相关内容以了解更具体的信息:
4.2.1. OpenShift Container Platform 集群
请参阅适用于您使用版本的 OpenShift Container Platform 文档中的推荐的集群扩展实践和手动扩展 MachineSet。
4.2.2. Amazon Elastic Kubernetes Services
如果要更改您导入的 Amazon EKS 集群的节点数量,请参阅集群自动扩展以了解有关扩展集群的信息。
4.2.3. Google Kubernetes Engine
如果要更改您导入的 Google Kubernetes Engine 集群的节点数量,请参阅调整集群大小以了解有关扩展集群的信息。
4.2.4. Microsoft Azure Kubernetes Service
如果要更改您导入的 Azure Kubernetes Services 集群的节点数量,请参阅扩展集群以了解有关扩展集群的信息。
4.2.5. VMware vSphere
如果要更改您导入的 VMware vSphere 集群的节点数量,请参阅 Edit cluster 设置以了解有关扩展集群的信息。
4.2.6. Red Hat OpenStack Platform
如果要更改您导入的 Red Hat OpenStack Platform 集群的节点数量,请参阅自动扩展实例以了解有关扩展集群的信息。
4.2.7. 裸机集群
如果要更改您导入的裸机集群的节点数量,请参阅扩展集群以了解有关扩展集群的信息。
注:只有 hub 集群是 OpenShift Container Platform 版本 4.6 或更高版本时才支持裸机集群。
4.2.8. IBM Kubernetes Service
如果要更改您导入的 IBM Kubernetes Service 集群的节点数量,请参阅在集群中添加 worker 节点和区以了解有关扩展集群的信息。
第 5 章 发行镜像
当使用 Red Hat Advanced Cluster Management for Kubernetes 在供应商处创建集群时,您必须指定用于新集群的发行镜像。发行镜像指定使用哪个版本的 Red Hat OpenShift Container Platform 来构建集群。
引用发行镜像的文件是在 acm-hive-openshift-releases
GitHub 仓库中维护的 yaml
文件。Red Hat Advanced Cluster Management 使用这些文件在控制台中创建可用发行镜像的列表。这包括 OpenShift Container Platform 的最新快速频道镜像。控制台仅显示三个 OpenShift Container Platform 最新版本的最新发行镜像。例如,您可能在控制台选项中看到以下发行镜像:
- quay.io/openshift-release-dev/ocp-release:4.6.23-x86_64
- quay.io/openshift-release-dev/ocp-release:4.7.4-x86_64
- quay.io/openshift-release-dev/ocp-release:4.8.0-x86_64
存储了额外的发行镜像,但无法在控制台中看到。要查看所有可用发行镜像,请在 CLI 中运行 kubectl get clusterimageset
。控制台中只有最新版本可促进创建带有最新发行镜像的集群。在某些情况下,您可能需要创建特定版本的集群,因此还会继续提供老版本。Red Hat Advanced Cluster Management 使用这些文件在控制台中创建可用发行镜像的列表。这包括 OpenShift Container Platform 的最新快速频道镜像。仓库中包含 clusterImageSets
目录和 subscription
目录,它们是您使用发行镜像时使用的目录。
仓库中包含 clusterImageSets
目录和 subscription
目录,它们是您使用发行镜像时使用的目录。
clusterImageSets
目录包含以下目录:
- Fast - 包含引用每个受支持 OpenShift Container Platform 版本的最新发行镜像版本的文件此目录中的发行镜像经过测试、验证和支持。
- Releases - 包含引用每个 OpenShift Container Platform 版本(table、fast 和 candidate 频道)的所有发行镜像的文件 请注意:这些版本并没有经过测试并确定是稳定的。
- Stable - 包含引用每个受支持 OpenShift Container Platform 版本的最新两个稳定发行镜像版本的文件此目录中的发行镜像经过测试、验证和支持。
您可以通过三种方式对自己的 ClusterImageSet
进行策展:
这三种方法中的第一个步骤都是禁用包含执行最新快速频道镜像的自动更新的订阅。使用 multiclusterhub 资源中的安装程序参数可以禁用对最新的 fast ClusterImageSet
的自动策展。通过切换 spec.disableUpdateClusterImageSets
参数为 true
和 false
,Red Hat Advanced Cluster Management 安装的订阅会相应地被启用和禁用。如果要策展自己的镜像,请将 spec.disableUpdateClusterImageSets
设置为 true
,以禁用订阅。
选项 1:指定要在控制台创建集群时使用的特定 ClusterImageSet
的镜像引用。您指定的每个新条目都会保留,并可用于将来的所有集群置备。一个示例为:quay.io/openshift-release-dev/ocp-release:4.6.8-x86_64
.
选项 2:手动创建,应用来自 acm-hive-openshift-releases
GitHub 仓库的 ClusterImageSets
YAML 文件。
选项 3:遵循 acm-hive-openshift-releases
GitHub 仓库中的 README.md
,启用对来自 fork 的 GitHub 仓库的 ClusterImageSets
的自动更新。
subscription
目录包含指定从哪里拉取发行镜像列表的文件。Red Hat Advanced Cluster Management 的默认发行镜像位于 Quay.io 目录中。镜像被 acm-hive-openshift-releases GitHub 仓库中的 文件用于版本 2.3 引用。
5.1. 同步可用发行镜像
版本镜像会频繁更新,因此可能需要同步发行镜像列表,以确保可以选择最新的可用版本。发行镜像可在 2.3 的 acm-hive-openshift-releases GitHub 仓库中找到。
发行镜像有三个级别的稳定性:
类别 | 描述 |
stable | 已确认用于正确安装和构建集群的完整测试镜像。 |
fast | 部分进行了测试,但稳定性可能低于稳定版本。 |
candidate | 最新镜像,但未经测试。可能会有一些程序错误。 |
完成以下步骤以刷新列表:
如果启用了安装程序管理的
acm-hive-openshift-releases
订阅,请通过将disableUpdateClusterImageSets
设置为true
来禁用订阅。您可以输入以下命令删除订阅:oc delete -f subscription/subscription-stable
- 为版本 2.3 克隆 acm-hive-openshift-releases GitHub 仓库。
输入以下命令连接到稳定版本镜像并同步您的 Red Hat Advanced Cluster Management for Kubernetes hub 集群:
make subscribe-stable
注意:您只能在使用 Linux 或者 MacOS 操作系统时运行这个
make
命令。大约一分钟后,最新的
stable
镜像列表将可用。要同步并显示快速发行镜像,请输入以下命令:
make subscribe-fast
注意:您只能在使用 Linux 或者 MacOS 操作系统时运行这个
make
命令。运行此命令后,当前可用的镜像会在约一分钟内在可用的
stable
和fast
发行镜像列表中出现。要同步并显示
candidate
发行镜像,请输入以下命令:make subscribe-candidate
注意:您只能在使用 Linux 或者 MacOS 操作系统时运行这个
make
命令。运行该命令后,当前可用的镜像会更新可用的
stable
、fast
和candidate
发行镜像列表。
- 在创建集群时,查看 Red Hat Advanced Cluster Management 控制台中当前可用发行镜像的列表。
使用以下格式输入命令来从这些频道中取消订阅以停止查看更新:
oc delete -f subscription/subscription-stable
5.1.1. 连接时维护自定义的发行镜像列表
您可能希望确保所有集群都使用同一发行镜像。为简化操作,您可以创建自己的自定义列表,在其中包含创建集群时可用的发行镜像。完成以下步骤以管理可用发行镜像:
-
如果启用了安装程序管理的
acm-hive-openshift-releases
订阅,请通过将disableUpdateClusterImageSets
设置为true
来禁用它。 - 为版本 2.3 对 acm-hive-openshift-releases GitHub 仓库 进行分叉。
通过将
spec: pathname
更改为访问已分叉的仓库的 GitHub 名称,而不是stolostron
,更新./subscribe/channel.yaml
文件。此步骤指定 hub 集群在哪里检索发行镜像。您更新的内容应类似以下示例:spec: type: GitHub pathname: https://github.com/<forked_content>/acm-hive-openshift-releases.git
将
forked_content
替换为已分叉仓库的路径。- 使用 Red Hat Advanced Cluster Management for Kubernetes 控制台创建集群时,需要为镜像添加 YAML 文件,将其添加到 ./clusterImageSets/stable/ 或 ./clusterImageSets/fast/* 目录。*提示: 您可以将更改合并到已分叉的仓库,并从主仓库检索可用的 YAML 文件。
- 将更改提交并合并到您的已分叉仓库。
在克隆了
acm-hive-openshift-releases
仓库后,使用以下命令来更新 stable 镜像以同步 stable 发行镜像列表:make subscribe-stable
注意:您只能在使用 Linux 或者 MacOS 操作系统时运行这个
make
命令。运行此命令后,可用稳定镜像列表会在约一分钟内更新为当前可用镜像。
默认情况下,仅会列出稳定镜像。要同步并显示快速发行镜像,请输入以下命令:
make subscribe-fast
注意:您只能在使用 Linux 或者 MacOS 操作系统时运行这个
make
命令。运行此命令后,可用快速镜像列表会在约 1 分钟内更新为当前可用镜像。
默认情况下,Red Hat Advanced Cluster Management 会预加载几个 ClusterImageSets。您可以使用以下命令列出可用内容并删除默认值。
oc get clusterImageSets oc delete clusterImageSet <clusterImageSet_NAME>
注: 如果您还没有通过将
disableUpdateClusterImageSets
的值设置为true
来禁用安装程序管理的ClusterImageSet
的自动更新,则您删除的任何镜像都会被自动重新创建。- 在创建集群时,查看 Red Hat Advanced Cluster Management 控制台中当前可用发行镜像的列表。
5.1.2. 断开连接时维护自定义的发行镜像列表
在某些情况下,当节点集群没有互联网连接时,您需要维护一个自定义的发行镜像列表。您可以创建自己的自定义列表,在其中包含创建集群时可用的发行镜像。完成以下步骤以在断开连接的情况下管理可用发行镜像:
- 在连接的系统中,使用可用于版本 2.3 的集群镜像集导航到 acm-hive-openshift-releases GitHub 仓库。
-
将
clusterImageSets
目录复制到可以访问断开连接的 Red Hat Advanced Cluster Management for Kubernetes hub 集群的系统中。 -
使用集群镜像集添加受管集群和断开连接的存储库之间的映射。有关使用
ImageContentSourcePolicy
对象的信息,请参阅配置 镜像 (mirror) 以完成映射。 -
使用 Red Hat Advanced Cluster Management 控制台手动添加
clusterImageSet
YAML 内容,为在创建集群时可用的镜像添加 YAML 文件。 修改 OpenShift Container Platform 发行镜像的
clusterImageSet
YAML 文件,以引用存储镜像的正确离线存储库。您的更新应类似以下示例:apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: name: img4.4.0-rc.6-x86-64 spec: releaseImage: IMAGE_REGISTRY_IPADDRESS_or_DNSNAME/REPO_PATH/ocp-release:4.4.0-rc.6-x86_64
确保在 YAML 文件中引用的离线镜像 registry 中载入镜像。
通过为每个
YAML
文件输入以下命令来创建每个 clusterImageSets:oc create -f <clusterImageSet_FILE>
将
clusterImageSet_FILE
替换为集群镜像集文件的名称。例如:oc create -f img4.9.9-x86_64.yaml
在为您要添加的每个资源运行此命令后,可用发行镜像列表将变为可用。
- 另外,您还可以将镜像 URL 直接粘贴到 Red Hat Advanced Cluster Management 的创建集群控制台中。如果镜像 URL 不存在,添加镜像 URL 会创建新的 clusterImageSet。
- 在创建集群时,查看 Red Hat Advanced Cluster Management 控制台中当前可用发行镜像的列表。
第 6 章 创建和修改裸机资产
裸机资产是您配置为运行 OpenShift Container Platform 集群的虚拟或物理服务器。Red Hat Advanced Cluster Management for Kubernetes 会连接到管理员创建的裸机资产。然后您可以在受管集群中部署裸机资产。
hub 集群清单控制器定义一个名为 BareMetalAsset
的自定义资源定义 (CRD),其中包含裸机资产清单记录。在置备受管集群时,清单控制器会将 BareMetalAsset
清单记录与受管集群中对应的 BareMetalHost
资源协调。
Red Hat Advanced Cluster Management 使用 BareMetalAsset
CR 根据配置管理数据库 (CMDB) 或类似的系统中输入的记录置备集群硬件。外部工具或自动化轮询 CMDB,并使用 Red Hat Advanced Cluster Management API 在 hub 集群中创建对应的 BareMetalAsset
和对应的 Secret
资源,以便后续在受管集群中部署。
使用以下步骤为由 Red Hat Advanced Cluster Management 管理的集群创建和管理裸机资产。
6.1. 先决条件
创建裸机资产前需要满足以下先决条件:
- 在 OpenShift Container Platform 版本 4.6 或更高版本上部署了 Red Hat Advanced Cluster Management hub 集群。
- 访问 Red Hat Advanced Cluster Management hub 集群以连接到裸机资产。
配置了裸机资产,以及登录凭证(包含登录和管理该资产所需的权限)。
注:裸机资产凭证包括您的管理员提供的资产的以下项:用户名密码 Baseboard Management Controller (BMC) Address 引导 NIC MAC 地址
6.2. 使用控制台创建裸机资产
要使用 Red Hat Advanced Cluster Management for Kubernetes 控制台创建裸机资产,请完成以下步骤:
- 通过导航菜单进入 Infrastructure > Bare metal assets。
- 在 Bare metal asset 页面中,点击 Create bare metal asset。
- 为资产输入一个名称,用于在创建集群时标识它。
输入要用来创建裸机资源的命名空间。
注: 裸机资产、受管裸机集群及其相关 secret 必须位于同一命名空间中。
有权访问此命名空间的用户可以在创建集群时将此资产与集群相关联。
输入 BMC 地址。这是实现与主机通信的控制器。支持以下协议:
- IPMI,如需更多信息,请参阅 IPMI 2.0 规格。
- iDRAC,如需更多信息,请参阅Dell Remote Access Controller 9(iDRAC9)的支持。
- iRMC,如需更多信息,请参阅数据手册:FUJITSU Software ServerView Suite 集成远程管理控制器 - iRMC S5。
- Redfish,如需更多信息,请参阅 Redfish 规格。
- 为裸机资产输入用户名和密码。
- 为裸机资产添加引导 NIC MAC 地址。这是主机的联网 NIC 的 MAC 地址,用于在裸机资产上置备主机。
您可以继续在裸机上创建集群。
6.3. 使用 CLI 创建裸机资产
使用 BareMetalAsset
CR 为集群中的特定命名空间创建裸机资产。每个 BareMetalAsset
都有一个对应的 Secret
,其中包含 Baseboard Management Controller (BMC) 凭证以及同一命名空间中的 secret 名称。
6.3.1. 先决条件
- 在 hub 集群中安装 Red Hat Advanced Cluster Management for Kubernetes。
- 安装 Red Hat OpenShift CLI (oc)。
-
以具有
cluster-admin
特权的用户身份登录。
6.3.2. 创建裸机资产
- 在您的环境中安装并置备裸机资产。
- 打开 BMC,并记录硬件的 IPMI 或 Redfish BMC 地址和 MAC 地址。
创建以下
BareMetalAsset
和Secret
CR,并将文件保存为baremetalasset-cr.yaml
:apiVersion: inventory.open-cluster-management.io/v1alpha1 kind: BareMetalAsset metadata: name: <baremetalasset-machine> namespace: <baremetalasset-namespace> spec: bmc: address: ipmi://<out_of_band_ip>:<port> credentialsName: baremetalasset-machine-secret bootMACAddress: "00:1B:44:11:3A:B7" hardwareProfile: "hardwareProfile" role: "<role>" clusterName: "<cluster name>" --- apiVersion: v1 kind: Secret metadata: name: baremetalasset-machine-secret type: Opaque data: username: <username> password: <password>
-
使用裸机资产所在机器的名称替换
baremetalasset-machine
。创建后,受管集群中的BareMetalHost
的名称与 hub 集群上对应的BareMetalAsset
的名称相同。BareMetalHost
名称应始终与对应的BareMetalAsset
名称匹配。 -
使用创建裸机资产的集群命名空间替换
baremetalasset-namespace
。 -
将
out_of_band_ip
和port
替换为裸机资产的地址和端口。对于 Redfish 寻址,请使用以下地址格式:redfish://<out-band-ip>/redfish/v1/Systems/1
。 -
根据计算机角色类型,将
role
替换为worker
、master
或保留为空。role
设置用于将裸机资产与集群中的特定机器角色类型匹配。BareMetalAsset
资源不应用于指定机器角色类型来填充另一个角色。role
角色值被用作键为inventory.open-cluster-management.io/role
的标签的值。这可让集群管理应用程序或用户查询用于特定角色的清单。 -
使用集群的名称替换
cluster_name
,集群管理应用程序或用户使用该名称查询与特定集群关联的清单。保留这个值为空以创建裸机资产,而不将其添加到集群部署中。 -
使用您的 secret 的用户名替换
username
。 -
将
password
替换为您的 secret 的密码。
-
使用裸机资产所在机器的名称替换
运行以下命令来创建
BareMetalAsset
CR:$ oc create -f baremetalasset-cr.yaml
检查
BareMetalAsset
是否已成功创建:$ oc get baremetalassets -A
输出示例
NAMESPACE NAME AGE ocp-example-bm baremetalasset-machine 2m ocp-example-bm csv-f24-h27-000-r630-master-1-1 4d21h
6.4. 使用控制台批量导入裸机资产
您可以使用 CSV 格式列表使用 Red Hat Advanced Cluster Management for Kubernetes 控制台批量导入裸机资产。
6.4.1. 先决条件
- 在一个管理一个或多个 spoke 集群的 hub 集群上安装 Red Hat Advanced Cluster Management。
- 安装 OpenShift Container Platform CLI(oc)。
-
以具有
cluster-admin
特权的用户身份登录。
6.4.2. 导入资产
要导入一组裸机资产,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management 控制台中,在导航菜单中选择 Cluster management > Bare metal asset。
选择 Import asset,并导入包含裸机资产数据的 CSV 文件。CSV 文件必须具有以下标题列:
hostName, hostNamespace, bmcAddress, macAddress, role (optional), username, password
6.5. 修改裸机资产
如果您需要修改裸机资产的设置,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management for Kubernetes 控制台导航中,选择: Infrastructure > Bare metal assets。
- 选择表中您要修改的资产的选项菜单。
- 选择 Edit asset。
6.6. 删除裸机资产
当裸机资产不再用于任何集群时,您可以将其从可用的裸机资产列表中删除。删除未使用的资产既可以简化您的可用资产列表,又可以防止意外选择该资产。
要在控制台中删除裸机资产,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management for Kubernetes 控制台导航中,选择: Infrastructure > Bare metal assets。
- 选择表中要删除的资产的选项菜单。
- 选择 Delete asset。
6.7. 使用 REST API 创建裸机资产
您可以使用 OpenShift Container Platform REST API 管理要在 Red Hat Advanced Cluster Management 集群中使用的裸机资产。当您有单独的 CMDB 应用程序或数据库来管理环境中的裸机资产时,这很有用。
6.7.1. 先决条件
- 在 hub 集群中安装 Red Hat Advanced Cluster Management for Kubernetes。
- 安装 OpenShift Container Platform CLI(oc)。
-
以具有
cluster-admin
特权的用户身份登录。
6.7.2. 创建裸机资产
要使用 REST API 创建裸机资产,请执行以下操作:
获取 hub 集群的登录令牌,并通过命令行登录集群。例如:
$ oc login --token=<login_token> --server=https://<hub_cluster_api_url>:6443
使用您要添加到集群的裸机资产详情修改以下 curl 命令,并运行命令。
$ curl --location --request POST '<hub_cluster_api_url>:6443/apis/inventory.open-cluster-management.io/v1alpha1/namespaces/<bare_metal_asset_namespace>/baremetalassets?fieldManager=kubectl-create' \ --header 'Authorization: Bearer <login_token>' \ --header 'Content-Type: application/json' \ --data-raw '{ "apiVersion": "inventory.open-cluster-management.io/v1alpha1", "kind": "BareMetalAsset", "metadata": { "name": "<baremetalasset_name>", "namespace": "<bare_metal_asset_namespace>" }, "spec": { "bmc": { "address": "ipmi://<ipmi_address>", "credentialsName": "<credentials-secret>" }, "bootMACAddress": "<boot_mac_address>", "clusterName": "<cluster_name>", "hardwareProfile": "hardwareProfile", "role": "worker" } }'
-
Replacebaremetalasset-name
使用裸机资产的名称。创建后,受管集群中的BareMetalHost
的名称与 hub 集群上对应的BareMetalAsset
的名称相同。BareMetalHost
名称应始终与对应的BareMetalAsset
名称匹配。 -
使用创建裸机资产的集群命名空间替换
baremetalasset-namespace
。 -
将
out_of_band_ip
和port
替换为裸机资产的地址和端口。对于 Redfish 寻址,请使用以下地址格式:redfish://<out-band-ip>/redfish/v1/Systems/1
。 -
根据计算机角色类型,将
role
替换为worker
、master
或保留为空。role
设置用于将裸机资产与集群中的特定机器角色类型匹配。BareMetalAsset
资源不应用于指定机器角色类型来填充另一个角色。role
角色值被用作键为inventory.open-cluster-management.io/role
的标签的值。这可让集群管理应用程序或用户查询用于特定角色的清单。 使用集群的名称替换
cluster_name
,集群管理应用程序或用户使用该名称查询与特定集群关联的清单。保留这个值为空以创建裸机资产,而不将其添加到集群部署中。注:对于上一个 curl 命令,假设 API 服务器通过 HTTPS 提供,并可以安全地访问。在开发或测试环境中,您可以传递
--insecure
参数。
-
提示: 您可以将 --v=9
附加到 oc
命令来查看生成的操作的原始输出。这对于确定 oc
命令的 REST API 路由非常有用。
第 7 章 创建集群
了解如何使用 Red Hat Advanced Cluster Management for Kubernetes 跨云供应商创建 Red Hat OpenShift Container Platform 集群。
7.1. 在集群创建过程中配置额外清单
您可以在创建集群的过程中配置额外的 Kubernetes 资源清单。如果您需要为配置网络或设置负载均衡器等场景配置额外清单,这可以提供帮助。
在创建集群前,您需要添加对 ClusterDeployment
资源的引用,该资源指定包含其他资源清单的 ConfigMap
。
注: ClusterDeployment
资源和 ConfigMap
必须位于同一命名空间中。以下示例演示了您的内容看起来如何。
带有资源清单的 ConfigMap
包含具有另一个
ConfigMap
资源的清单的ConfigMap
。资源清单ConfigMap
可以包含多个键,并在data.<resource_name>\.yaml
模式中添加资源配置。kind: ConfigMap apiVersion: v1 metadata: name: <my-baremetal-cluster-install-manifests> namespace: <mynamespace> data: 99_metal3-config.yaml: | kind: ConfigMap apiVersion: v1 metadata: name: metal3-config namespace: openshift-machine-api data: http_port: "6180" provisioning_interface: "enp1s0" provisioning_ip: "172.00.0.3/24" dhcp_range: "172.00.0.10,172.00.0.100" deploy_kernel_url: "http://172.00.0.3:6180/images/ironic-python-agent.kernel" deploy_ramdisk_url: "http://172.00.0.3:6180/images/ironic-python-agent.initramfs" ironic_endpoint: "http://172.00.0.3:6385/v1/" ironic_inspector_endpoint: "http://172.00.0.3:5150/v1/" cache_url: "http://192.168.111.1/images" rhcos_image_url: "https://releases-art-rhcos.svc.ci.openshift.org/art/storage/releases/rhcos-4.3/43.81.201911192044.0/x86_64/rhcos-43.81.201911192044.0-openstack.x86_64.qcow2.gz"
使用引用的资源清单
ConfigMap
的 ClusterDeployment资源清单
ConfigMap
在spec.provisioning.manifestsConfigMapRef
下引用。apiVersion: hive.openshift.io/v1 kind: ClusterDeployment metadata: name: <my-baremetal-cluster> namespace: <mynamespace> annotations: hive.openshift.io/try-install-once: "true" spec: baseDomain: test.example.com clusterName: <my-baremetal-cluster> controlPlaneConfig: servingCertificates: {} platform: baremetal: libvirtSSHPrivateKeySecretRef: name: provisioning-host-ssh-private-key provisioning: installConfigSecretRef: name: <my-baremetal-cluster-install-config> sshPrivateKeySecretRef: name: <my-baremetal-hosts-ssh-private-key> manifestsConfigMapRef: name: <my-baremetal-cluster-install-manifests> imageSetRef: name: <my-clusterimageset> sshKnownHosts: - "10.1.8.90 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXvVVVKUYVkuyvkuygkuyTCYTytfkufTYAAAAIbmlzdHAyNTYAAABBBKWjJRzeUVuZs4yxSy4eu45xiANFIIbwE3e1aPzGD58x/NX7Yf+S8eFKq4RrsfSaK2hVJyJjvVIhUsU9z2sBJP8=" pullSecretRef: name: <my-baremetal-cluster-pull-secret>
7.2. 在 Amazon Web Services 上创建集群
您可以使用 Red Hat Advanced Cluster Management for Kubernetes 控制台在 Amazon Web Services (AWS) 上创建一个 Red Hat OpenShift Container Platform 集群。
7.2.1. 先决条件
在 AWS 上创建集群前必须满足以下先决条件:
- 已部署 Red Hat Advanced Cluster Management for Kubernetes hub 集群
- 可通过互联网访问 Red Hat Advanced Cluster Management for Kubernetes hub 集群,以便它在 Amazon Web Services 上创建 Kubernetes 集群
- AWS 证书。如需更多信息,请参阅为 Amazon Web Services 创建凭证。
- 在 AWS 中配置了域。有关如何配置域的说明,请参阅配置 AWS 帐户。
- Amazon Web Services (AWS) 登录凭证,其中包括用户名、密码、访问密钥 ID 和 secret 访问密钥。请参阅了解和获取您的安全凭证。
- OpenShift Container Platform 镜像 pull secret。请参阅使用镜像 pull secret。
注:如果更改了云供应商访问密钥,则必须手动更新置备的集群访问密钥。如需更多信息,请参阅已知问题, 不支持置备的集群的自动 secret 更新。
7.2.2. 使用控制台创建集群
要从 Red Hat Advanced Cluster Management for Kubernetes 控制台创建集群,请完成以下步骤:
- 通过导航菜单进入 Infrastructure > Clusters。
在 Clusters 页面上,点 Create cluster。
注: 此过程用于创建集群。如果您有一个要导入的现有集群,请参阅将目标受管集群导入到 hub 集群以了解这些步骤。
- 为基础架构供应商选择 Kubernetes 发行版和 Amazon Web Services。剩余的步骤取决于您的选择。
- 从列表上的可用凭证中选择您的基础架构供应商凭证。如果您还没有配置,或想要配置一个新凭证,请选择 Add credential。有关创建凭证的更多信息,请参阅为 Amazon Web Services 创建凭证。
添加集群详情:
为集群输入一个名称。此名称用于集群的主机名。
提示: 您可以通过将
YAML
开关设置为 ON 来在控制台中输入信息时查看 yaml 内容更新。-
如果要将其添加到现有集群集中,请指定 Cluster set。如果您在创建集群时没有
cluster-admin
权限,则必须选择一个具有clusterset-admin
权限来创建集群的集群集。如果没有选择集群集,集群创建会失败。如果没有要选择的集群设置选项,请联系集群管理员,为集群集提供clusterset-admin
权限。 - 指定您为 AWS 帐户配置的 Base DNS 域信息。如果已有与所选凭证关联的基域,则该值会在那个字段中填充。您可以修改它的值来覆盖它。如需更多信息,请参阅配置 AWS 帐户。此名称用于集群的主机名。
- 指定您要用于集群的发行镜像。这将标识用于创建集群的 OpenShift Container Platform 镜像的版本。如果要使用的版本可用,您可以从镜像列表中选择镜像。如果您要使用的镜像不是标准镜像,您可以输入您要使用的镜像的 url。有关发行镜像的更多信息,请参阅发行镜像。
- 添加您要与集群关联的附加标签。这些标签有助于识别集群并限制搜索结果。
输入 master 池的详细信息。master 池中为您的集群创建三个 master 节点。Master 节点共享集群活动的管理。可选信息包括以下字段:
- 指定您要在其中运行 master 池的一个或多个 Zones(区域)。您可以选择区域中的多个区以实现更为分散的 master 节点组。距离更近的区域可能会提供更快的性能,但距离更远的区域可能更为分散。
- 为您的 master 节点指定实例类型。您可以在实例创建后更改实例的类型和大小。默认值为 mx5.xlarge - 4 vCPU, 16 GiB RAM - General Purpose。
- 输入 Root 存储分配。默认值是 root 存储为 100 GiB。
输入 worker 池的详细信息。您可以在 worker 池中创建零个或多个 worker 节点,以运行集群的容器工作负载。它们可以位于单个 worker 池中,也可以分布在多个 worker 池中。如果指定了零个 worker 节点,master 节点也会作为 worker 节点工作。可选信息包括以下字段:
- 为您的 worker 池添加名称。
- 指定您要运行 worker 池的一个或多个 Zone(区域)。您可以为更加分散的节点组群选择区域中的多个区。距离更近的区域可能会提供更快的性能,但距离更远的区域可能更为分散。
- 为 worker 池指定一个实例类型。您可以在实例创建后更改实例的类型和大小。默认值为 mx5.xlarge - 4 vCPU, 16 GiB RAM - General Purpose。
- 输入 worker 池的节点数。定义 worker 池时需要此设置。
输入 Root 存储分配。默认值是 root 存储为 100 GiB。定义 worker 池时需要此设置。
您可以点击 Add worker 池来定义额外的 worker 池。
输入集群的网络详情。此信息是必需的。使用 IPv6 需要多个网络。
-
选择您的网络类型。默认值为
OpenShiftSDN
。OVNKubernetes 是使用 IPv6 的必要设置。 -
选择 Cluster network CIDR。这是可用于 pod IP 地址的 IP 地址的数量和列表。这个块不能与另一个网络块重叠。默认值为
10.128.0.0/14
。 -
指定网络主机前缀,该前缀为每个节点设置子网前缀长度。默认值为
23
。 -
指定 Service network CIDR,它为服务提供 IP 地址块。这个块不能与另一个网络块重叠。默认值为
172.30.0.0/16
。 指定 Machine CIDR,它提供 OpenShift Container Platform 主机使用的 IP 地址块。这个块不能与另一个网络块重叠。默认值为
10.0.0.0/16
。您可以通过点 Add network 来添加额外网络。如果您使用的是 IPv6 地址,您必须有多个网络。
-
选择您的网络类型。默认值为
添加可选的 Ansible Automation Template,以便在集群安装或升级之前或之后运行。
您可以点击 Add Automation template 来创建模板。
检查您的信息并选择性地进行自定义。
-
点 YAML 滑块到 On 来查看面板中的
install-config.yaml
文件内容。 - 使用自定义设置编辑 YAML 文件。
-
点 YAML 滑块到 On 来查看面板中的
选择 Create 来创建集群。
注: 您不必运行
kubectl
命令,它为导入集群提供集群详情。当您创建集群时,它由 Red Hat Advanced Cluster Management 管理自动配置。
7.2.3. 访问集群
要访问由 Red Hat Advanced Cluster Management for Kubernetes 管理的集群,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management 导航菜单中导航到 Infrastructure > Clusters。
- 选择您创建的或想要访问的集群的名称。此时会显示集群详情。
- 选择 Reveal credentials 来查看集群的用户名和密码。记下这些值以便在登录到集群时使用。
- 选择 Console URL 以链接到集群。
- 使用在第 3 步中找到的用户 ID 和密码登录集群。
7.3. 在 Microsoft Azure 上创建集群
您可以使用 Red Hat Advanced Cluster Management for Kubernetes 控制台在 Microsoft Azure 上部署一个 Red Hat OpenShift Container Platform 集群。
7.3.1. 先决条件
在 Azure 上创建集群前必须满足以下先决条件:
- 已部署 Red Hat Advanced Cluster Management for Kubernetes hub 集群
- 可通过互联网访问 Red Hat Advanced Cluster Management for Kubernetes hub 集群,以便它在 Azure 上创建 Kubernetes 集群
- Azure 凭证。如需更多信息,请参阅为 Microsoft Azure 创建凭证。
- 在 Azure 中配置了域。有关如何配置域的说明,请参阅为 Azure 云服务配置自定义域名。
- Azure 登录凭证,其中包括用户名和密码。请参阅 Microsoft Azure Portal。
-
Azure 服务主体,其中包括
clientId
、clientSecret
和tenantId
。请参阅 azure.microsoft.com。 - OpenShift Container Platform 镜像 pull secret。请参阅使用镜像 pull secret。
注:如果更改了云供应商访问密钥,则必须手动更新置备的集群访问密钥。如需更多信息,请参阅已知问题, 不支持置备的集群的自动 secret 更新。
7.3.2. 使用控制台创建集群
要从 Red Hat Advanced Cluster Management for Kubernetes 控制台创建集群,请完成以下步骤:
- 通过导航菜单进入 Infrastructure > Clusters。
在 Clusters 页面上,点 Create cluster。
注: 此过程用于创建集群。如果您有一个要导入的现有集群,请参阅将目标受管集群导入到 hub 集群以了解这些步骤。
- 为基础架构供应商选择 Kubernetes 发行版和 Microsoft Azure。剩余的步骤取决于您的选择。
- 从列表上的可用凭证中选择您的基础架构供应商凭证。如果您还没有配置,或想要配置一个新凭证,请选择 Add credential。有关创建凭证的更多信息,请参阅为 Microsoft Azure 创建凭证。
添加集群详情:
为集群输入一个名称。此名称用于集群的主机名。
提示: 您可以通过将
YAML
开关设置为 ON 来在控制台中输入信息时查看 yaml 内容更新。-
如果要将其添加到现有集群集中,请指定 Cluster set。如果您在创建集群时没有
cluster-admin
权限,则必须选择一个具有clusterset-admin
权限来创建集群的集群集。如果没有选择集群集,集群创建会失败。如果没有要选择的集群设置选项,请联系集群管理员,为集群集提供clusterset-admin
权限。 - 指定您为 Azure 帐户配置的 Base DNS 域信息。如果已有与所选凭证关联的基域,则该值会在那个字段中填充。您可以修改它的值来覆盖它。如需更多信息,请参阅为 Azure 云服务配置自定义域名。此名称用于集群的主机名。
- 指定您要用于集群的发行镜像。这将标识用于创建集群的 OpenShift Container Platform 镜像的版本。如果要使用的版本可用,您可以从镜像列表中选择镜像。如果您要使用的镜像不是标准镜像,您可以输入您要使用的镜像的 URL。有关发行镜像的更多信息,请参阅发行镜像。
- 添加您要与集群关联的附加标签。这些标签有助于识别集群并限制搜索结果。
输入 master 池的详细信息。master 池中为您的集群创建三个 master 节点。Master 节点共享集群活动的管理。可选信息包括以下字段:
- 指定您要在其中运行 master 池的区域(Region)。您可以选择区域中的多个区以实现更为分散的 master 节点组。距离更近的区域可能会提供更快的性能,但距离更远的区域可能更为分散。
- 为您的 master 节点指定实例类型。您可以在实例创建后更改实例的类型和大小。默认值为 Standard_D4s_v3 - 4 vCPU, 16 GiB RAM - General Purpose。
- 输入 Root 存储分配。默认值是 root 存储为 128 GiB。
输入 worker 池的详细信息。您可以在 worker 池中创建零个或多个 worker 节点,以运行集群的容器工作负载。它们可以位于单个 worker 池中,也可以分布在多个 worker 池中。如果指定了零个 worker 节点,master 节点也会作为 worker 节点工作。可选信息包括以下字段:
- 为您的 worker 池添加名称。
- 指定您要运行 worker 池的一个或多个 Zone(区域)。您可以为更加分散的节点组群选择区域中的多个区。距离更近的区域可能会提供更快的性能,但距离更远的区域可能更为分散。
- 为 worker 池指定一个实例类型。您可以在实例创建后更改实例的类型和大小。默认值为 Standard_D2s_v3 - 2 vCPU, 8 GiB - General Purpose。
- 输入 worker 池的节点数。定义 worker 池时需要此设置。
输入 Root 存储分配。默认值是 root 存储为 128 GiB。定义 worker 池时需要此设置。
您可以点击 Add worker 池来定义额外的 worker 池。
输入集群的网络详情。此信息是必需的。使用 IPv6 需要多个网络。
-
选择您的网络类型。默认值为
OpenShiftSDN
。OVNKubernetes 是使用 IPv6 的必要设置。 -
选择 Cluster network CIDR。这是可用于 pod IP 地址的 IP 地址的数量和列表。这个块不能与另一个网络块重叠。默认值为
10.128.0.0/14
。 -
指定网络主机前缀,该前缀为每个节点设置子网前缀长度。默认值为
23
。 -
指定 Service network CIDR,它为服务提供 IP 地址块。这个块不能与另一个网络块重叠。默认值为
172.30.0.0/16
。 指定 Machine CIDR,它提供 OpenShift Container Platform 主机使用的 IP 地址块。这个块不能与另一个网络块重叠。默认值为
10.0.0.0/16
。您可以通过点 Add network 来添加额外网络。如果您使用的是 IPv6 地址,您必须有多个网络。
-
选择您的网络类型。默认值为
添加可选的 Ansible Automation Template,以便在集群安装或升级之前或之后运行。
您可以点击 Add Automation template 来创建模板。
检查您的信息并选择性地进行自定义。
-
点 YAML 滑块到 On 来查看面板中的
install-config.yaml
文件内容。 - 使用自定义设置编辑 YAML 文件。
-
点 YAML 滑块到 On 来查看面板中的
选择 Create 来创建集群。
注: 您不必运行
kubectl
命令,它为导入集群提供集群详情。当您创建集群时,它由 Red Hat Advanced Cluster Management 管理自动配置。
7.3.3. 访问集群
要访问由 Red Hat Advanced Cluster Management for Kubernetes 管理的集群,请完成以下步骤:
- 通过 Red Hat Advanced Cluster Management for Kubernetes 导航菜单进入到 Infrastructure > Clusters。
- 选择您创建的或想要访问的集群的名称。此时会显示集群详情。
- 选择 Reveal credentials 来查看集群的用户名和密码。记下这些值以便在登录到集群时使用。
- 选择 Console URL 以链接到集群。
- 使用在第 3 步中找到的用户 ID 和密码登录集群。
7.4. 在 Google Cloud Platform 上创建集群
按照步骤在 Google Cloud Platform (GCP) 上创建 Red Hat OpenShift Container Platform 集群有关 Google Cloud Platform 的更多信息,请参阅 Google Cloud Platform。
7.4.1. 先决条件
在 GCP 上创建集群前必须满足以下先决条件:
- 已部署 Red Hat Advanced Cluster Management for Kubernetes hub 集群
- 可通过互联网访问 Red Hat Advanced Cluster Management for Kubernetes hub 集群,以便它在 GCP 上创建 Kubernetes 集群
- GCP 凭证。如需更多信息,请参阅为 Google Cloud Platform 创建凭证。
- 在 GCP 中配置了域。有关如何配置域的说明,请参阅设置自定义域。
- GCP 登录凭证,其中包括用户名和密码。
- OpenShift Container Platform 镜像 pull secret。请参阅使用镜像 pull secret。
注:如果更改了云供应商访问密钥,则必须手动更新置备的集群访问密钥。如需更多信息,请参阅已知问题, 不支持置备的集群的自动 secret 更新。
7.4.2. 使用控制台创建集群
要从 Red Hat Advanced Cluster Management for Kubernetes 控制台创建集群,请完成以下步骤:
- 通过导航菜单进入 Infrastructure > Clusters。
在 Clusters 页面中,选择 Create cluster。
注: 此过程用于创建集群。如果您有一个要导入的现有集群,请参阅将目标受管集群导入到 hub 集群以了解这些步骤。
- 为基础架构供应商选择 Kubernetes 发行版本和 Google Cloud。剩余的步骤取决于您的选择。
- 从列表上的可用凭据中选择您的凭证。如果您没有配置,或想要配置一个新凭证,请选择 Add credential。有关创建凭证的更多信息,请参阅为 Google Cloud Platform 创建凭证。
添加集群详情:
为集群输入一个名称。此名称用于集群的主机名。在命名 GCP 集群时有一些限制。这些限制包括,名称不要以
goog
开始;名称的任何部分都不要包含与google
类似的内容。如需了解完整的限制列表,请参阅 Bucket 命名指南。提示: 您可以通过将
YAML
开关设置为 ON 来在控制台中输入信息时查看 yaml 内容更新。-
如果要将其添加到现有集群集中,请指定 Cluster set。如果您在创建集群时没有
cluster-admin
权限,则必须选择一个具有clusterset-admin
权限来创建集群的集群集。如果没有选择集群集,集群创建会失败。如果没有要选择的集群设置选项,请联系集群管理员,为集群集提供clusterset-admin
权限。 - 指定您为 GCP 帐户配置的 Base DNS 域信息。如果已有与所选凭证关联的基域,则该值会在那个字段中填充。您可以修改它的值来覆盖它。此名称用于集群的主机名。如需更多信息,请参阅设置自定义域。
- 指定您要用于集群的发行镜像。这将标识用于创建集群的 OpenShift Container Platform 镜像的版本。如果要使用的版本可用,您可以从镜像列表中选择镜像。如果您要使用的镜像不是标准镜像,您可以输入您要使用的镜像的 url。有关发行镜像的更多信息,请参阅发行镜像。
- 添加您要与集群关联的附加标签。这些标签有助于识别集群并限制搜索结果。
输入 master 池的详细信息。master 池中为您的集群创建三个 master 节点。Master 节点共享集群活动的管理。可选信息包括以下字段:
- 指定您要在其中运行 master 池的区域(Region)。距离更近的区域可能会提供更快的性能,但距离更远的区域可能更为分散。
- 为您的 master 节点指定实例类型。您可以在实例创建后更改实例的类型和大小。默认值为 n1-standard-1 - n1-standard-1 1 vCPU - General Purpose。
输入 worker 池的详细信息。您可以在 worker 池中创建零个或多个 worker 节点,以运行集群的容器工作负载。它们可以位于单个 worker 池中,也可以分布在多个 worker 池中。如果指定了零个 worker 节点,master 节点也会作为 worker 节点工作。可选信息包括以下字段:
- 为您的 worker 池添加名称。
- 为 worker 池指定一个实例类型。您可以在实例创建后更改实例的类型和大小。默认值为 n1-standard-4 - 4 vCPU 15 GiB RAM - General Purpose。
输入 worker 池的节点数。定义 worker 池时需要此设置。
您可以点 Add worker pool 来定义额外的 worker 池。
输入集群的网络详情。此信息是必需的。使用 IPv6 需要多个网络。
-
选择您的网络类型。默认值为
OpenShiftSDN
。OVNKubernetes 是使用 IPv6 的必要设置。 -
选择 Cluster network CIDR。这是可用于 pod IP 地址的 IP 地址的数量和列表。这个块不能与另一个网络块重叠。默认值为
10.128.0.0/14
。 -
指定网络主机前缀,该前缀为每个节点设置子网前缀长度。默认值为
23
。 -
指定 Service network CIDR,它为服务提供 IP 地址块。这个块不能与另一个网络块重叠。默认值为
172.30.0.0/16
。 指定 Machine CIDR,它提供 OpenShift Container Platform 主机使用的 IP 地址块。这个块不能与另一个网络块重叠。默认值为
10.0.0.0/16
。您可以通过点 Add network 来添加额外网络。如果您使用的是 IPv6 地址,您必须有多个网络。
-
选择您的网络类型。默认值为
添加可选的 Ansible Automation Template,以便在集群安装或升级之前或之后运行。
您可以点击 Add Automation template 来创建模板。
检查您的信息并选择性地进行自定义。
-
点 YAML 滑块到 On 来查看面板中的
install-config.yaml
文件内容。 - 使用自定义设置编辑 YAML 文件。
-
点 YAML 滑块到 On 来查看面板中的
选择 Create 来创建集群。
注: 您不必运行
kubectl
命令,它为导入集群提供集群详情。当您创建集群时,它由 Red Hat Advanced Cluster Management 管理自动配置。
7.4.3. 访问集群
要访问由 Red Hat Advanced Cluster Management for Kubernetes 管理的集群,请完成以下步骤:
- 通过 Red Hat Advanced Cluster Management for Kubernetes 导航菜单进入到 Infrastructure > Clusters。
- 选择您创建的或想要访问的集群的名称。此时会显示集群详情。
- 选择 Reveal credentials 来查看集群的用户名和密码。记下这些值以便在登录到集群时使用。
- 选择 Console URL 以链接到集群。
- 使用在第 3 步中找到的用户 ID 和密码登录集群。
7.5. 在 VMware vSphere 上创建集群
您可以使用 Red Hat Advanced Cluster Management for Kubernetes 控制台在 VMware vSphere 上部署 Red Hat OpenShift Container Platform 集群。
7.5.1. 先决条件
在 vSphere 上创建集群前必须满足以下先决条件:
- 在 OpenShift Container Platform 版本 4.6 或更高版本上部署的 Red Hat Advanced Cluster Management hub 集群。
- 可通过互联网访问 Red Hat Advanced Cluster Management hub 集群,以便它在 vSphere 上创建 Kubernetes 集群。
- vSphere 凭证。如需更多信息,请参阅为 VMware vSphere 创建凭证。
- OpenShift Container Platform 镜像 pull secret。请参阅使用镜像 pull secret。
用于部署的 VMware 实例的以下信息:
- API 和 Ingress 实例所需的静态 IP 地址。
以下的 DNS 记录:
-
api.<cluster_name>.<base_domain>
,它必须指向静态 API VIP。 -
*.apps.<cluster_name>.<base_domain>
,它必须指向 Ingress VIP 的静态 IP 地址。
-
7.5.2. 使用控制台创建集群
要从 Red Hat Advanced Cluster Management 控制台创建集群,请完成以下步骤:
- 通过导航菜单进入 Infrastructure > Clusters。
在 Clusters 页面上,点 Create cluster。
注: 此过程用于创建集群。如果您有一个要导入的现有集群,请参阅将目标受管集群导入到 hub 集群以了解这些步骤。
- 为基础架构供应商选择 Kubernetes 发行版本和 VMware vSphere。剩余的步骤取决于您的选择。
- 从列表上的可用凭证中选择您的基础架构供应商凭证。如果您还没有配置,或想要配置一个新凭证,请选择 Add credential。有关创建凭证的更多信息,请参阅为 VMware vSphere 创建凭证。
添加集群详情:
为集群输入一个名称。这个值必须与创建凭证先决条件中列出的 DNS 记录的名称匹配。此名称用于集群的主机名。
提示: 您可以通过将
YAML
开关设置为 ON 来在控制台中输入信息时查看 yaml 内容更新。-
如果要将其添加到现有集群集中,请指定 Cluster set。如果您在创建集群时没有
cluster-admin
权限,则必须选择一个具有clusterset-admin
权限来创建集群的集群集。如果没有选择集群集,集群创建会失败。如果没有要选择的集群设置选项,请联系集群管理员,为集群集提供clusterset-admin
权限。 - 指定您为 VMware vSphere 帐户配置的 Base DNS 域信息。这个值必须与创建 prerequisites 部分中列出的 DNS 记录的名称匹配。此名称用于集群的主机名。如果已有与所选凭证关联的基域,则该值会在那个字段中填充。您可以修改它的值来覆盖它。如需更多信息,请参阅配置 AWS 帐户。此名称用于集群的主机名。
指定您要用于集群的发行镜像。这将标识用于创建集群的 OpenShift Container Platform 镜像的版本。如果要使用的版本可用,您可以从镜像列表中选择镜像。如果您要使用的镜像不是标准镜像,您可以输入您要使用的镜像的 url。有关发行镜像的更多信息,请参阅发行镜像。
注: 仅支持 OpenShift Container Platform 版本 4.5.x 或更高版本的发行镜像。
- 添加您要与集群关联的附加标签。这些标签有助于识别集群并限制搜索结果。
输入 master 池的详细信息。master 池中为您的集群创建三个 master 节点。Master 节点共享集群活动的管理。所需信息包括以下字段:
- 指定您要为集群分配的一个或多个 Cores per socket。
- 指定要分配给 master 节点的 CPU 数量。
- 指定您要分配的 Memory 量(以 MB 为单位)。
- 添加您要为 master 节点创建的磁盘大小。
输入 worker 池的详细信息。您可以在 worker 池中创建零个或多个 worker 节点,以运行集群的容器工作负载。它们可以位于单个 worker 池中,也可以分布在多个 worker 池中。如果指定了零个 worker 节点,master 节点也会作为 worker 节点工作。该信息包括以下字段:
- 为您的 worker 池添加名称。
- 指定您要为集群分配的一个或多个 Cores per socket。
- 指定要分配的 CPU 数量。
- 指定您要分配的 Memory 量(以 MB 为单位)。
- 以 GiB 为单位添加您要创建的磁盘大小。
添加节点数以指定集群中的 worker 节点数量。
您可以点击 Add worker 池来定义额外的 worker 池。
配置集群网络选项。此信息是必需的。使用 IPv6 需要多个网络。
- vSphere 网络名称 - VMware vSphere 网络名称。
API VIP - 用于内部 API 通信的 IP 地址。
注: 这个值必须与您用来创建 prerequisites 部分中列出的 DNS 记录的名称匹配。如果没有提供,DNS 必须预先配置,以便
api.
可以正确解析。Ingress VIP - 用于入口流量的 IP 地址。
注: 这个值必须与您用来创建 prerequisites 部分中列出的 DNS 记录的名称匹配。如果没有提供,则必须预先配置 DNS,以便
test.apps
可以被正确解析。您可以通过点 Add network 来添加额外网络。如果您使用的是 IPv6 地址,您必须有多个网络。
添加可选的 Ansible Automation Template,以便在集群安装或升级之前或之后运行。
您可以点击 Add Automation template 来创建模板。
检查您的信息并选择性地进行自定义。
-
点 YAML 滑块到 On 来查看面板中的
install-config.yaml
文件内容。 - 使用自定义设置编辑 YAML 文件。
-
点 YAML 滑块到 On 来查看面板中的
选择 Create 来创建集群。
注: 您不必运行
kubectl
命令,它为导入集群提供集群详情。当您创建集群时,它由 Red Hat Advanced Cluster Management 管理自动配置。
7.5.3. 访问集群
要访问由 Red Hat Advanced Cluster Management 管理的集群,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management 导航菜单中导航到 Infrastructure > Clusters。
- 选择您创建的或想要访问的集群的名称。此时会显示集群详情。
- 选择 Reveal credentials 来查看集群的用户名和密码。使用登录到集群时的这些值。
- 选择 Console URL 以链接到集群。
- 使用在第 3 步中找到的用户 ID 和密码登录集群。
7.6. 在 Red Hat OpenStack Platform 上创建集群
您可以使用 Red Hat Advanced Cluster Management for Kubernetes 控制台在 Red Hat OpenStack Platform 上部署 Red Hat OpenShift Container Platform 集群。
7.6.1. 先决条件
在 Red Hat OpenStack Platform 上创建集群前必须满足以下先决条件:
- 在 OpenShift Container Platform 版本 4.6 或更高版本上部署的 Red Hat Advanced Cluster Management hub 集群。
- 可通过互联网访问 Red Hat Advanced Cluster Management hub 集群,以便它在 Red Hat OpenStack Platform 上创建 Kubernetes 集群。
- 红帽 OpenStack 平台凭据。如需更多信息,请参阅为 Red Hat OpenStack Platform 创建凭证。
- OpenShift Container Platform 镜像 pull secret。请参阅使用镜像 pull secret。
您要部署的 Red Hat OpenStack Platform 实例的以下信息:
- master 和 worker 实例的类别名称。例如,m1.xlarge。
- 外部网络的网络名称,以提供浮动 IP 地址。
- API 和入口实例所需的浮动 IP 地址。
以下的 DNS 记录:
-
api.<cluster_name>.<base_domain>
,它必须指向 API 的浮动 IP 地址。 -
*.apps.<cluster_name>.<base_domain>
,它必须指向 ingress 的浮动 IP 地址。
-
7.6.2. 使用控制台创建集群
要从 Red Hat Advanced Cluster Management 控制台创建集群,请完成以下步骤:
- 通过导航菜单进入 Infrastructure > Clusters。
在 Clusters 页面上,点 Create cluster。
注: 此过程用于创建集群。如果您有一个要导入的现有集群,请参阅将目标受管集群导入到 hub 集群以了解这些步骤。
- 为基础架构供应商选择 Kubernetes 发行版和 Red Hat OpenStack。剩余的步骤取决于您的选择。
- 从列表上的可用凭证中选择您的基础架构供应商凭证。如果您还没有配置,或想要配置一个新凭证,请选择 Add credential。有关创建凭证的更多信息,请参阅为红帽 OpenStack 平台创建凭证。
添加集群详情:
为集群输入一个名称。此名称用于集群的主机名。名称必须包含少于 15 个字符。
注:这个值必须与创建凭证先决条件中列出的 DNS 记录的名称匹配。
提示: 您可以通过将
YAML
开关设置为 ON 来在控制台中输入信息时查看 yaml 内容更新。-
如果要将其添加到现有集群集中,请指定 Cluster set。如果您在创建集群时没有
cluster-admin
权限,则必须选择一个具有clusterset-admin
权限来创建集群的集群集。如果没有选择集群集,集群创建会失败。如果没有要选择的集群设置选项,请联系集群管理员,为集群集提供clusterset-admin
权限。 指定您为 Red Hat OpenStack Platform 帐户配置的 Base DNS 域信息。如果已有与所选凭证关联的基域,则该值会在那个字段中填充。您可以修改它的值来覆盖它。这个值必须与创建 prerequisites 部分中列出的 DNS 记录的名称匹配。
如需更多信息,请参阅 Red Hat OpenStack Platform 文档中的管理域。此名称用于集群的主机名。
指定您要用于集群的发行镜像。这将标识用于创建集群的 OpenShift Container Platform 镜像的版本。如果要使用的版本可用,您可以从镜像列表中选择镜像。如果您要使用的镜像不是标准镜像,您可以输入您要使用的镜像的 url。有关发行镜像的更多信息,请参阅发行镜像。
注: 仅支持 OpenShift Container Platform 版本 4.6.x 或更高版本的发行镜像。
- 添加您要与集群关联的附加标签。这些标签有助于识别集群并限制搜索结果。
输入 master 节点的详情。master 池中为您的集群创建三个 master 节点。Master 节点共享集群活动的管理。可选信息包括以下字段:
- 为您的 master 节点指定实例类型。您可以在实例创建后更改实例的类型和大小。默认值为 m1.xlarge。
输入 worker 池的详细信息。您可以在 worker 池中创建一个或多个 worker 节点,以运行集群的容器工作负载。它们可以位于单个 worker 池中,也可以分布在多个 worker 池中。如果指定了零个 worker 节点,master 节点也会作为 worker 节点工作。可选信息包括以下字段:
- 为您的 worker 池添加名称。
- 为 worker 池指定一个实例类型。您可以在实例创建后更改实例的类型和大小。默认值为 m1.xlarge。
输入 worker 池的节点数。定义 worker 池时需要此设置。
您可以点击 Add worker 池来定义额外的 worker 池。
输入集群的网络详情。您必须为 IPv4 网络提供一个或多个网络的值。对于 IPv6 网络,您必须定义多个网络。
- 添加外部网络名称,这是外部 Red Hat OpenStack Platform 的名称。
- 添加 API 浮动 IP 地址。现有的浮动 IP 地址用于 OpenShift Container Platform API 的外部网络。这个值必须与创建 prerequisites 部分中列出的 DNS 记录的名称匹配。
- 添加 Ingress 浮动 IP 地址。现有的浮动 IP 地址位于入口端口的外部网络上。这个值必须与创建 prerequisites 部分中列出的 DNS 记录的名称匹配。现有的浮动 IP 地址位于入口端口的外部网络上。
- 添加外部 DNS IP 地址支持在专用网络上进行名称解析。
-
选择您的网络类型,指定要部署的 Pod 网络供应商插件。可能的值为
OVNKubernetes
或OpenShiftSDN
。默认值为OpenShiftSDN
。OVNKubernetes 是使用 IPv6 的必要设置。 -
选择 Cluster network CIDR。保留给集群使用的 IP 地址组。确保为集群指定足够的内容,并确保它们不在范围内包括其他集群的 IP 地址。默认值为
10.128.0.0/14
。 -
指定网络主机前缀,它会设置分配给每个节点的前缀长度。默认值为
23
。 -
指定 Service network CIDR,它为服务提供 IP 地址块。这个块不能与另一个网络块重叠。默认值为
172.30.0.0/16
。 指定 Machine CIDR,它提供 OpenShift Container Platform 主机使用的 IP 地址块。这个块不能与另一个网络块重叠。默认值为
10.0.0.0/16
。您可以通过点 Add network 来添加额外网络。如果您使用的是 IPv6 地址,您必须有多个网络。
添加可选的 Ansible Automation Template,以便在集群安装或升级之前或之后运行。
您可以点击 Add Automation template 来创建模板。
检查您的信息并选择性地进行自定义。
-
点 YAML 滑块到 On 来查看面板中的
install-config.yaml
文件内容。 - 使用自定义设置编辑 YAML 文件。
-
点 YAML 滑块到 On 来查看面板中的
选择 Create 来创建集群。
注: 您不必运行
kubectl
命令,它为导入集群提供集群详情。当您创建集群时,它由 Red Hat Advanced Cluster Management 管理自动配置。
7.6.3. 访问集群
要访问由 Red Hat Advanced Cluster Management 管理的集群,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management 导航菜单中导航到 Infrastructure > Clusters。
- 选择您创建的或想要访问的集群的名称。此时会显示集群详情。
- 选择 Reveal credentials 来查看集群的用户名和密码。使用登录到集群时的这些值。
- 选择 Console URL 以链接到集群。
- 使用在第 3 步中找到的用户 ID 和密码登录集群。
7.7. 在裸机上创建集群
您可以使用 Red Hat Advanced Cluster Management for Kubernetes 控制台在裸机环境中创建一个 Red Hat OpenShift Container Platform 集群。
7.7.1. 先决条件
在裸机环境中创建集群前需要满足以下先决条件:
- 在 OpenShift Container Platform 版本 4.6 或更高版本上部署了 Red Hat Advanced Cluster Management for Kubernetes hub 集群。
- 可通过互联网访问 Red Hat Advanced Cluster Management for Kubernetes hub 集群(连接),或连接到连接到互联网(断开连接)的内部或镜像 registry,以检索用于创建集群所需的镜像。
- 运行 bootstrap 虚拟机的临时外部 KVM 主机,用于创建 Hive 集群。如需更多信息,请参阅准备置备程序主机。
- 部署的 Red Hat Advanced Cluster Management for Kubernetes hub 集群必须能够路由到 provisioning 网络。
- 您的裸机服务器登录凭证,其中包括上一项目中来自 bootstrap 虚拟机的 libvirt URI、SSH 私钥,以及 SSH 已知主机列表。如需更多信息,请参阅为 OpenShift 安装设置环境。
- 配置的裸机凭证。如需更多信息,请参阅为裸机创建凭证。
- 裸机环境的登录凭证,其中包括用户名、密码和基板管理控制器地址。
- 配置了裸机资产,如果您要启用证书验证。如需更多信息,请参阅创建和修改裸机资产。
OpenShift Container Platform 镜像 pull secret;请参阅使用镜像 pull secret。
备注:
- 裸机资产、受管裸机集群及其相关 secret 必须位于同一命名空间中。
- 如果更改了云供应商访问密钥,则必须手动更新置备的集群访问密钥。如需更多信息,请参阅已知问题, 不支持置备的集群的自动 secret 更新。
7.7.2. 使用控制台创建集群
要从 Red Hat Advanced Cluster Management 控制台创建集群,请完成以下步骤:
- 通过导航菜单进入 Infrastructure > Clusters。
在 Clusters 页面上,点 Create cluster。
注: 此过程用于创建集群。如果您有一个要导入的现有集群,请参阅将目标受管集群导入到 hub 集群以了解这些步骤。
- 为基础架构供应商选择 Kubernetes 发行版本和裸机。剩余的步骤取决于您的选择。
- 从列表上的可用凭据中选择您的凭证。如果您没有配置,或想要配置一个新凭证,请选择 Add credential。有关创建凭证的更多信息,请参阅为裸机创建凭证。
添加集群详情:
为集群输入一个名称。对于裸机集群,此名称不能是一个任意名称。它与集群 URL 相关联。确保使用的集群名称与您的 DNS 和网络设置一致。
提示: 您可以通过将
YAML
开关设置为 ON 来在控制台中输入信息时查看 yaml 内容更新。-
如果要将其添加到现有集群集中,请指定 Cluster set。如果您在创建集群时没有
cluster-admin
权限,则必须选择一个具有clusterset-admin
权限来创建集群的集群集。如果没有选择集群集,集群创建会失败。如果没有要选择的集群设置选项,请联系集群管理员,为集群集提供clusterset-admin
权限。 - 指定您为裸机供应商帐户配置的 Base DNS 域信息。此基础域用于创建到 OpenShift Container Platform 集群组件的路由。它在集群供应商的 DNS 中被配置为授权启动(SOA)记录。如果已有与所选凭证关联的基域,则该值会在那个字段中填充。您可以通过覆盖它来更改值,但创建集群后无法更改此设置。如需更多信息,请参阅 OpenShift Container Platform 文档中的在裸机上安装。此名称用于集群的主机名。
- 指定您要用于集群的发行镜像。这将标识用于创建集群的 OpenShift Container Platform 镜像的版本。如果要使用的版本可用,您可以从镜像列表中选择镜像。如果您要使用的镜像不是标准镜像,您可以输入您要使用的镜像的 URL。有关发行镜像的更多信息,请参阅发行镜像。
- 添加您要与集群关联的附加标签。这些标签有助于识别集群并限制搜索结果。
从与您的凭据关联的主机列表中选择您的主机。最少选择三个与虚拟机监控程序在同一网桥网络上的裸机资产。
主机列表从现有的裸机资产生成。如果您没有创建任何裸机资产,您可以在继续创建或导入它们前创建或导入它们,方法是选择 Import asset。有关创建裸机资产的更多信息,请参阅创建和修改裸机资产。或者,您可以选择 Disable certificate verify 来忽略要求。
配置集群网络选项。下表显示了网络选项及其描述:
参数 描述 必需/可选 置备网络 CIDR
用于置备的网络的 CIDR。示例格式为: 172.30.0.0/16。
必需
置备网络接口
连接到置备网络的 control plane 节点上的网络接口名称。
必需
置备网络桥接
附加到置备网络中的桥接名称。
必需
外部网络桥接
附加到外部网络的管理程序桥接名称。
必需
API VIP
用于内部 API 通信的虚拟 IP。DNS 必须预先配置为有 A/AAAA 或 CNAME 记录,以便
api.<cluster_name>.<Base DNS domain>
路径可以正确解析。必需
Ingress VIP
用于入口流量的虚拟 IP。DNS 必须预先配置为有 A/AAAA 或 CNAME 记录,以便
*.apps.<cluster_name>.<Base DNS domain>
路径可以正确解析。选填
Network type
要部署的 Pod 网络供应商插件。OpenShiftSDN 插件是 OpenShift Container Platform 4.3 中唯一支持的插件。OVNKubernetes 插件在 OpenShift Container Platform 版本 4.3、4.4 和 4.5 中仅以技术预览提供。它通常包括在 OpenShift Container Platform 版本 4.6 及更高版本中。OVNKubernetes 必须和 IPv6 一起使用。默认值为
OpenShiftSDN
。必需
Cluster network CIDR
从其中分配 Pod IP 地址的 IP 地址块。OpenShiftSDN 网络插件支持多个集群网络。多个集群网络的地址块不得互相重叠。请选择足够大的地址池,以适配预期的工作负载。默认值为 10.128.0.0/14。
必需
Network host prefix
分配给每个单独节点的子网前缀长度。例如,如果 hostPrefix 设为 23,则每个节点从给定的 CIDR 中分配一个 /23 子网,允许 510(2^(32-23)-2)个 pod IP 地址。默认值为 23。
必需
Service network CIDR
服务的 IP 地址块。OpenShiftSDN 只允许一个 serviceNetwork 块。该地址不能与任何其他网络块相重叠。默认值为 172.30.0.0/16。
必需
Machine CIDR
OpenShift Container Platform 主机使用的 IP 地址块。该地址块不得与任何其他网络块重叠。默认值为 10.0.0.0/16。
必需
您可以通过点 Add network 来添加额外网络。如果您使用的是 IPv6 地址,您必须有多个网络。
添加可选的 Ansible Automation Template,以便在集群安装或升级之前或之后运行。
您可以点击 Add Automation template 来创建模板。
检查您的信息并选择性地进行自定义。
-
点 YAML 滑块到 On 来查看面板中的
install-config.yaml
文件内容。 - 使用自定义设置编辑 YAML 文件。
-
点 YAML 滑块到 On 来查看面板中的
选择 Create 来创建集群。
注: 您不必运行
kubectl
命令,它为导入集群提供集群详情。当您创建集群时,它由 Red Hat Advanced Cluster Management 管理自动配置。
7.7.3. 访问集群
要访问由 Red Hat Advanced Cluster Management for Kubernetes 管理的集群,请完成以下步骤:
- 通过 Red Hat Advanced Cluster Management for Kubernetes 导航菜单进入到 Infrastructure > Clusters。
- 选择您创建的或想要访问的集群的名称。此时会显示集群详情。
- 选择 Reveal credentials 来查看集群的用户名和密码。记下这些值以便在登录到集群时使用。
- 选择 Console URL 以链接到集群。
- 使用在第 3 步中找到的用户 ID 和密码登录集群。
7.8. 休眠创建的集群(技术预览)
您可以休眠使用 Red Hat Advanced Cluster Management for Kubernetes 创建的集群来节省资源。休眠集群需要的资源比正在运行的资源要少得多,因此您可以通过将集群移入和停止休眠状态来降低供应商成本。此功能只适用于在以下环境中由 Red Hat Advanced Cluster Management 创建的集群:
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
7.8.1. 使用控制台休眠集群
要使用 Red Hat Advanced Cluster Management 控制台休眠由 Red Hat Advanced Cluster Management 创建的集群,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management 导航菜单中选择 Infrastructure > Clusters。确保已选中 Manage cluster 选项卡。
- 查找您要休眠的集群。
- 从集群的 Options 菜单中选择 Hibernate cluster。注:如果 Hibernate cluster 选项不可用,您就无法休眠该群集。当集群被导入且不是由 Red Hat Advanced Cluster Management 创建时,会出现这种情况。
- 在确认对话框中选择 Hibernate,以休眠群集。
当进程完成后,Clusters 页面中的集群状态为 Hibernating
。
提示:您可以通过在 Clusters 页面上选择要休眠的集群并选择 Actions > Hibernate clusters来休眠多个集群。
您选择的集群正在休眠。
7.8.2. 使用 CLI Hibernate 集群
要使用 CLI 休眠由 Red Hat Advanced Cluster Management 创建的集群,请完成以下步骤:
输入以下命令编辑您要休眠的集群设置:
oc edit clusterdeployment <name-of-cluster> -n <namespace-of-cluster>
将
name-of-cluster
替换为您要休眠的集群的名称。将
namespace-of-cluster
替换为您要休眠的集群的命名空间。-
将
spec.powerState
的值改为Hibernating
。 输入以下命令查看集群的状态:
oc get clusterdeployment <name-of-cluster> -n <namespace-of-cluster> -o yaml
将
name-of-cluster
替换为您要休眠的集群的名称。将
namespace-of-cluster
替换为您要休眠的集群的命名空间。当集群休眠过程完成时,集群的 type 值为
type=Hibernating
。
您选择的集群正在休眠。
7.8.3. 使用控制台恢复休眠集群的一般操作
要使用 Red Hat Advanced Cluster Management 控制台恢复一个休眠集群的正常操作,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management 导航菜单中选择 Infrastructure > Clusters。确保已选中 Manage cluster 选项卡。
- 查找正在休眠且要恢复的集群。
- 从相关集群的 Options 菜单中选择 Resume cluster。
- 在确认对话框中选择 Resume 以恢复集群的功能。
当进程完成后,Clusters 页面中的集群状态为 Ready
。
提示:您可以通过在 Clusters 页面上选择要恢复的集群并选择 Actions > Resume clusters来休眠多个集群。
所选集群恢复正常操作。
7.8.4. 使用 CLI 恢复休眠集群的一般操作
要使用 CLI 恢复休眠集群的一般操作,请完成以下步骤:
输入以下命令来编辑集群的设置:
oc edit clusterdeployment <name-of-cluster> -n <namespace-of-cluster>
将
name-of-cluster
替换为您要休眠的集群的名称。将
namespace-of-cluster
替换为您要休眠的集群的命名空间。-
将
spec.powerState
的值改为Running
。 输入以下命令查看集群的状态:
oc get clusterdeployment <name-of-cluster> -n <namespace-of-cluster> -o yaml
将
name-of-cluster
替换为您要休眠的集群的名称。将
namespace-of-cluster
替换为您要休眠的集群的命名空间。完成恢复集群的过程后,集群的 type 值为
type=Running
。
所选集群恢复正常操作。
第 8 章 将目标受管集群导入到 hub 集群
您可以从不同的 Kubernetes 云供应商导入集群。导入后,目标集群就成为 Red Hat Advanced Cluster Management for Kubernetes hub 集群的受管集群。除非另有指定,否则在可以访问 hub 集群和目标受管集群的任意位置完成导入任务。
hub 集群无法管理任何其他 hub 集群,但可以管理自己。hub 集群被配置为自动导入和自助管理。您不需要手动导入 hub 集群。
但是,如果您删除 hub 集群并尝试再次导入它,则需要添加 local-cluster:true
标签。
从以下说明中进行选择以通过控制台或 CLI 设置受管集群:
所需的用户类型或访问权限级别:集群管理员
8.1. 使用控制台导入现有集群
安装 Red Hat Advanced Cluster Management for Kubernetes 后,就可以导入集群来进行管理。您可以从控制台和 CLI 导入。按照以下步骤从控制台导入。在此过程中,您需要通过终端来进行身份验证。
8.1.1. 先决条件
- 您需要一个已部署的 Red Hat Advanced Cluster Management for Kubernetes hub 集群。如果要导入裸机集群,则必须在 Red Hat OpenShift Container Platform 版本 4.6 或更高版本上安装了 hub 集群。
- 您需要一个要管理的集群,以及互联网连接。
-
安装
kubectl
。要安装kubectl
,请参阅 Kubernetes 文档中的安装和设置 kubectl。
-
您需要
base64
命令行工具。 -
如果您导入不是由 Red Hat OpenShift Container Platform 创建的集群,则需要定义一个
multiclusterhub.spec.imagePullSecret
。安装 Red Hat Advanced Cluster Management for Kubernetes 时可能已创建此 secret。有关定义 secret 的更多信息,请参阅从 OperatorHub 安装。 用于在 Red Hat OpenShift Dedicated 环境中导入:
- 您必须在 Red Hat OpenShift Dedicated 环境中部署了 hub 集群。
-
Red Hat OpenShift Dedicated 的默认权限是 dedicated-admin,但不包含创建命名空间的所有权限。您必须具有
cluster-admin
权限才能使用 Red Hat Advanced Cluster Management for Kubernetes 导入和管理集群。
所需的用户类型或访问权限级别:集群管理员
8.1.2. 导入集群
您可以从 Red Hat Advanced Cluster Management for Kubernetes 控制台中为每个可用的云供应商导入现有集群。
注: hub 集群无法管理不同的 hub 集群。hub 集群被设置为自动导入和管理自身,因此您不必手动导入 hub 集群来管理自己。
- 在导航菜单中选择 Infrastructure > Clusters。
- 点 Add a cluster。
- 点击 Import an existing cluster。
- 为集群提供名称。默认情况下,命名空间用于集群名称和命名空间。
可选: 添加任何 附加标签。
注: 如果您导入 Red Hat OpenShift Dedicated 集群,且没有添加
vendor=OpenShiftDedicated
标签指定一个厂商,或者添加了vendor=auto-detect
标签,则managed-by=platform
标签会自动添加到集群中。您可以使用此添加标签将集群标识为一个 Red Hat OpenShift Dedicated 集群,并作为一个组来获取 Red Hat OpenShift Dedicated 集群。选择您要用来标识从以下选项导入的集群的导入模式 :
手动运行导入命令:根据您提供的信息生成可复制和运行的导入命令。点 Save import and generate code 生成用于部署
open-cluster-management-agent-addon
的命令。此时会显示确认信息。在 Import an existing cluster 窗口中,选择 Copy 命令将生成的命令和令牌复制到剪贴板。
重要:命令中包含复制到每个导入集群的 pull secret 信息。具有访问导入集群权限的所有用户都可以查看 pull secret 信息。考虑在 https://cloud.redhat.com/ 创建一个二级 pull secret,或创建一个服务帐户来保护个人凭证。如需了解更多与 pull secret 相关的信息,请参阅使用镜像 pull secret 或了解并创建服务帐户。
- 登录到您要导入的受管集群。
对于 Red Hat OpenShift Dedicated 环境,完成以下步骤:
-
创建
open-cluster-management-agent
和open-cluster-management
命名空间或受管集群上的项目。 - 在 OpenShift Container Platform 目录中找到 klusterlet Operator。
在
open-cluster-management
命名空间中或您创建的项目中安装它。重要: 不要在
open-cluster-management-agent
命名空间中安装 Operator。通过完成以下步骤,从导入命令中提取 bootstrap secret:
生成导入命令:
- 从 Red Hat Advanced Cluster Management 控制台主导航中选择 Infrastructure > Clusters。
- 选择 Add a cluster > Import an existing cluster。
- 添加集群信息,选择 Save import and generate code。
- 复制导入命令。
-
将导入命令粘贴到您创建的名为
import-command
的文件中。 运行以下命令以将内容插入新文件中:
cat import-command | awk '{split($0,a,"&&"); print a[3]}' | awk '{split($0,a,"|"); print a[1]}' | sed -e "s/^ echo //" | base64 -d
-
在输出中找到并复制名为
bootstrap-hub-kubeconfig
的 secret。 -
将 secret 应用到受管集群上的
open-cluster-management-agent
命名空间。 使用安装的 Operator 中的示例创建 klusterlet 资源,clusterName 应该与导入过程中设置的集群名称相同。
注: 当
managedcluster
资源在 hub 中成功注册时,会安装两个 klusterlet operator。一个 klusterlet operator 位于open-cluster-management
命名空间中,另一个位于open-cluster-management-agent
命名空间中。多个 operator 并不会影响 klusterlet 的功能。
-
创建
对于不在 Red OpenShift Dedicated 环境中的集群导入,完成以下步骤:
如有必要,为您的受管集群配置
kubectl
命令。请参阅支持的云以了解如何配置
kubectl
命令行界面。-
要将
open-cluster-management-agen-addon
部署到受管集群,请运行您复制的命令和令牌。
- 选择 View cluster 在 Overview 页面中查看集群概述。
- 为现有集群输入服务器 URL 和 API 令牌 :提供您要导入的集群的服务器 URL 和 API 令牌。
-
kubeconfig :复制并粘贴您要导入的集群
kubeconfig
文件的内容。
可选: 在集群详情页中配置 Cluster API address,它为运行
oc get managedcluster
命令时在表中显示的 URL。-
使用具有
cluster-admin
权限的 ID 登录到 hub 集群。 为目标受管集群配置
kubectl
。请参阅支持的云了解如何配置
kubectl
。输入以下命令编辑您要导入的集群的受管集群条目:
oc edit managedcluster <cluster-name>
使用受管集群的名称替换
cluster-name
。在 YAML 文件中的
ManagedCluster
spec 中添加ManagedClusterClientConfigs
,如下例所示:spec: hubAcceptsClient: true managedClusterClientConfigs: - url: https://multicloud-console.apps.new-managed.dev.redhat.com
将 URL 值替换为提供对您要导入的受管集群的外部访问的 URL。
-
使用具有
集群已导入。您可以选择 Import another 来导入另一个。
8.1.3. 删除导入的集群
完成以下步骤以删除导入的集群以及在受管集群上创建的 open-cluster-management-agent-addon
。
- 在 Clusters 页面的表中查找您导入的集群。
- 点 Actions > Detach cluster 从管理中删除集群。
注意: 如果您试图分离名为 local-cluster
的 hub 集群,请注意 disableHub selfManagement
的默认设置为 false
。此设置会导致 hub 集群在分离时会重新导入自己并管理自己,并协调 MultiClusterHub
控制器。hub 集群可能需要几小时时间来完成分离过程并重新导入。如果要在等待进程完成后重新导入 hub 集群,您可以输入以下命令来重启 multiclusterhub-operator
pod 并更快地重新导入:
oc delete po -n open-cluster-management `oc get pod -n open-cluster-management | grep multiclusterhub-operator| cut -d' ' -f1`
您可以通过将 disableHubSelfManagement
值改为 true
来更改 hub 集群的值,如在线安装所述。
8.2. 使用 CLI 导入受管集群
安装 Red Hat Advanced Cluster Management for Kubernetes 后,就可以导入集群来进行管理。您可以从控制台和 CLI 导入。按照以下步骤从 CLI 导入。
重要: hub 集群无法管理不同的 hub 集群。hub 集群被设置为自动导入并管理自己。您不必手动导入 hub 集群来自己管理。
但是,如果您删除 hub 集群并尝试再次导入它,则需要添加 local-cluster:true
标签。
8.2.1. 先决条件
- 您需要一个已部署的 Red Hat Advanced Cluster Management for Kubernetes hub 集群。如果要导入裸机集群,则必须在 Red Hat OpenShift Container Platform 版本 4.6 或更高版本上安装了 hub 集群。
- 您需要一个要管理的单独集群,以及互联网连接。
-
您需要 Red Hat OpenShift Container Platform CLI 版本 4.6 或更高版本来运行
oc
命令。如需有关安装和配置 Red Hat OpenShift CLIoc
的信息,请参阅 OpenShift CLI 入门。 您需要安装 Kubernetes CLI
kubectl
。要安装kubectl
,请参阅 Kubernetes 文档中的安装和设置 kubectl。注: 通过控制台下载 CLI 工具的安装文件。
-
如果您导入不是由 Red Hat OpenShift Container Platform 创建的集群,则需要定义一个
multiclusterhub.spec.imagePullSecret
。安装 Red Hat Advanced Cluster Management for Kubernetes 时可能已创建此 secret。有关定义 secret 的更多信息,请参阅从 OperatorHub 安装。
8.2.2. 支持的构架
- Linux (x86_64, s390x, ppc64le)
- macOS
8.2.3. 准备导入
登录到您的 hub 集群。运行以下命令:
oc login
在 hub 集群上运行以下命令来创建命名空间。注:
cluster_name
中定义的集群名称也用作 YAML 文件和命令中的集群命名空间:oc new-project ${CLUSTER_NAME} oc label namespace ${CLUSTER_NAME} cluster.open-cluster-management.io/managedCluster=${CLUSTER_NAME}
继续导入集群。
8.2.4. 导入集群
通过完成以下步骤之一导入集群:
要使用自动导入,您必须创建一个包含要导入的集群的服务器和令牌对的 secret。
创建包含类似以下模板的内容的 YAML 文件:
apiVersion: v1 kind: Secret metadata: name: auto-import-secret namespace: <cluster_name> stringData: autoImportRetry: 5 # If you are using the kubeconfig file, add the following value for the kubeconfig file # that has the current context set to the cluster to import: kubeconfig: |- <kubeconfig_file> # If you are using the token/server pair, add the following two values: token: <Token to access the cluster> server: <cluster_api_url> type: Opaque
-
将文件保存为
auto-import-secret.yaml
。 使用以下命令应用 YAML 文件:
oc apply -f auto-import-secret.yaml
要使用手动导入过程,请完成以下步骤:
使用以下 YAML 示例编辑示例 ManagedCluster 集群:
apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: <cluster_name> labels: cloud: auto-detect vendor: auto-detect spec: hubAcceptsClient: true
当
cloud
和vendor
的值被设置为auto-detect
时,Red Hat Advanced Cluster Management 会检测您要导入的集群的云和厂商类型。您可以选择将auto-detect
的值替换为集群的 cloud 和 vendor 值。请参见以下示例:cloud: Amazon vendor: OpenShift
-
将文件保存为
managed-cluster.yaml
。 使用以下命令应用 YAML 文件:
oc apply -f managed-cluster.yaml
8.2.5. 导入 klusterlet
您可以通过完成以下步骤来创建并应用 klusterlet 附加组件配置文件:
创建一个类似以下示例的 YAML 文件:
apiVersion: agent.open-cluster-management.io/v1 kind: KlusterletAddonConfig metadata: name: <cluster_name> namespace: <cluster_name> spec: clusterName: <cluster_name> clusterNamespace: <cluster_name> applicationManager: enabled: true certPolicyController: enabled: true clusterLabels: cloud: auto-detect vendor: auto-detect iamPolicyController: enabled: true policyController: enabled: true searchCollector: enabled: true version: 2.3.0
-
将文件保存为
klusterlet-addon-config.yaml
。 运行以下命令来应用 YAML:
oc apply -f klusterlet-addon-config.yaml
注: 如果您导入 Red Hat OpenShift Dedicated 集群,且没有添加
vendor=OpenShiftDedicated
标签指定一个厂商,或者添加了vendor=auto-detect
标签,则managed-by=platform
标签会自动添加到集群中。您可以使用此添加标签将集群标识为一个 Red Hat OpenShift Dedicated 集群,并作为一个组来获取 Red Hat OpenShift Dedicated 集群。
ManagedCluster-Import-Controller 将生成一个名为 ${CLUSTER_NAME}-import
的 secret。${CLUSTER_NAME}-import
secret 包括 import.yaml
,用户会把它应用到一个受管集群来安装 klusterlet.
集群现已导入。
8.2.6. 使用 CLI 删除导入的集群
要删除集群,请运行以下命令:
oc delete managedcluster <cluster_name>
将 cluster_name
替换为集群的名称。
您的集群现已被删除。
8.3. 修改集群的 klusterlet 附加组件设置
您可以使用 hub 集群修改 KlusterletAddonConfig
的设置,以更改您的配置。
KlusterletAddonConfig
控制器根据 klusterletaddonconfigs.agent.open-cluster-management.io
Kubernetes 资源中的设置管理启用和禁用的功能。查看以下 KlusterletAddonConfig
示例:
apiVersion: agent.open-cluster-management.io/v1 kind: KlusterletAddonConfig metadata: name: <cluster-name> namespace: <cluster-name> spec: clusterName: <cluster-name> clusterNamespace: <cluster-name> clusterLabels: cloud: auto-detect vendor: auto-detect applicationManager: enabled: true certPolicyController: enabled: true iamPolicyController: enabled: true policyController: enabled: true searchCollector: enabled: false version: 2.3.0
8.3.1. klusterlet 附加组件设置描述
以下设置可以在 klusterletaddonconfigs.agent.open-cluster-management.io
Kubernetes 资源中更新:
设置名称 | 值 | 描述 |
---|---|---|
applicationmanager |
| 此控制器在受管集群中管理应用程序订阅生命周期。 |
certPolicyController |
| 此控制器在受管集群中强制实施基于证书的策略。 |
iamPolicyController |
| 此控制器在受管集群上强制实施基于 IAM 的策略生命周期。 |
policyController |
| 此控制器在受管集群上强制执行所有其他策略规则。 |
searchCollector |
| 此控制器用于定期将资源索引数据推送回 hub 集群。 |
8.3.2. 使用 hub 集群中的控制台进行修改
您可以使用 hub 集群修改 klusterletaddonconfigs.agent.open-cluster-management.io
资源设置。完成以下步骤以更改设置:
- 登录到 hub 集群的 Red Hat Advanced Cluster Management for Kubernetes 控制台。
- 在 hub 集群控制台的标头菜单中选择 Search 图标。
-
在搜索参数中输入以下值:
kind:klusterletaddonconfigs
- 选择您要更新的端点资源。
-
找到
spec
部分并选择 Edit 以编辑内容。 - 修改设置。
- 选择 Save 以应用您的更改。
8.3.3. 使用 hub 集群中的命令行进行修改
您必须有权访问 cluster-name
命名空间才能使用 hub 集群修改设置。完成以下步骤:
- 登录到 hub 集群。
输入以下命令以编辑资源:
kubectl edit klusterletaddonconfigs.agent.open-cluster-management.io <cluster-name> -n <cluster-name>
-
找到
spec
部分。 - 根据需要修改您的设置。
第 9 章 在代理环境中创建集群
当 hub 集群通过代理服务器连接时,您可以创建 Red Hat OpenShift Container Platform 集群。
要成功创建集群,则必须满足以下情况之一:
- Red Hat Advanced Cluster Management for Kubernetes 与您要创建的受管集群具有私有网络连接,但 Red Hat Advanced Cluster Management 和受管集群使用代理访问互联网。
- 受管集群位于基础架构供应商上,但防火墙端口启用了从受管集群到 hub 集群的通信。
要创建使用代理配置的集群,请完成以下步骤:
通过在
install-config.yaml
文件中添加以下信息,在 hub 集群上配置集群范围的代理设置:apiVersion: v1 kind: Proxy baseDomain: <domain> proxy: httpProxy: http://<username>:<password>@<proxy.example.com>:<port> httpsProxy: https://<username>:<password>@<proxy.example.com>:<port> noProxy: <wildcard-of-domain>,<provisioning-network/CIDR>,<BMC-address-range/CIDR> additionalTrustBundle: | -----BEGIN CERTIFICATE----- <trusted-ca-cert> -----END CERTIFICATE-----
使用代理服务器的用户名替换
username
。使用密码替换
password
以访问您的代理服务器。将
proxy.example.com
替换为代理服务器的路径。使用与代理服务器的通信端口替换
port
。将
wildcard-of-domain
替换为应当绕过代理的域的条目。使用置备网络的 IP 地址和分配的 IP 地址(以 CIDR 表示)替换
provisioning-network/CIDR
。将
BMC-address-range/CIDR
替换为 BMC 地址和地址数(以 CIDR 表示)。将
trusted-ca-cert
替换为openshift-config
命名空间中的 ConfigMap 中的user-ca-bundle
的内容。additionalTrustBundle
字段是必需的,除非代理的身份证书由 Red Hat Enterprise Linux Core OS 信任捆绑包中的颁发机构签名。如果您使用不要求额外代理配置但需要额外 CA 的 MITM 透明代理网络,您必须提供 MITM CA 证书。添加前面的值后,设置将应用到集群。
- 通过完成创建集群的步骤来置备集群。请参阅创建集群以选择您的供应商。
9.1. 在现有集群中启用集群范围代理
当启用集群范围的代理功能时,您必须使受管集群的组件了解,以便它们可以在代理后工作。若要启用组件,如应用程序管理器,操作器容器集使用以下环境变量进行更新:HTTP_PROXY
、HTTPS_PROXY
、NO_PROXY
。
这些环境变量指定了 pod 将 HTTP
和 HTTPS
流量路由到代理服务器的位置。Operator pod 会自动使用这些环境变量更新,因此独立订阅可以在启用集群范围代理后正常工作。
在现有的受管集群中,订阅控制器
在一个 klusterlet add-on
中运行。在创建容器集时,环境变量不会自动添加。您必须通过修补部署并添加三个环境变量到部署中的每个容器来手动将环境变量添加到现有集群。
完成以下步骤,将环境变量添加到 appmgr
的 klusterlet add-on
中:
输入以下命令来创建 HTTP 代理:
kubectl patch deployment <deployment-name> -p '{"spec":{"template":{"spec":{"containers":[{"env":[{"name":"HTTP_PROXY","value":"'<http-proxy>'"}],"name":"'<container-name>'"}]}}}}'
使用部署的名称替换
deployment-name
。使用您要用于 http 请求的代理服务器的地址替换
http-proxy
。例如:http://192.168.1.1:3128
。将
container-name
替换为容器的名称。输入以下命令来创建 HTTPS 代理:
kubectl patch deployment <deployment-name> -p '{"spec":{"template":{"spec":{"containers":[{"env":[{"name":"HTTPS_PROXY","value":"'<https-proxy>'"}],"name":"'<container-name>'"}]}}}}'
使用部署的名称替换
deployment-name
。使用您要用于 https 请求的代理服务器的地址替换
https-proxy
。例如:http://192.168.1.0:3128
。将
container-name
替换为容器的名称。输入以下命令指定不通过代理的内容:
kubectl patch deployment <deployment-name> -p '{"spec":{"template":{"spec":{"containers":[{"env":[{"name":"NO_PROXY","value":"'<no-proxy>'"}],"name":"'<container-name>'"}]}}}}'
使用部署的名称替换
deployment-name
。使用以逗号分隔的 IP、主机名和域(不通过代理路由流量)列表替换
no-proxy
。例如:.cluster.local,.svc,10.128.0.0/14, example.com
。将
container-name
替换为容器的名称。
提示:对于多个容器,您可以在每个容器上创建并运行类似以下示例的文件:
DEPLOYMENT_NAME="klusterlet-addon-appmgr" CONTAINER_NAME="subscription-controller" HTTP_PROXY="http://192.168.1.1:3128" HTTPS_PROXY="http://192.168.1.0:3128" NO_PROXY=".cluster.local,.svc,10.128.0.0/14, example.com" kubectl patch deployment $DEPLOYMENT_NAME -p '{"spec":{"template":{"spec":{"containers":[{"env":[{"name":"HTTP_PROXY","value":"'$HTTP_PROXY'"}],"name":"'$CONTAINER_NAME'"}]}}}}' kubectl patch deployment $DEPLOYMENT_NAME -p '{"spec":{"template":{"spec":{"containers":[{"env":[{"name":"HTTPS_PROXY","value":"'$HTTPS_PROXY'"}],"name":"'$CONTAINER_NAME'"}]}}}}' kubectl patch deployment $DEPLOYMENT_NAME -p '{"spec":{"template":{"spec":{"containers":[{"env":[{"name":"NO_PROXY","value":"'$NO_PROXY'"}],"name":"'$CONTAINER_NAME'"}]}}}}'
注: 在受管集群中 注册
代理和 工作
代理不支持代理设置,因为它们通过建立 mTLS 连接与 hub 集群上的 apiserver
通信,这无法通过代理。
重要: 全局代理设置不会影响警报转发。要使用集群范围代理为 Red Hat Advanced Cluster Management hub 集群设置警报转发,请参阅 转发警报 以了解更多详细信息。
第 10 章 配置特定的集群管理角色
安装 Red Hat Advanced Cluster Management for Kubernetes 时,默认配置在 Red Hat Advanced Cluster Management hub 集群上提供 cluster-admin
角色。此权限允许您在 hub 集群中创建、管理和导入受管集群。在某些情况下,您可能想要限制对由 hub 集群管理的某些受管集群的访问,而不是提供对 hub 集群上所有受管集群的访问。
您可以通过定义集群角色并将其应用到用户或组来限制对特定受管集群的访问。完成以下步骤以配置和应用角色:
通过创建包含以下内容的 YAML 文件来定义集群角色:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: <clusterrole-name> rules: - apiGroups: - cluster.open-cluster-management.io resources: - managedclusters resourceNames: - <managed-cluster-name> verbs: - get - list - watch - update - delete - deletecollection - patch - apiGroups: - cluster.open-cluster-management.io resources: - managedclusters verbs: - create - apiGroups: - "" resources: - namespaces resourceNames: - <managed-cluster-name> verbs: - create - get - list - watch - update - delete - deletecollection - patch - apiGroups: - register.open-cluster-management.io resources: - managedclusters/accept resourceNames: - <managed-cluster-name> verbs: - update
将
clusterrole-name
替换为您要创建的集群角色的名称。将
managed-cluster-name
替换为您希望用户有权访问的受管集群的名称。输入以下命令应用
clusterrole
定义:oc apply <filename>
将
filename
替换为您在上一步中创建的 YAML 文件的名称。输入以下命令将
clusterrole
绑定到指定用户或组:oc adm policy add-cluster-role-to-user <clusterrole-name> <username>
将
clusterrole-name
替换为您在上一步中应用的集群角色的名称。使用您要将集群角色绑定的用户名替换username
。
第 11 章 管理集群标签
在集群中添加标签以选择组资源。如需更多信息,请参阅标签和 选择器。
您可以添加新标签、删除现有标签,并为集群编辑现有标签。完成以下步骤来管理标签:
- 在导航菜单中点 Infrastructure > Clusters。
- 在 Clusters 表中查找集群。
- 点 Options 以查看菜单中的选项。
- 选择 Edit labels。
-
在 Edit labels 对话框中输入标签。您的输入可能类似如下内容:
Key=Value
。 - 按 Enter、添加逗号或添加空格来添加附加标签。
- 当输入最后一个时,点 Save。只有在点 Save 后才会保存标签。
完成后,关闭 Edit labels 窗格。
- 如果要删除现有标签,点您要在列表中删除的标签的 Remove 图标。
-
如果要更新现有标签,可以通过使用具有不同值的同一键添加新标签来为这个键分配一个新值。例如,您可以通过输入
Key=NewValue
来更改Key=Value
,以更新Key
的值。
提示 : 您还可以从集群详情页面编辑集群标签。在导航菜单中点 Infrastructure > Clusters。在 Clusters 页面中,点击集群的名称来访问集群的详情页面。选择 Labels 部分中的 Edit 图标。此时会显示 Edit labels 对话框。
第 12 章 配置 Ansible Tower 任务以在受管集群中运行
Red Hat Advanced Cluster Management 与 Ansible Tower 自动化集成,以便您可以创建创建或升级集群之前或之后的 prehook 和 posthook AnsibleJob 实例。为集群销毁配置 prehook 和 posthook 作业,集群扩展操作不被支持。
需要的访问权限:集群管理员
12.1. 先决条件
您必须满足以下先决条件才能在 Red Hat Advanced Cluster Management 集群中运行 Ansible 模板:
- OpenShift Container Platform 4.6 或更高版本
- 已安装 Ansible Tower 版本 3.7.3 或更高版本。安装最新版本的 Ansible Tower 是最佳实践方案。如需了解更多详细信息,请参阅 Red Hat Ansible Tower 文档。
- 安装 Ansible Automation Platform Resource Operator,将 Ansible 作业连接到 Git 订阅的生命周期。为了获得最佳结果,在使用 AnsibleJob 启动 Ansible Tower 作业时,Ansible Tower 作业模板在运行时应该是等价的。您可以在 OpenShift Container Platform OperatorHub 中找到 Ansible Automation Platform Resource Operator。
有关安装和配置 Ansible Tower 自动化的更多信息,请参阅设置 Ansible 任务。
12.2. 使用控制台将 AnsibleJob 模板配置为在集群中运行
您必须指定在创建集群时要用于集群的 Ansible 作业模板。要在创建集群时指定模板,请在 Automation 步骤中选择您要应用到集群的 Ansible 模板。如果没有 Ansible 模板,请单击 Add Automation template 来创建。
12.3. 创建 AnsibleJob 模板
要使用集群安装或升级来启动 Ansible 作业,您必须创建一个 Ansible 作业模板来指定作业何时运行。它们可以配置为在集群安装或升级之前或之后运行。
要指定在创建模板时运行 Ansible 模板的详情,请完成以下步骤:
- 从 Red Hat Advanced Cluster Management 导航中选择 Infrastructure > Automation。此时会显示现有的 Ansible 模板。
选择适合您情况的路径:
- 如果要创建新模板,请单击 Create Ansible template 并继续第 3 步。
- 如果要修改现有模板,请在要修改的模板的 Options 菜单中点击 Edit template,然后继续第 5 步。
- 输入模板的名称。它必须是包含小写、字母数字字符或连字符 (-) 的唯一名称。
选择您要用于新模板的凭据。要将 Ansible 凭证链接到 Ansible 模板,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management 导航中选择 Automation。任何未链接到凭证的模板列表中的模板都包含可用于将模板链接到现有凭证的 Link to credential 图标。
- 选择 Link to credential 来查找并链接到现有凭证。
- 从 Ansible Automation Platform credential 字段中的菜单中,选择可用的凭据。仅显示与模板相同的命名空间中的凭证。
- 如果没有可以选择的凭证,或者您不想使用现有凭证,请从您要链接的模板的 Options 菜单中选择 Edit template。
- 点击 Add credentials 为您的模板创建凭证。
- 如果需要创建凭证,请完成为 Ansible Automation Platform 创建凭证中的步骤。
- 在与模板相同的命名空间中创建凭据后,在编辑模板时,在 Ansible Automation Platform credential 字段中选择凭据。
- 单击 Save,以提交凭据和模板之间的链接。
- 如果要在安装集群前启动任何 Ansible 作业,请在 Pre-install Ansible job templates 部分中选择 Add an Ansible job template。
选择 prehook 和 posthook Ansible 作业来添加到集群的安装或升级中。
注:Ansible job template name 需要与 Ansible Tower 中的 Ansible 作业的名称匹配。
- 如果存在,输入 Ansible Tower 作业所需的任何额外变量。
- 如有必要,拖动 Ansible 作业以更改顺序。
- 点 Save 以提交您的信息。
- 对于您要在集群安装后启动的 Ansible 作业模板(Post-install Ansible job templates 部分),重复第 5 - 9 步。
- 点 Save 以提交您的信息。
- 点 Next 以开始指定升级发起的 Ansible 作业。
- 对于您要在集群升级前启动的 Ansible 作业模板(Pre-upgrade Ansible job templates templates 部分),重复第 5 - 9 步。
- 点 Save 以提交您的信息。
- 对于您要在集群升级后启动的 Ansible 作业模板(Post-upgrade Ansible job templates templates 部分),重复第 5 - 9 步。
- 点 Save 以提交您的信息。
- 点 Next,以查看您添加的 Ansible 作业。
- 选择 Add,将 Ansible 作业配置信息添加到您的模板。
您的 Ansible 模板已配置为在集群中运行,在指定操作发生时指定此模板。
12.4. 使用标签将 AnsibleJob 模板配置为在受管集群中运行
当集群由 Red Hat Advanced Cluster Management for Kubernetes 创建或通过标签导入来由 Red Hat Advanced Cluster Management 管理时,您可以创建一个绑定到集群的 AnsibleJob
。
完成以下步骤以创建一个 Ansible 作业,并使用尚未由 Red Hat Advanced Cluster Management 管理的集群进行配置:
在应用程序功能支持的一个频道中为 Ansible 任务创建定义文件。只支持 Git 频道。
使用
AnsibleJob
作为定义中的kind
值。您的定义文件内容可能类似以下示例:
apiVersion: apiVersion: tower.ansible.com/v1alpha1 kind: AnsibleJob metadata: name: hive-cluster-gitrepo spec: tower_auth_secret: my-toweraccess job_template_name: my-tower-template-name extra_vars: variable1: value1 variable2: value2
通过将文件存储在 prehook 或 posthook 目录中,它会创建一个与放置规则匹配的集群名称列表。集群名称列表可作为
extra_vars
的值传递给AnsibleJob
kind
资源。当此值传递给AnsibleJob
资源时,Ansible 作业可以决定新的集群名称并在自动化中使用它。- 登录您的 Red Hat Advanced Cluster Management hub 集群。
通过 Red Hat Advanced Cluster Management 控制台,使用 Git 订阅创建一个应用程序,该订阅引用您刚刚创建的定义文件存储频道的频道。有关创建应用程序和订阅的更多信息,请参阅管理应用程序资源。
在创建订阅时,请指定一个标签,您可以在以后创建或导入的集群中添加该订阅以与集群连接。这可以是现有标签,如
vendor=OpenShift
,也可以是您创建和定义的唯一可用标签。注:如果您选择已在使用的标签,Ansible 作业会自动运行。最佳实践是将不属于 prehook 或 posthook 的资源包含在应用程序中。
当检测到集群时使用与
AnsibleJob
标签匹配的标签时,默认放置规则运行作业。如果您希望自动化在由 hub 集群管理的所有正在运行的集群中运行,请将以下内容添加到放置规则中:clusterConditions: - type: ManagedClusterConditionAvailable status: "True"
您可以将其粘贴到放置规则的 YAML 内容中,或者在 Red Hat Advanced Cluster Management 控制台的 Application create 页面中选择 Deploy to all online clusters and local cluster 集群的选项。
按照创建集群或将目标受管集群分别导入到 hub 集群中的内容创建或导入集群。
在创建或导入集群时,使用您在创建订阅时使用的相同标签,
AnsibleJob
会自动配置为在集群中运行。
Red Hat Advanced Cluster Management 会自动将集群名称注入 AnsibleJob.extra_vars.target_clusters
路径。您可以动态将集群名称注入到定义中。完成以下步骤,创建一个 AnsibleJob,并使用已经由 Red Hat Advanced Cluster Management 管理的集群进行配置:
在 Git Channel 的 prehook 或 posthook 目录中为 AnsibleJob 创建定义文件。
使用
AnsibleJob
作为定义中的kind
值。您的定义文件内容可能类似以下示例:
apiVersion: tower.ansible.com/v1alpha1 kind: AnsibleJob metadata: name: hive-cluster-gitrepo spec: tower_auth_secret: my-toweraccess job_template_name: my-tower-template-name extra_vars: variable1: value1 variable2: value2
使用访问您的 Ansible Tower 所需的验证 secret 替换
my-toweraccess
。将
my-tower-template-name
替换为 Ansible Tower 中的模板名称。
每次删除或添加由 Ansible 作业控制的集群时,AnsibleJob 会自动运行和更新 extra_vars.target_clusters
变量。此更新提供了通过特定自动化指定集群名称,或将自动化应用到一组集群的功能。
12.5. 查看 Ansible 作业的状态
您可以查看正在运行的 Ansible 作业的状态,以确保它启动并在成功运行。要查看正在运行的 Ansible 作业的当前状态,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management 菜单中,选择 Infrastructure > Clusters 以访问 Clusters 页面。
- 选择集群名称来查看其详情。
在集群信息上查看 Ansible 作业最后一次运行的状态。该条目显示以下状态之一:
-
当安装 prehook 或 posthook 任务失败时,集群状态会显示
Failed
。 当升级 prehook 或 posthook 任务失败时,会在 Distribution 字段中显示升级失败的警告信息。
提示: 如果集群 prehook 或 posthook 失败,您可以从 Clusters 页面重试升级。
-
当安装 prehook 或 posthook 任务失败时,集群状态会显示
第 13 章 创建和管理 ManagedClusterSets(技术预览)
ManagedClusterSet
是一个受管集群的组。使用受管集群集,您可以一起管理对组中所有受管集群的访问。您还可以创建一个 ManagedClusterSetBinding
资源,将 ManagedClusterSet
资源绑定到命名空间。
13.1. 创建 ManagedClusterSet
您可以在受管集群集中将受管集群分组在一起,以限制受管集群的用户访问权限。
需要的访问权限: 集群管理员
ManagedClusterSet
是一个集群范围的资源,因此您必须在创建 ManagedClusterSet
的集群中具有集群管理权限。受管集群不能包含在多个 ManagedClusterSet
中。您可以从 Red Hat Advanced Cluster Management for Kubernetes 控制台或命令行界面创建受管集群集。
13.1.1. 使用控制台创建 ManagedClusterSet
完成以下步骤,使用 Red Hat Advanced Cluster Management 控制台创建受管集群集:
- 在主控制台导航中,选择 Infrastructure > Clusters。
- 选择 Cluster sets 选项卡。
- 选择 Create cluster set。
- 输入您要创建的集群集的名称。
- 选择 Create 来创建集群集资源。
13.1.2. 使用命令行创建 ManagedClusterSet
将受管集群集的以下定义添加到 yaml
文件中,使用命令行创建受管集群集:
apiVersion: cluster.open-cluster-management.io/v1alpha1 kind: ManagedClusterSet metadata: name: <clusterset1>
将 clusterset1
替换为受管集集群的名称。
13.2. 将集群添加到 ManagedClusterSet
创建 ManagedClusterSet
后,您必须添加一个或多个受管集群。您可以使用控制台或命令行将受管集群添加到受管集群集。
13.2.1. 使用控制台将集群添加到 ManagedClusterSet
完成以下步骤,使用 Red Hat Advanced Cluster Management 控制台将集群添加到受管集群集中:
- 如果您只创建了受管集群集,选择 Manage resource assignments 以直接进入 Manage 资源分配页面。继续执行此流程的第 6 步。
- 如果集群已存在,在主导航中选择 Infrastructure > Clusters 来访问集群页面。
- 选择 Cluster set 选项卡来查看可用的集群集。
- 选择您要添加到受管集群集的集群集的名称,以查看集群设置详情。
- 选择 Actions > Manage resource assignments。
- 在 Manage resource assignments 页面上,选中您要添加到集群集的资源的复选框。
- 选择 Review 查看您的更改。
选择 Save 保存您的更改。
注:如果将受管集群从一个受管集群集移到另一个受管集群,则必须在两个受管集群集中都有所需的 RBAC 权限。
13.2.2. 使用命令行将集群添加到 ManagedClusterSet
完成以下步骤,使用命令行将集群添加到受管集群集中:
确保有一个 RBAC
ClusterRole
条目,供您在managedclustersets/join
的虚拟子资源中创建。没有这个权限,就无法将受管集群分配给ManagedClusterSet
。如果此条目不存在,请将其添加到您的
yaml
文件中。示例条目类似以下内容:kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: clusterrole1 rules: - apiGroups: ["cluster.open-cluster-management.io"] resources: ["managedclustersets/join"] resourceNames: ["<clusterset1>"] verbs: ["create"]
将
clusterset1
替换为ManagedClusterSet
的名称。注:如果要将受管集群从一个
ManagedClusterSet
移到另一个,则必须在两个受管集群集中都有该权限。在
yaml
文件中查找受管集群的定义。在受管集群定义的这个部分添加与以下内容类似的标签:apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 spec: hubAcceptsClient: true
在本例中,
cluster1
是受管集群的名称。添加一个标签,指定
ManagedClusterSet
,格式为:cluster.open-cluster-management.io/clusterset: clusterset1
。您的代码类似以下示例:
apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 labels: cluster.open-cluster-management.io/clusterset: clusterset1 spec: hubAcceptsClient: true
在本例中,
cluster1
是添加到受管集群集clusterset1
的集群 。注: 如果受管集群之前被分配给已删除的受管集群集,受管集群可能会有一个受管集群集已被指定到不存在的集群集合。如果出现这种情况,请用新名称替换。
13.3. 从 ManagedClusterSet 中删除受管集群
您可能希望从受管集群集中删除受管集群,将其移到不同的受管集群集,或者从集合的管理设置中删除。您可以使用控制台或命令行界面从受管集群集中删除受管集群。
13.3.1. 使用控制台从 ManagedClusterSet 中删除受管集群
完成以下步骤,使用 Red Hat Advanced Cluster Management 控制台从受管集群集中删除集群:
- 如果您只创建了受管集群集,选择 Manage resource assignments 以直接进入 Manage 资源分配页面。继续执行此流程的第 6 步。
- 如果集群已存在,在主导航中选择 Infrastructure > Clusters 来访问集群页面。
- 选择 Cluster set 选项卡来查看可用的集群集。
- 选择您要从受管集群集中删除的集群集的名称,以查看集群设置详情。
- 选择 Actions > Manage resource assignments。
在 Manage resource assignments 页面上,选中您要从集群集合中删除的资源的复选框。
此步骤删除已是集群集成员的资源,或添加尚未成为集群集成员的资源。您可以通过查看受管集群的详情来查看资源是否已是集群集的成员。
-
选择
Review
并查看您的更改,然后选择Save
。
注: 如果要将受管集群从一个受管集群设置为另一个受管集群,则必须对两个受管集群集都有所需的 RBAC 权限。
13.3.2. 使用命令行从 ManagedClusterSet 中删除集群
要使用命令行从受管集群集中删除受管集群,请完成以下步骤:
运行以下命令在受管集群集中显示受管集群列表:
oc get managedclusters -l cluster.open-cluster-management.io/clusterset=<clusterset1>
将
clusterset1
替换为受管集群集的名称。- 找到您要删除的集群条目。
从您要删除的集群的
yaml
条目中删除该标签。参阅以下标签代码示例:labels: cluster.open-cluster-management.io/clusterset: clusterset1
注: 如果要将受管集群从一个受管集群集移到另一个受管集群集,则必须在两个受管集群集中都有所需的 RBAC 权限。
13.4. 创建 ManagedClusterSetBinding 资源
创建一个 ManagedClusterSetBinding
资源,将 ManagedClusterSet
资源绑定到命名空间。在同一命名空间中创建的应用程序和策略只能访问包含在绑定受管集群集资源的受管集群。
命名空间的访问权限会自动应用到绑定到该命名空间的受管集群集。如果您有访问权限来访问受管集群设置的命名空间,则会自动具有访问绑定到该命名空间的任何受管集群集的权限。但是,如果您只拥有访问受管集群集的权限,则没有访问命名空间中其他受管集群集的权限。如果没有看到受管集群集,则可能没有查看它所需的权限。
您可以使用控制台或命令行创建受管集群集绑定。
13.4.1. 使用控制台创建 ManagedClusterSetBinding
完成以下步骤,使用 Red Hat Advanced Cluster Management 控制台从受管集群集中删除集群:
- 选择主导航中的 Infrastructure > Clusters 来访问集群页面。
- 选择 Cluster set 选项卡来查看可用的集群集。
- 选择您要为创建绑定的集群集的名称,以查看集群集详情。
- 选择 Actions > Edit namespace bindings。
- 在 Edit namespace bindings 页面中,从下拉菜单中选择您要将集群集绑定到的命名空间。已选择现有的与集群集绑定的命名空间。
- 选择 Save 以提交您的更改。
13.4.2. 使用命令行创建 ManagedClusterSetBinding
要使用命令行创建受管集群集绑定,请完成以下步骤:
在
yaml
文件中创建ManagedClusterSetBinding
资源。在创建受管集群集绑定时,受管集群集绑定的名称必须与要绑定的受管集群集的名称匹配。您的ManagedClusterSetBinding
资源可能类似以下信息:apiVersion: cluster.open-cluster-management.io/v1alpha1 kind: ManagedClusterSetBinding metadata: namespace: project1 name: clusterset1 spec: clusterSet: clusterset1
确保目标受管集群集有绑定权限。查看以下
ClusterRole
资源示例,其中包含允许用户绑定到clusterset1
的规则:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: clusterrole1 rules: - apiGroups: ["cluster.open-cluster-management.io"] resources: ["managedclustersets/bind"] resourceNames: ["clusterset1"] verbs: ["create"]
13.5. 为 ManagedClusterSet 分配用户或组基于角色的访问控制权限
您可以将用户或组分配给由 hub 集群上配置的身份提供程序提供的集群集合。
需要的访问权限:集群管理员
ManagedClusterSet
API 提供了两个级别的 RBAC 权限:
集群集
admin
- 对分配给受管集群集的所有集群和集群池资源具有完全访问权限。
- 创建集群、导入集群和创建集群池的权限。创建受管集群集时,必须将权限分配给受管集群集。
集群集
view
- 对分配给受管集群集的所有集群和集群池资源只读权限。
- 没有创建集群、导入集群或创建集群池的权限。
完成以下步骤,通过 Red Hat Advanced Cluster Management 控制台将用户或组分配给受管集群集:
- 在控制台的主导航菜单中选择 Infrastructure > Clusters。
- 选择 Cluster sets 选项卡。
- 选择您的目标集群集。
- 选择 Access management 选项卡。
- 选择 Add user or group。
- 搜索,然后选择您要提供访问权限的用户和组。
- 选择 Cluster set admin 或 Cluster set view 角色,赋予所选用户或用户组。如需有关角色权限的更多信息,请参阅角色概述。
- 选择 Add 以提交更改。
表中会显示您的用户或组。可能需要几秒钟后,分配到所有受管集群设置的资源的权限才会被传播到您的用户或组。
有关基于角色的操作的更多信息,请参阅基于角色的访问控制。
如需获得放置信息,请参阅使用带有放置的 ManagedClustersSet。
13.6. 在放置中使用 ManagedClusterSet
Placement
资源是一个命名空间范围的资源,它定义了一个规则来从 ManagedClusterSets
中选择 ManagedClusters
集合,它们绑定到放置命名空间。
需要的访问权限: Cluster administrator,Cluster set administrator
13.6.1. 放置概述
参阅以下有关使用受管集群放置的信息:
-
Kubernetes 集群在 hub 集群中注册,作为集群范围的
ManagedClusters
。 -
ManagedClusters
被组织到集群范围的ManagedClusterSets
中。 -
ManagedClusterSets
与工作负载命名空间绑定。 -
命名空间范围的
放置
指定ManagedClusterSet
的一个部分,用于选择潜在ManagedClusters
的工作集合。 使用标签和声明选择器从该工作集中选择
放置
。重要:如果没有绑定到放置命名空间的
ManagedClusterSet
绑定,Placement
不会选择ManagedCluster
。
Placement
规格包括以下字段:
ClusterSets
代表从中选择ManagedClusters
的ManagedClusterSets
。-
如果没有指定,则从绑定到放置命名空间的
ManagedClusterSets
中选择ManagedClusters
。 -
如果指定,
ManagedClusters
会从这个集合的交集和绑定到放置命名空间的ManagedClusterSets
中选择。
-
如果没有指定,则从绑定到放置命名空间的
NumberOfClusters
代表要选择的可以满足放置要求的ManagedClusters
数量。如果没有指定,则会选择满足放置要求的所有
ManagedClusters
。-
Predicates
代表一个 predicates 片段,用于选择带有标签和声明选择器的ManagedClusters
。predicate 是 ORed。
13.6.2. 放置示例
您需要通过在该命名空间中创建一个 ManagedClusterSetBinding
来最少将一个 ManagedClusterSet
绑定到一个命名空间。注:您需要在 managedclustersets/bind
的虚拟子资源上对 CREATE
进行基于角色的访问权限。请参见以下示例:
您可以使用
labelSelector
选择ManagedClusters
。请参阅以下示例,其中labelSelector
仅与带有标签vendor: OpenShift
的集群匹配:apiVersion: cluster.open-cluster-management.io/v1alpha1 kind: Placement metadata: name: placement1 namespace: ns1 spec: predicates: - requiredClusterSelector: labelSelector: matchLabels: vendor: OpenShift
您可以使用
claimSelector
选择ManagedClusters
。请参阅以下示例,其中claimSelector
仅与带有us-west-1
的region.open-cluster-management.io
的集群匹配:apiVersion: cluster.open-cluster-management.io/v1alpha1 kind: Placement metadata: name: placement2 namespace: ns1 spec: predicates: - requiredClusterSelector: claimSelector: matchExpressions: - key: region.open-cluster-management.io operator: In values: - us-west-1
您可以从特定的
clusterSets
中选择ManagedClusters
。请参阅以下示例,其中claimSelector
仅与clusterSets:
clusterset1
clusterset2
匹配:apiVersion: cluster.open-cluster-management.io/v1alpha1 kind: Placement metadata: name: placement3 namespace: ns1 spec: clusterSets: - clusterset1 - clusterset2 predicates: - requiredClusterSelector: claimSelector: matchExpressions: - key: region.open-cluster-management.io operator: In values: - us-west-1
选择所需的
ManagedClusters
数量。请参阅以下示例,其中numberOfClusters
为3
:apiVersion: cluster.open-cluster-management.io/v1alpha1 kind: Placement metadata: name: placement4 namespace: ns1 spec: numberOfClusters: 3 predicates: - requiredClusterSelector: labelSelector: matchLabels: vendor: OpenShift claimSelector: matchExpressions: - key: region.open-cluster-management.io operator: In values: - us-west-1
13.6.3. 放置决定
将创建一个或多个带有标签 cluster.open-cluster-management.io/placement={placement name}
的 PlacementDecisions
来代表由一个 Placement
选择的 ManagedClusters
。
如果选择了 ManagedCluster
并添加到 PlacementDecision
中,消耗此放置
的组件可能会在这个 ManagedCluster
上应用工作负载。当 ManagedCluster
不再被选择后,它会从 PlacementDecisions
中删除后,在此 ManagedCluster
上应用的工作负载也会被相应地删除。
请参阅以下 PlacementDecision
示例:
apiVersion: cluster.open-cluster-management.io/v1alpha1 kind: PlacementDecision metadata: labels: cluster.open-cluster-management.io/placement: placement1 name: placement1-kbc7q namespace: ns1 ownerReferences: - apiVersion: cluster.open-cluster-management.io/v1alpha1 blockOwnerDeletion: true controller: true kind: Placement name: placement1 uid: 05441cf6-2543-4ecc-8389-1079b42fe63e status: decisions: - clusterName: cluster1 reason: '' - clusterName: cluster2 reason: '' - clusterName: cluster3 reason: ''
第 14 章 管理集群池(技术预览)
集群池提供对按需和规模配置的 Red Hat OpenShift Container Platform 集群的快速、经济的访问。集群池在 Amazon Web Services、Google Cloud Platform 或 Microsoft Azure 上维护可配置且可扩展的 OpenShift Container Platform 集群,并在需要时声明这些集群。在为开发、持续集成和生产环境提供或替换集群环境时,它们特别有用。
ClusterClaim
资源用于从集群池中签出集群。从集群池中签出集群后,已签出的集群将恢复并进入就绪状态。集群池自动在集群池中创建一个休眠群集,以取代声明的群集。
注: 当从集群池中声明的集群不再需要并销毁时,资源会被删除。集群不会返回到集群池。
14.1. 创建集群池
创建集群池的过程与创建集群的步骤类似。在集群池中创建的集群不会供立即使用。
需要的访问权限:Administrator
14.1.1. 先决条件
创建集群池前必须满足以下先决条件:
- 已部署 Red Hat Advanced Cluster Management for Kubernetes hub 集群。
- 可通过互联网访问 Red Hat Advanced Cluster Management for Kubernetes hub 集群,以便它在供应商环境中创建 Kubernetes 集群。
- AWS、GCP 或 Microsoft Azure 供应商凭证。如需更多信息,请参阅管理凭证概述。
- 在您的提供程序环境中配置的域。有关如何配置域的说明,请参阅您的供应商文档。
- 提供程序登录凭据.
- OpenShift Container Platform 镜像 pull secret。请参阅使用镜像 pull secret。
14.1.2. 创建集群池
要创建集群池,请完成以下步骤:
- 在导航菜单中点 Infrastructure > Clusters。
- 选择 Cluster pool 选项卡来查看您可以访问的集群池。
- 选择 Create cluster pool。
- 为集群池选择基础架构供应商。
- 选择您要用于集群池的基础架构凭证。如果列表中不可用,您可以选择 Add credential 来创建它。
- 选择 Next 以继续集群池详情。
- 为集群池输入名称。
输入要创建集群池的命名空间。您可以从列表中选择现有命名空间,或者键入要创建新命名空间的名称。集群池不必与集群位于同一个命名空间中。
当您在集群集合中创建集群池时,
namespace admin
权限将应用到您添加集群池的命名空间中具有clusterset admin
权限的所有用户。同样,namespace view
权限也会应用到具有clusterset view
权限的用户。可选: 如果您希望集群池的 RBAC 角色共享现有集群集合的角色分配,请选择集群设置名称。
注:如果没有
cluster admin
权限,则必须选择一个集群集。如果您在此情形中没有包含集群集的名称,则创建集群集的请求将被拒绝,并带有禁止的错误。如果没有集群集可供选择,请联络您的集群管理员来创建集群集,并为您提供clusterset admin
权限。- 通过将数字添加到集群池大小,输入集群池中可用的集群数量。
- 选择 Next。
在剩余的步骤中输入所需的信息,以置备集群池。此时的步骤与创建集群的步骤相同。
有关您的供应商所需信息的详情,请查看以下信息:
- 输入所有信息后,选择 Create 来创建集群池。在池中至少有一个集群可用后,会出现一个 Claim cluster 按钮。
14.2. 从集群池中声明集群
ClusterClaim
资源用于从集群池中签出集群。从集群池中签出集群后,签出的集群将进入就绪状态。集群池自动在集群池中创建新的休眠群集,以取代声明的集群。
注: 当从集群池中声明的集群不再需要并销毁时,资源会被删除。集群不会返回到集群池。
需要的访问权限:Administrator
14.2.1. 前提条件
在从集群池中声明集群前,您必须有以下可用:
具有可用集群声明的集群池。如需有关如何创建集群池的信息,请参阅创建集群池。如果没有可用的集群可以声明,则不会显示 Claim cluster 按钮。
14.2.2. 从集群池中声明集群
要从集群池中签出集群,请恢复集群并将其声明为其中一个受管集群。完成以下步骤以声明集群:
- 在导航菜单中点 Infrastructure > Clusters。
- 选择 Cluster pools 选项卡。
- 从中查找您要声明集群的集群池的名称,然后选择 Claim cluster。
- 输入集群声明名称以帮助识别集群。
- 选择 Claim。
声明的集群会从休眠状态中恢复,并出现在 Managed Cluster 选项卡中,状态为 Resuming
。集群变为 Ready
状态后,集群就可以使用。
14.3. 扩展集群池
您可以通过增加或减少集群池中休眠集群的数量来更改集群池的大小。
需要的访问权限: 集群管理员
完成以下步骤以更改集群池中的集群数量:
- 在导航菜单中点 Infrastructure > Clusters。
- 选择 Cluster pools 选项卡。
- 在 Cluster pool 表中查找集群池的名称。
- 在您要更改的集群池的 Options 菜单中,选择 Scale cluster pool。
- 通过更改池大小的值来增加或缩小池大小。
- 选择 Scale 以提交更改。
集群池已扩展,以反映您的新值。
14.4. 更新集群池发行镜像
当集群中的集群保留在休眠状态一段时间时,集群的 Red Hat OpenShift Container Platform 发行镜像可能会变为 backlevel。如果发生这种情况,您可以升级集群池中集群的发行镜像版本。
需要的访问权限 : Edit
完成以下步骤,为集群池中的集群更新 OpenShift Container Platform 发行镜像:
注: 此流程不会从集群池中已声明或休眠的集群池中更新集群。完成此步骤后。只有创建并添加到集群池中的集群才会使用更新的发行镜像。
- 在导航菜单中点 Infrastructure > Clusters。
- 选择 Cluster pools 选项卡。
- 在 Cluster pool 表中找到您要更新的集群池的名称。
- 点 Options 菜单查看可用选项。
- 选择 Update release image。
- 从这个集群池中选择一个新的发行镜像,用于将来的集群创建。
- 选择 Update 以应用所选发行镜像。
- 集群池发行镜像已更新。
提示:您可以通过选择一个操作来更新多个集群池的发行镜像,方法是选择每个集群池的方框并使用 Actions 菜单来更新所选集群池的发行镜像。
14.5. 销毁一个集群池
如果您创建了集群池,并确定您不再需要它,您可以销毁集群池。当您销毁集群池时,所有未声明的休眠集群都会被销毁,并释放其资源。
需要的访问权限: 集群管理员
要销毁集群池,请完成以下步骤:
- 在导航菜单中点 Infrastructure > Clusters。
- 选择 Cluster pools 选项卡。
- 在 Cluster pool 表中查找集群池的名称。
- 单击 Options 菜单,以查看集群池的选项。
- 选择 Destroy cluster pool。
- 输入集群池的名称进行确认。
选择 Destroy 以删除集群池。销毁的集群池中的集群在销毁时会从控制台中删除。当集群从控制台中删除后,可能需要一些时间才可以删除所有资源。
在销毁集群池时,您必须手动删除其 secret。如果不删除 secret,则创建具有相同名称和命名空间的集群池会失败,因为新 secret 与现有 secret 冲突。
提示:您可以通过一个操作来销毁多个集群池,只需选择每个集群池的复选框,并使用 Actions 菜单销毁所选集群池。
集群池已删除。
第 15 章 ClusterClaims
ClusterClaim
是受管集群中的一个集群范围的自定义资源定义(CRD)。ClusterClaim 代表受管集群声明的一个信息片段。以下示例显示了 YAML 文件中标识的声明:
apiVersion: cluster.open-cluster-management.io/v1alpha1 kind: ClusterClaim metadata: name: id.openshift.io spec: value: 95f91f25-d7a2-4fc3-9237-2ef633d8451c
下表显示了 Red Hat Advanced Cluster Management for Kubernetes 管理的集群中可能会定义的 ClusterClaims:
声明名称 | 保留 | 可变 | 描述 |
---|---|---|---|
| true | false | 在上游社区定义的 ClusterID |
| true | true | Kubernetes 版本 |
| true | false | 运行受管集群的平台,如 AWS、GCE 和 Equinix Metal |
| true | false | 产品名称,如 OpenShift、Anthos、EKS 和 GKE |
| false | false | OpenShift Container Platform 外部 ID,它仅适用于 OpenShift Container Platform 集群 |
| false | true | 管理控制台的 URL,仅适用于 OpenShift Container Platform 集群 |
| false | true | OpenShift Container Platform 版本,它仅适用于 OpenShift Container Platform 集群 |
如果在受管集群中删除或更新之前的声明,它们会自动恢复或回滚到上一版本。
在受管集群加入 hub 后,在受管集群上创建的 ClusterClaims 与 hub 上的 ManagedCluster
资源的状态同步。带有 ClusterClaims 的受管集群可能类似以下示例:
apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: labels: cloud: Amazon clusterID: 95f91f25-d7a2-4fc3-9237-2ef633d8451c installer.name: multiclusterhub installer.namespace: open-cluster-management name: cluster1 vendor: OpenShift name: cluster1 spec: hubAcceptsClient: true leaseDurationSeconds: 60 status: allocatable: cpu: '15' memory: 65257Mi capacity: cpu: '18' memory: 72001Mi clusterClaims: - name: id.k8s.io value: cluster1 - name: kubeversion.open-cluster-management.io value: v1.18.3+6c42de8 - name: platform.open-cluster-management.io value: AWS - name: product.open-cluster-management.io value: OpenShift - name: id.openshift.io value: 95f91f25-d7a2-4fc3-9237-2ef633d8451c - name: consoleurl.openshift.io value: 'https://console-openshift-console.apps.xxxx.dev04.red-chesterfield.com' - name: version.openshift.io value: '4.5' conditions: - lastTransitionTime: '2020-10-26T07:08:49Z' message: Accepted by hub cluster admin reason: HubClusterAdminAccepted status: 'True' type: HubAcceptedManagedCluster - lastTransitionTime: '2020-10-26T07:09:18Z' message: Managed cluster joined reason: ManagedClusterJoined status: 'True' type: ManagedClusterJoined - lastTransitionTime: '2020-10-30T07:20:20Z' message: Managed cluster is available reason: ManagedClusterAvailable status: 'True' type: ManagedClusterConditionAvailable version: kubernetes: v1.18.3+6c42de8
15.1. 列出现有 ClusterClaims
您可以使用 kubectl
命令列出应用到受管集群的 ClusterClaims。当您要将 ClusterClaim 与错误消息进行比较时,这很有用。
备注:您需要具有 clusterclaims.cluster.open-cluster-management.io
资源的 list
权限。
运行以下命令列出受管集群中的所有现有 ClusterClaims:
kubectl get clusterclaims.cluster.open-cluster-management.io
15.2. 创建自定义 ClusterClaims
您可以使用受管集群上的自定义名称创建 ClusterClaims,这样可更轻松地识别它们。自定义 ClusterClaims 会与 hub 集群上的 ManagedCluster
资源进行同步。以下内容显示了自定义 ClusterClaim
的定义示例:
apiVersion: cluster.open-cluster-management.io/v1alpha1 kind: ClusterClaim metadata: name: <custom_claim_name> spec: value: <custom_claim_value>
字段 spec.value
的最大长度为 1024。创建 ClusterClaim 需要资源 clusterclaims.cluster.open-cluster-management.io
的 create
权限。
第 16 章 发现服务简介(技术预览)
您可以发现 OpenShift Cluster Manager 中可用的 OpenShift 4 集群。发现后,您可以导入集群进行管理。发现服务使用 Discover Operator 进行后端和控制台使用。
您必须具有 OpenShift Cluster Manager 凭据。如果需要创建凭证,请参阅为 Red Hat OpenShift Cluster Manager 创建凭证。
需要的访问权限:Administrator
16.1. 使用控制台配置发现(技术预览)
使用产品控制台启用发现。
需要的访问权限:访问创建凭证的命名空间。
16.1.1. 先决条件
- 您需要一个凭证。请参阅为 Red Hat OpenShift Cluster Manager 创建凭证以连接到 OpenShift Cluster Manager。
16.1.2. 配置发现
在控制台中配置 Discovery 以查找集群。您可以使用单独的凭证创建多个 DiscoveryConfig
资源。
如果您是首次使用发现功能,请参阅以下步骤:
- 在控制台导航中点 Clusters。
- 单击 Configure Discovery 以配置发现设置。
选择命名空间和凭证。
- 选择包含凭证的命名空间。
- 选择该命名空间中的凭证。
将过滤器设置为发现相关集群。
- 为最新活跃集群选择过滤器。例如,如果您选择 7 天,则会搜索在前 7 天中活跃的集群。
- 选择 Red Hat OpenShift 版本。
- 点击 Add。
- 从 Clusters 页面查看控制台中发现的集群。
- 可选:点 Create discovery settings 创建更多集群。
- 可选:点 Configure discovery settings 更改或删除发现设置。
16.2. 使用 CLI 启用发现(技术预览)
使用 CLI 启用发现以查找 Red Hat OpenShift Cluster Manager(链接)可用的集群。
需要的访问权限:Administrator
16.2.1. 先决条件
- 创建用于连接到 Red Hat OpenShift Cluster Manager 的凭证。
16.2.2. 发现设置和进程
注: DiscoveryConfig
必须命名为 discovery
,且必须与所选凭证
在同一命名空间中创建。请参见以下 DiscoveryConfig
示例:
apiVersion: discovery.open-cluster-management.io/v1alpha1 kind: DiscoveryConfig metadata: name: discovery namespace: <NAMESPACE_NAME> spec: credential: <SECRET_NAME> filters: lastActive: 7 openshiftVersions: - "4.8" - "4.7" - "4.6" - "4.5"
-
将
SECRET_NAME
替换为之前设置的凭证。 -
将
NAMESPACE_NAME
替换为SECRET_NAME
的命名空间。 -
输入集群最后一次活动(以天为单位)进行发现的最大时间。例如,
lastActive: 7
表示只发现最后 7 天中活跃的集群。 -
输入要作为字符串列表发现的 Red Hat OpenShift 集群的版本。注:
openshiftVersions
列表中的每个条目都指定了一个 OpenShift 主版本和次版本。例如,指定"4.7"
将包括 OpenShift 版本4.7
(4.7.1
、4.7.2
等) 的所有补丁版本。
16.2.3. 查看发现的集群
通过运行 oc get discoveredclusters -n <namespace>
(其中 namespace
是发现凭证存在的命名空间)来查看发现的集群。
16.2.3.1. DiscoveredClusters
对象由 Discovery 控制器创建。这些 DiscoveredClusters
使用在 DiscoveryConfig
discoveredclusters.discovery.open-cluster-management.io
API 中指定的过滤器和凭证来代表 OpenShift Cluster Manager 中找到的集群。name
的值是集群外部 ID:
apiVersion: discovery.open-cluster-management.io/v1alpha1 kind: DiscoveredCluster metadata: name: fd51aafa-95a8-41f7-a992-6fb95eed3c8e namespace: <NAMESPACE_NAME> spec: activity_timestamp: "2021-04-19T21:06:14Z" cloudProvider: vsphere console: https://console-openshift-console.apps.qe1-vmware-pkt.dev02.red-chesterfield.com creation_timestamp: "2021-04-19T16:29:53Z" credential: apiVersion: v1 kind: Secret name: <SECRET_NAME> namespace: <NAMESPACE_NAME> display_name: qe1-vmware-pkt.dev02.red-chesterfield.com name: fd51aafa-95a8-41f7-a992-6fb95eed3c8e openshiftVersion: 4.6.22 status: Stale
16.3. 查看发现的集群(技术预览)
在设置凭证并发现集群以导入后,您可以在控制台中查看它们。
- 点 Cluster > Discovered cluster
使用以下信息查看填充的表:
- Name 是 OpenShift Cluster Manager 中指定的显示名称。如果集群没有显示名称,则会显示基于集群控制台 URL 生成的名称。如果 OpenShift Cluster Manager 缺少控制台URL,或手动修改了控制台 URL,则会显示集群外部 ID。
- Namespace 是您创建凭证和发现集群的命名空间。
- Type 是发现的集群 Red Hat OpenShift 类型。
- Distribution version 是发现的集群 Red Hat OpenShift 版本。
- 基础架构供应商是已发现集群的云供应商。
- 最后活跃是发现的集群最后一次活跃的时间。
- 当发现的集群被创建时为 Created 。
- 当发现的集群被发现时为 Discovered。
- 您还可以搜索表中的任何信息。例如,要只显示特定命名空间中的发现集群,请搜索该命名空间。
- 现在,您可以点 Import cluster 创建受管集群。请参阅导入发现的集群。
16.4. 导入发现的集群(技术预览)
发现集群后,您可以导入控制台的 Discovered clusters 选项卡中出现的集群。
16.4.1. 先决条件
您需要访问用于配置 Discovery 的命名空间。
16.4.2. 导入发现的集群
- 进入到现有 Clusters 页面并点 Discovered clusters 选项卡。
- 在发现的集群表中找到您要导入的集群。
- 在选项菜单中选择 Import cluster。
- 对于发现的集群,您可以使用文档手动导入,或者您可以自动选择导入集群。
- 要使用凭证或 Kubeconfig 文件自动导入,请复制并粘贴内容。
- 点 Import。
第 17 章 升级集群
创建要通过 Red Hat Advanced Cluster Management for Kubernetes 管理的 Red Hat OpenShift Container Platform 集群后,您可以使用 Red Hat Advanced Cluster Management for Kubernetes 控制台将这些集群升级到受管集群使用的版本频道中可用的最新次版本。
在连接的环境中,会在 Red Hat Advanced Cluster Management 控制台中为需要升级的每个集群自动识别更新。
在断开连接的环境中升级集群的过程需要一些额外的步骤来配置和镜像所需的发行镜像。它使用 Red Hat OpenShift Update Service 的 operator 来识别升级。如果您位于断开连接的环境中,请参阅 升级断开连接的集群以了解所需步骤。
注: 要升级到主要版本,您必须确定是否满足升级到该版本的所有先决条件。在可以使用控制台升级集群前,您必须更新受管集群上的版本频道。更新受管集群上的版本频道后,Red Hat Advanced Cluster Management for Kubernetes 控制台会显示可用于升级的最新版本。
重要:您无法使用 Red Hat Advanced Cluster Management for Kubernetes 控制台在 Red Hat OpenShift Dedicated 上升级 Red Hat OpenShift Kubernetes Service 受管集群或 OpenShift Container Platform 受管集群。
此升级方法只适用于处于 Ready 状态的 OpenShift Container Platform 受管集群。
要在连接的环境中升级集群,请完成以下步骤:
- 通过导航菜单进入 Infrastructure > Clusters。如果有可用的升级,会在 Distribution version 列中显示。
- 选择您要升级的集群。请记住:集群必须处于 Ready 状态,且必须是 Red Hat OpenShift Container Platform 集群,才能使用控制台进行升级。
- 选择 Upgrade。
- 选择每个集群的新版本。
- 选择 Upgrade。
如果集群升级失败,Operator 通常会重试升级,停止并报告故障组件的状态。在某些情况下,升级过程会一直通过尝试完成此过程进行循环。不支持在失败的升级后将集群还原到以前的版本。如果您的集群升级失败,请联系红帽支持以寻求帮助。
17.1. 选择一个频道
您可以使用 Red Hat Advanced Cluster Management 控制台为 OpenShift Container Platform 版本 4.6 或更高版本上的集群升级选择一个频道。选择了频道后,会自动评估 z-stream 版本(4.8.1 > 4.8.2 > 4.8.3 等)和 y-stream 版本(4.7 > 4.8.8 等)和 y-stream 版本(4.7 > 4.8 等)。
要为集群选择频道,请完成以下步骤:
- 在 Red Hat Advanced Cluster Management 导航中选择 Infrastructure > Clusters。
- 选择要更改的集群名称来查看 Cluster details 页面。如果集群有一个不同的频道,则 Channel 字段中会显示一个编辑图标。
- 点编辑图标,以修改字段中的设置。
- 在 New channel 字段中选择一个频道。
- 点 Save 以提交您的更改。
您可以在集群的 Cluster details 页中找到有关可用频道更新的提示信息。
17.2. 升级断开连接的集群
您可以将 Red Hat OpenShift Update Service 与 Red Hat Advanced Cluster Management for Kubernetes 搭配使用,以便在断开连接的环境中升级您的集群。
在某些情况下,安全性考虑会阻止集群直接连接到互联网。这使得您很难知道什么时候可以使用升级,以及如何处理这些升级。配置 OpenShift Update Service 可能会有所帮助。
OpenShift Update Service 是一个独立的操作对象,它监控受管集群在断开连接的环境中的可用版本,并使其可用于在断开连接的环境中升级集群。配置 OpenShift Update Service 后,它可以执行以下操作:
- 监测何时有适用于断开连接的集群的升级。
- 使用图形数据文件识别哪些更新需要被镜像到您的本地站点进行升级。
使用 Red Hat Advanced Cluster Management 控制台通知您的集群可以使用升级。
17.2.1. 先决条件
您必须满足以下先决条件,才能使用 OpenShift Update Service 升级断开连接的集群:
已部署了一个在 Red Hat OpenShift Container Platform 版本 4.6 或更高版本上运行的 Red Hat Advanced Cluster Management hub 集群,并配置了受限 OLM。如需了解如何配置受限 OLM 的详细信息,请参阅在受限网络中使用 Operator Lifecycle Manager。
提示: 配置受限 OLM 时请记录目录源镜像。
- 由 Red Hat Advanced Cluster Management hub 集群管理的 OpenShift Container Platform 集群
访问您可以镜像集群镜像的本地存储库的凭证。如需有关如何创建此存储库的更多信息,请参阅为断开连接的安装镜像镜像。
注: 您升级的集群当前版本的镜像必须始终作为镜像的一个镜像可用。如果升级失败,集群会在试图升级时恢复到集群的版本。
17.2.2. 准备断开连接的镜像 registry
您必须镜像要升级到的镜像,以及您要从本地镜像 registry 升级到的当前镜像。完成以下步骤以镜像镜像:
创建一个包含类似以下示例内容的脚本文件:
UPSTREAM_REGISTRY=quay.io PRODUCT_REPO=openshift-release-dev RELEASE_NAME=ocp-release OCP_RELEASE=4.5.2-x86_64 LOCAL_REGISTRY=$(hostname):5000 LOCAL_SECRET_JSON=/path/to/pull/secret oc adm -a ${LOCAL_SECRET_JSON} release mirror \ --from=${UPSTREAM_REGISTRY}/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE} \ --to=${LOCAL_REGISTRY}/ocp4 \ --to-release-image=${LOCAL_REGISTRY}/ocp4/release:${OCP_RELEASE}
将
/path/to/pull/secret
替换为 OpenShift Container Platform pull secret 的路径。- 运行该脚本来对镜像进行镜像、配置设置并将发行镜像与发行内容分开。
提示: 在创建 ImageContentSourcePolicy
时,您可以使用此脚本最后一行的输出。
17.2.3. 为 OpenShift Update Service 部署 Operator
要在 OpenShift Container Platform 环境中为 OpenShift Update Service 部署 Operator,请完成以下步骤:
- 在 hub 集群中,访问 OpenShift Container Platform operator hub。
-
选择
Red Hat OpenShift Update Service Operator
来部署 Operator。如果需要,更新默认值。Operator 的部署会创建一个名为openshift-cincinnati
的新项目。 等待 Operator 的安装完成。
提示: 您可以通过在 OpenShift Container Platform 命令行中输入
oc get pods
命令来检查安装的状态。验证 Operator 是否处于running
状态。
17.2.4. 构建图形数据 init 容器
OpenShift Update Service 使用图形数据信息来决定可用的升级。在连接的环境中,OpenShift Update Service 会直接从 Cincinnati 图形数据GitHub 仓库中提取可用于升级的图形数据信息。由于要配置断开连接的环境,所以必须使用 init 容器
使图形数据在本地存储库中可用。完成以下步骤以创建图形数据 init 容器
:
输入以下命令克隆 graph data Git 存储库:
git clone https://github.com/openshift/cincinnati-graph-data
创建一个包含您的图形数据
init
信息的文件。您可以在cincinnati-operator GitHub
仓库中找到此 Dockerfile 示例。该文件的内容在以下示例中显示:FROM registry.access.redhat.com/ubi8/ubi:8.1 RUN curl -L -o cincinnati-graph-data.tar.gz https://github.com/openshift/cincinnati-graph-data/archive/master.tar.gz RUN mkdir -p /var/lib/cincinnati/graph-data/ CMD exec /bin/bash -c "tar xvzf cincinnati-graph-data.tar.gz -C /var/lib/ cincinnati/graph-data/ --strip-components=1"
在此例中:
-
FROM
值是 OpenShift Update Service 查找镜像的外部 registry。 -
RUN
命令创建目录并打包升级文件。 -
CMD
命令将软件包文件复制到本地库并提取文件进行升级。
-
运行以下命令来构建
图形数据 init 容器
:podman build -f <path_to_Dockerfile> -t ${DISCONNECTED_REGISTRY}/cincinnati/cincinnati-graph-data-container:latest podman push ${DISCONNECTED_REGISTRY}/cincinnati/cincinnati-graph-data-container:latest --authfile=/path/to/pull_secret.json
将 path_to_Dockerfile 替换为您在上一步中创建文件的路径。
将 ${DISCONNECTED_REGISTRY}/cincinnati/cincinnati-graph-data-container 替换为 graph data init 容器的路径。
将 /path/to/pull_secret 替换为 pull secret 文件的路径。
注: 如果没有安装
podman
,您也可以将命令中的podman
替换为docker
。
17.2.5. 为已镜像的 registry 配置证书
如果您使用安全的外部容器 registry 来存储已镜像的 OpenShift Container Platform 发行镜像,OpenShift Update Service 需要访问此 registry 来构建升级图。完成以下步骤以配置您的 CA 证书以用于 OpenShift Update Service Pod:
查找位于
image.config.openshift.io
的 OpenShift Container Platform 外部 registry API。这是存储外部 registry CA 证书的位置。如需更多信息,请参阅 OpenShift Container Platform 文档中的配置额外的信任存储以访问镜像 registry。
-
在
openshift-config
命名空间中创建 ConfigMap。 在密钥
cincinnati-registry
中添加您的 CA 证书。OpenShift Update Service 使用此设置来定位您的证书:apiVersion: v1 kind: ConfigMap metadata: name: trusted-ca data: cincinnati-registry: | -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
编辑
image.config.openshift.io
API 中的cluster
资源,将additionalTrustedCA
字段设置为您创建的 ConfigMap 的名称。oc patch image.config.openshift.io cluster -p '{"spec":{"additionalTrustedCA":{"name":"trusted-ca"}}}' --type merge
将
trusted-ca
替换为新 ConfigMap 的路径。
OpenShift Update Service Operator 会监视 image.config.openshift.io
API 和您在 openshift-config
命名空间中创建的 ConfigMap 以获取更改,然后在 CA 证书已更改时重启部署。
17.2.6. 部署 OpenShift Update Service 实例
当在 hub 集群上完成 OpenShift Update Service 实例部署时,此实例就位于集群升级的镜像镜像位置,并可供断开连接的受管集群使用。完成以下步骤以部署实例:
如果您不想使用 Operator 的默认命名空间(
openshift-cincinnati
), 为 OpenShift Update Service 实例创建一个命名空间:- 在 OpenShift Container Platform hub 集群控制台导航菜单中,选择 Administration > Namespaces。
- 点 Create Namespace。
- 添加命名空间的名称以及您的命名空间的任何其他信息。
- 选择 Create 来创建命名空间。
- 在 OpenShift Container Platform 控制台的 Installed Operators 部分中,选择 Red Hat OpenShift Update Service Operator。
- 在菜单中选择 Create Instance。
粘贴 OpenShift Update Service 实例中的内容。您的 YAML 实例可能类似以下清单:
apiVersion: cincinnati.openshift.io/v1beta2 kind: Cincinnati metadata: name: openshift-update-service-instance namespace: openshift-cincinnati spec: registry: <registry_host_name>:<port> replicas: 1 repository: ${LOCAL_REGISTRY}/ocp4/release graphDataImage: '<host_name>:<port>/cincinnati-graph-data-container'
将
spec.registry
值替换为镜像的本地断开连接 registry 的路径。将
spec.graphDataImage
值替换为图形数据 init 容器的路径。提示: 这与运行podman push
命令来推送图形数据 init 容器时使用的值相同。- 选择 Create 来创建实例。
-
在 hub 集群 CLI 中输入
oc get pods
命令来查看实例创建的状态。它可能需要一段时间,但当命令结果显示实例和运算符正在运行时,进程就会完成。
17.2.7. 部署策略以覆盖默认 registry(可选)
注: 本节中的步骤只在将发行版本镜像到您的镜像 registry 时才应用。
OpenShift Container Platform 具有一个默认的镜像 registry 值,用于指定它找到升级软件包的位置。在断开连接的环境中,您可以创建一个策略来替换该值,并将该值替换为您对发行版本镜像进行镜像的本地镜像 registry 的路径。
对于这些步骤,策略名为 ImageContentSourcePolicy。完成以下步骤以创建策略:
- 登录到 hub 集群的 OpenShift Container Platform 环境。
- 在 OpenShift Container Platform 导航中,选择 Administration > Custom Resource Definitions。
- 选择 Instances 选项卡。
- 选择设置断开连接的 OLM 时创建的 ImageContentSourcePolicy 名称,以查看其内容。
-
选择 YAML 选项卡以
YAML
格式查看内容。 - 复制 ImageContentSourcePolicy 的整个内容。
- 在 Red Hat Advanced Cluster Management 控制台中选择 Governance > Create policy。
-
将
YAML
切换设置为 On 以查看策略的 YAML 版本。 -
删除
YAML
代码中的所有内容。 将以下
YAML
内容粘贴到窗口以创建自定义策略:apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: policy-pod namespace: default annotations: policy.open-cluster-management.io/standards: policy.open-cluster-management.io/categories: policy.open-cluster-management.io/controls: spec: disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-pod-sample-nginx-pod spec: object-templates: - complianceType: musthave objectDefinition: apiVersion: v1 kind: Pod metadata: name: sample-nginx-pod namespace: default status: phase: Running remediationAction: inform severity: low remediationAction: enforce --- apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding-policy-pod namespace: default placementRef: name: placement-policy-pod kind: PlacementRule apiGroup: apps.open-cluster-management.io subjects: - name: policy-pod kind: Policy apiGroup: policy.open-cluster-management.io --- apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: name: placement-policy-pod namespace: default spec: clusterConditions: - status: "True" type: ManagedClusterConditionAvailable clusterSelector: matchExpressions: [] # selects all clusters if not specified
将模板
objectDefinition
部分中的内容替换为类似以下内容的内容,以添加 ImageContentSourcePolicy 的设置:apiVersion: operator.openshift.io/v1alpha1 kind: ImageContentSourcePolicy metadata: name: ImageContentSourcePolicy spec: repositoryDigestMirrors: - mirrors: - <path-to-local-mirror> source: registry.redhat.io
-
将
path-to-local-mirror
替换为您的本地 mirror repository 的路径。 -
提示: 您可以通过输入
oc adm release mirror
命令来查找到本地镜像的路径。
-
将
- 选择 Enforce if supported。
- 选择 Create 来创建策略。
17.2.8. 部署策略来部署断开连接的目录源
将 Catalogsource 策略推送到受管集群,将默认位置从连接的位置更改为您断开连接的本地 registry。
- 在 Red Hat Advanced Cluster Management 控制台中,选择 Infrastructure > Clusters。
- 在集群列表中找到要接收策略的受管集群。
-
记录下受管集群
name
标签的值。标签格式为name=managed-cluster-name
。该值会在推送策略时使用。 - 在 Red Hat Advanced Cluster Management 控制台菜单中,选择 Governance > Create policy。
-
将
YAML
切换设置为 On 以查看策略的 YAML 版本。 -
删除
YAML
代码中的所有内容。 -
将以下
YAML
内容粘贴到窗口以创建自定义策略: 将以下
YAML
内容粘贴到窗口以创建自定义策略:apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: policy-pod namespace: default annotations: policy.open-cluster-management.io/standards: policy.open-cluster-management.io/categories: policy.open-cluster-management.io/controls: spec: disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-pod-sample-nginx-pod spec: object-templates: - complianceType: musthave objectDefinition: apiVersion: v1 kind: Pod metadata: name: sample-nginx-pod namespace: default status: phase: Running remediationAction: inform severity: low remediationAction: enforce --- apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding-policy-pod namespace: default placementRef: name: placement-policy-pod kind: PlacementRule apiGroup: apps.open-cluster-management.io subjects: - name: policy-pod kind: Policy apiGroup: policy.open-cluster-management.io --- apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: name: placement-policy-pod namespace: default spec: clusterConditions: - status: "True" type: ManagedClusterConditionAvailable clusterSelector: matchExpressions: [] # selects all clusters if not specified
在策略中添加以下内容:
apiVersion: config.openshift.io/vi kind: OperatorHub metadata: name: cluster spec: disableAllDefaultSources: true
添加以下内容:
apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: my-operator-catalog namespace: openshift-marketplace spec: sourceType: grpc image: <registry_host_name>:<port>/olm/redhat-operators:v1 displayName: My Operator Catalog publisher: grpc
将 spec.image 值替换为本地受限目录源镜像的路径。
-
在 Red Hat Advanced Cluster Management 控制台导航中,选择 Infrastructure > Clusters 以检查受管集群的状态。应用策略时,集群状态为
ready
。
17.2.9. 部署策略以更改受管集群参数
将 ClusterVersion 策略推送到受管集群,以更改其检索升级的默认位置。
在受管集群中,输入以下命令确认 ClusterVersion upstream 参数目前是默认公共 OpenShift Update Service 操作对象:
oc get clusterversion -o yaml
返回的内容可能类似以下内容:
apiVersion: v1 items: - apiVersion: config.openshift.io/v1 kind: ClusterVersion [..] spec: channel: stable-4.4 upstream: https://api.openshift.com/api/upgrades_info/v1/graph
在 hub 集群中,输入以下命令来识别到 OpenShift Update Service 操作对象:
oc get routes
。提示: 记录这个值以便在以后的步骤中使用。
- 在 hub 集群 Red Hat Advanced Cluster Management 控制台菜单中,选择 Governance > Create a policy。
-
将
YAML
切换设置为 On 以查看策略的 YAML 版本。 -
删除
YAML
代码中的所有内容。 将以下
YAML
内容粘贴到窗口以创建自定义策略:apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: policy-pod namespace: default annotations: policy.open-cluster-management.io/standards: policy.open-cluster-management.io/categories: policy.open-cluster-management.io/controls: spec: disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-pod-sample-nginx-pod spec: object-templates: - complianceType: musthave objectDefinition: apiVersion: v1 kind: Pod metadata: name: sample-nginx-pod namespace: default status: phase: Running remediationAction: inform severity: low remediationAction: enforce --- apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding-policy-pod namespace: default placementRef: name: placement-policy-pod kind: PlacementRule apiGroup: apps.open-cluster-management.io subjects: - name: policy-pod kind: Policy apiGroup: policy.open-cluster-management.io --- apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: name: placement-policy-pod namespace: default spec: clusterConditions: - status: "True" type: ManagedClusterConditionAvailable clusterSelector: matchExpressions: [] # selects all clusters if not specified
将以下内容添加到 policy 项中的
policy.spec
部分:apiVersion: config.openshift.io/v1 kind: ClusterVersion metadata: name: version spec: channel: stable-4.4 upstream: https://example-cincinnati-policy-engine-uri/api/upgrades_info/v1/graph
将 spec.upstream 值替换为 hub 集群 OpenShift Update Service 操作对象的路径。
提示: 您可以完成以下步骤以确定操作对象的路径:
-
在 hub 集群上运行
oc get get routes -A
命令。 -
找到到
cincinnati
的路由。+ 到操作对象的路径是HOST/PORT
字段的值。
-
在 hub 集群上运行
在受管集群 CLI 中,使用以下命令确认
ClusterVersion
中的上游参数已使用本地 hub 集群 OpenShift Update Service URL 更新:oc get clusterversion -o yaml
结果应该类似以下内容:
apiVersion: v1 items: - apiVersion: config.openshift.io/v1 kind: ClusterVersion [..] spec: channel: stable-4.4 upstream: https://<hub-cincinnati-uri>/api/upgrades_info/v1/graph
17.2.10. 查看可用升级
您可以通过完成以下步骤来查看受管集群可用升级列表:
- 登录您的 Red Hat Advanced Cluster Management 控制台。
- 在导航菜单中选择 Infrastructure > Clusters。
- 选择处于 Ready 状态的一个集群。
- 在 Actions 菜单中选择 Upgrade cluster。
验证可选的升级路径是否可用。
注: 如果当前版本没有镜像到本地镜像存储库,则不会显示可用的升级版本。
17.2.11. 选择一个频道
您可以使用 Red Hat Advanced Cluster Management 控制台为 OpenShift Container Platform 版本 4.6 或更高版本上的集群升级选择一个频道。这些版本必须在镜像 registry 上可用。完成选择频道中的步骤为您的升级指定频道。
17.2.12. 升级集群
配置断开连接的 registry 后,Red Hat Advanced Cluster Management 和 OpenShift Update Service 使用断开连接的 registry 来确定升级是否可用。如果没有可用的升级,请确保您有集群当前级别的发行镜像,且至少有一个后续级别的镜像位于本地存储库中。如果集群当前版本的发行镜像不可用,则没有可用的升级。
完成以下步骤进行升级:
- 在 Red Hat Advanced Cluster Management 控制台中,选择 Infrastructure > Clusters。
- 查找您要确定是否有可用的升级的集群。
- 如果有可用的升级,集群的 Distribution version 栏表示有可用的升级可用。
- 选择集群的 Options 菜单,然后选择 Upgrade cluster。
- 为升级选择目标版本,然后选择 Upgrade。
受管集群已更新至所选版本。
如果集群升级失败,Operator 通常会重试升级,停止并报告故障组件的状态。在某些情况下,升级过程会一直通过尝试完成此过程进行循环。不支持在失败的升级后将集群还原到以前的版本。如果您的集群升级失败,请联系红帽支持以寻求帮助。
第 18 章 从管理中移除集群
当您从管理中删除通过 Red Hat Advanced Cluster Management for Kubernetes 创建的 OpenShift Container Platform 集群时,您可以将其分离(detach)或销毁(destroy)。
分离集群会将其从管理中移除,但不会完全删除。如果要管理它,您可以再次导入它。只有集群处于 Ready 状态时方可使用这个选项。
重要:
- 销毁集群会将其从管理中移除,并删除集群的组件。
当您分离受管集群时,相关命名空间会自动被删除。不要在此命名空间中放置自定义资源。
18.1. 使用控制台删除集群
- 通过导航菜单进入 Infrastructure > Clusters。
- 选择您要从管理中删除的集群旁边的选项菜单。
选择 Destroy cluster 或 Detach cluster。
提示: 您可以通过选择要分离或销毁的集群的复选框来分离或销毁多个集群。然后选择 Detach 或 Destroy。
注意: 如果您试图分离名为 local-cluster
的 hub 集群,请注意 disableHub selfManagement
的默认设置为 false
。此设置会导致 hub 集群在分离时会重新导入自己并管理自己,并协调 MultiClusterHub
控制器。hub 集群可能需要几小时时间来完成分离过程并重新导入。如果要在等待进程完成后重新导入 hub 集群,您可以输入以下命令来重启 multiclusterhub-operator
pod 并更快地重新导入:
oc delete po -n open-cluster-management `oc get pod -n open-cluster-management | grep multiclusterhub-operator| cut -d' ' -f1`
您可以通过将 disableHubSelfManagement
值改为 true
来更改 hub 集群的值,如在线安装所述。
18.2. 使用命令行删除集群
要使用 hub 集群的命令行分离受管集群,请运行以下命令:
oc delete managedcluster $CLUSTER_NAME
注意: 如果您试图分离名为 local-cluster
的 hub 集群,请注意 disableHub selfManagement
的默认设置为 false
。此设置会导致 hub 集群在分离时会重新导入自己并管理自己,并协调 MultiClusterHub
控制器。hub 集群可能需要几小时时间来完成分离过程并重新导入。如果要在等待进程完成后重新导入 hub 集群,您可以输入以下命令来重启 multiclusterhub-operator
pod 并更快地重新导入:
oc delete po -n open-cluster-management `oc get pod -n open-cluster-management | grep multiclusterhub-operator| cut -d' ' -f1`
您可以通过将 disableHubSelfManagement
值改为 true
来更改 hub 集群的值,如在线安装所述。
18.3. 在删除集群后删除剩余的资源
如果受管集群上有剩余的资源,则需要额外的步骤以确保删除所有剩余的组件。需要这些额外步骤的情况,包括以下示例:
-
受管集群在完全创建前会被分离,但
klusterlet
等一些组件会保留在受管集群中。 - 在分离受管集群前,管理集群的 hub 丢失或销毁,因此无法从 hub 中分离受管集群。
- 当受管集群被分离后,受管集群将处于非在线状态。
如果其中一个情况适用于您试图分离的受管集群,则有些资源将无法从受管集群中删除。完成以下步骤以分离受管集群:
-
确保配置了
oc
命令行界面。 确保您在受管集群中配置了
KUBECONFIG
。如果运行
oc get ns | grep open-cluster-management-agent
,您应该看到两个命名空间:open-cluster-management-agent Active 10m open-cluster-management-agent-addon Active 10m
-
从
deploy
Git 存储库下载cleanup-managed-cluster
脚本。 输入以下命令运行
cleanup-managed-cluster.sh
脚本:./cleanup-managed-cluster.sh
运行以下命令以确保这两个命名空间被删除:
oc get ns | grep open-cluster-management-agent
18.4. 删除集群后对 etcd 数据库进行碎片整理
拥有多个受管集群可能会影响 hub 集群中 etcd
数据库的大小。在 OpenShift Container Platform 4.8 中,当删除受管集群时,hub 集群中的 etcd
数据库不会被自动减小。在某些情况下,etcd
数据库可能会耗尽空间。此时会显示一个错误 etcdserver: mvcc: database space exceeded
。要更正此错误,请通过压缩数据库历史记录并对 etcd
数据库进行碎片整理来减小 etcd
数据库的大小。
注: 对于 OpenShift Container Platform 版本 4.9 及更新的版本,etcd Operator 会自动清理磁盘并压缩 etcd
历史记录。不需要人工干预。以下流程适用于 OpenShift Container Platform 版本 4.8 及更早版本。
通过完成以下步骤,压缩 etcd
历史记录并整理 hub 集群中 etcd
数据库的碎片。
18.4.1. 先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。
18.4.2. 流程
压缩
etcd
历史记录。打开到
etcd
成员的远程 shell 会话,例如:$ oc rsh -n openshift-etcd etcd-control-plane-0.example.com etcdctl endpoint status --cluster -w table
运行以下命令来压缩
etcd
历史记录:sh-4.4#etcdctl compact $(etcdctl endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9]*' -m1)
输出示例
$ compacted revision 158774421
-
清理
etcd
数据库并清除任何NOSPACE
警报,如分离etcd
数据 中所述。