集群
第 1 章 集群生命周期架构
Red Hat Advanced Cluster Management for Kubernetes 有两个主要集群:hub clusters(中心集群)和managed clusters(受管集群),它们由 multicluster engine for Kubernetes operator 创建和管理。请参阅 Kubernetes 的多集群引擎概述,其中包括从安装到故障排除的所有内容。
要在集群生命周期阶段继续添加和管理集群,您必须使用 multicluster engine operator 集群生命周期概述以及该 Operator 的所有文档。
您的集群是使用带有 Hive 资源的 Red Hat OpenShift Container Platform 集群安装程序创建的。请参阅 OpenShift Container Platform 文档中的有关在 OpenShift Container Platform 安装概述中安装集群的过程的更多信息。
集群生命周期管理架构的组件包括在集群生命周期架构中。
hub 集群是安装 Red Hat Advanced Cluster Management for Kubernetes 的主集群。您可以使用 hub 集群创建、管理和监控其他 Kubernetes 集群。受管集群是由 hub 集群管理的 Kubernetes 集群。您可以使用 Red Hat Advanced Cluster Management hub 集群创建一些集群,同时也可以导入现有集群由 hub 集群管理。
发行镜像是您创建集群时使用的 OpenShift Container Platform 版本。对于使用 Red Hat Advanced Cluster Management 创建的集群,您可以启用自动升级发行镜像。有关 Red Hat Advanced Cluster Management 中发行镜像的更多信息,请参阅发行镜像。
1.1. 发行镜像
当使用 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.10.1-x86_64
注:只有带有标签为: visible: 'true'
的发行镜像才可以在控制台中创建集群时选择。ClusterImageSet
资源中的此标签示例在以下内容中提供:
apiVersion: config.openshift.io/v1 kind: ClusterImageSet metadata: labels: channel: fast visible: 'true' name: img4.10.1-x86-64-appsub spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.10.1-x86_64
存储了额外的发行镜像,但无法在控制台中看到。要查看所有可用发行镜像,请在 CLI 中运行 kubectl get clusterimageset
。控制台中只有最新版本可促进创建带有最新发行镜像的集群。在某些情况下,您可能需要创建特定版本的集群,因此还会继续提供老版本。Red Hat Advanced Cluster Management 使用这些文件在控制台中创建可用发行镜像的列表。这包括 OpenShift Container Platform 的最新快速频道镜像。
仓库中包含 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 目录中。
被发行版本 2.5 的 acm-hive-openshift-releases GitHub 仓库中引用的文件。
1.1.1. 创建发行镜像以在不同构架中部署集群
您可以通过手动创建包含这两个架构文件的发行镜像,在与 hub 集群架构不同的架构中创建集群。
例如,您可以从 ppc64le
、aarch64
或 s390x
架构上运行的 hub 集群创建一个 x86_64
集群。如果使用两组文件创建发行镜像,集群创建成功,因为新发行镜像启用 OpenShift Container Platform 发行 registry 来提供多架构镜像清单。
OpenShift Container Platform 4.11 及更新的版本默认支持多个架构。您可以使用以下 clusterImageSet
来置备集群:
apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: labels: channel: fast visible: 'true' name: img4.12.0-multi-appsub spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.12.0-multi
要为不支持多个架构的 OpenShift Container Platform 镜像创建发行镜像,请完成类似以下示例的步骤:
在 OpenShift Container Platform release registry 中,创建一个 清单列表,其中包含
x86_64
、s390x
、aarch64
和ppc64le
发行镜像。使用以下命令,从 Quay 仓库拉取环境中这两个架构的清单列表:
podman pull quay.io/openshift-release-dev/ocp-release:4.10.1-x86_64 podman pull quay.io/openshift-release-dev/ocp-release:4.10.1-ppc64le podman pull quay.io/openshift-release-dev/ocp-release:4.10.1-s390x podman pull quay.io/openshift-release-dev/ocp-release:4.10.1-aarch64
登录到维护镜像的私有存储库:
podman login <private-repo>
使用存储库的路径替换
private-repo
。运行以下命令,将发行镜像清单添加到私有存储库中:
podman push quay.io/openshift-release-dev/ocp-release:4.10.1-x86_64 <private-repo>/ocp-release:4.10.1-x86_64 podman push quay.io/openshift-release-dev/ocp-release:4.10.1-ppc64le <private-repo>/ocp-release:4.10.1-ppc64le podman push quay.io/openshift-release-dev/ocp-release:4.10.1-s390x <private-repo>/ocp-release:4.10.1-s390x podman push quay.io/openshift-release-dev/ocp-release:4.10.1-aarch64 <private-repo>/ocp-release:4.10.1-aarch64
使用存储库的路径替换
private-repo
。为新信息创建清单:
podman manifest create mymanifest
将两个发行镜像的引用添加到清单列表中:
podman manifest add mymanifest <private-repo>/ocp-release:4.10.1-x86_64 podman manifest add mymanifest <private-repo>/ocp-release:4.10.1-ppc64le podman manifest add mymanifest <private-repo>/ocp-release:4.10.1-s390x podman manifest add mymanifest <private-repo>/ocp-release:4.10.1-aarch64
使用存储库的路径替换
private-repo
。将清单列表中的列表与现有清单合并:
podman manifest push mymanifest docker://<private-repo>/ocp-release:4.10.1
使用存储库的路径替换
private-repo
。
在 hub 集群中,创建一个发行版本镜像来引用存储库中的清单。
创建一个 YAML 文件,其中包含类似以下示例的信息:
apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: labels: channel: fast visible: "true" name: img4.10.1-appsub spec: releaseImage: <private-repo>/ocp-release:4.10.1
使用存储库的路径替换
private-repo
。在 hub 集群中运行以下命令以应用更改:
oc apply -f <file-name>.yaml
将
file-name
替换为您刚才创建的 YAML 文件的名称。
- 在创建 OpenShift Container Platform 集群时选择新的发行镜像。
- 如果使用 Red Hat Advanced Cluster Management 控制台部署受管集群,在集群创建过程中在 Architecture 字段中指定受管集群的架构。
创建流程使用合并的发行镜像来创建集群。
1.1.2. 连接时维护自定义的发行镜像列表
您可能希望确保所有集群都使用同一发行镜像。为简化操作,您可以创建自己的自定义列表,在其中包含创建集群时可用的发行镜像。完成以下步骤以管理可用发行镜像:
-
如果启用了安装程序管理的
acm-hive-openshift-releases
订阅,在multiclusterhub
资源中将disableUpdateClusterImageSets
的值设置为true
来禁用它。 - 对 acm-hive-openshift-releases GitHub 仓库 2.5 分支 进行分叉(fork)。
通过将
spec: pathname
更改为访问已分叉的仓库的 GitHub 名称,而不是stolostron
,更新./subscribe/channel.yaml
文件。此步骤指定 hub 集群在哪里检索发行镜像。您更新的内容应类似以下示例:spec: type: Git 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
仓库后,使用以下命令来更新 fast 镜像后同步 fast 发行镜像列表:make subscribe-fast
注意:您只能在使用 Linux 或者 MacOS 操作系统时运行这个
make
命令。运行此命令后,可用快速镜像列表会在约 1 分钟内更新为当前可用镜像。
默认情况下,只列出 fast 镜像。要同步并显示稳定的发行镜像,请输入以下命令:
make subscribe-stable
注意:您只能在使用 Linux 或者 MacOS 操作系统时运行这个
make
命令。运行此命令后,可用稳定镜像列表会在约 1 分钟内更新为当前可用镜像。
默认情况下,Red Hat Advanced Cluster Management 会预加载几个 ClusterImageSets。您可以使用以下命令列出可用内容并删除默认值。
oc get clusterImageSets oc delete clusterImageSet <clusterImageSet_NAME>
注: 如果您还没有通过将
multiclusterhub
资源中的disableUpdateClusterImageSets
的值设置为true
来禁用安装程序管理的ClusterImageSet
的自动更新,则您删除的任何镜像都会被自动重新创建。- 在创建集群时,查看 Red Hat Advanced Cluster Management 控制台中当前可用发行镜像的列表。
1.1.3. 同步可用发行镜像
版本镜像会频繁更新,因此可能需要同步发行镜像列表,以确保可以选择最新的可用版本。发行镜像位于用于发行版本 2.5 的 acm-hive-openshift-releases GitHub 仓库中。
发行镜像有三个级别的稳定性:
类别 | 描述 |
stable | 已确认用于正确安装和构建集群的完整测试镜像。 |
fast | 部分进行了测试,但稳定性可能低于稳定版本。 |
candidate | 最新镜像,但未经测试。可能会有一些程序错误。 |
完成以下步骤以刷新列表:
-
如果启用了安装程序管理的
acm-hive-openshift-releases
订阅,在multiclusterhub
资源中将disableUpdateClusterImageSets
的值设置为true
来禁用订阅。 - 克隆用于发行版本 2.5 的 acm-hive-openshift-releases GitHub 仓库。
输入以下命令删除订阅:
oc delete -f subscribe/subscription-fast
输入以下命令连接到稳定版本镜像并同步您的 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 subscribe/subscription-fast
1.2. 修改集群的 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.5.0
1.2.1. klusterlet 附加组件设置描述
以下设置可以在 klusterletaddonconfigs.agent.open-cluster-management.io
Kubernetes 资源中更新:
设置名称 | 值 | 描述 |
---|---|---|
applicationmanager |
| 此控制器在受管集群中管理应用程序订阅生命周期。 |
certPolicyController |
| 此控制器在受管集群中强制实施基于证书的策略。 |
iamPolicyController |
| 此控制器在受管集群上强制实施基于 IAM 的策略生命周期。 |
policyController |
| 此控制器在受管集群上强制执行所有其他策略规则。 |
searchCollector |
| 此控制器用于定期将资源索引数据推送回 hub 集群。 |
1.2.2. 使用 hub 集群中的控制台进行修改
您可以使用 hub 集群修改 klusterletaddonconfigs.agent.open-cluster-management.io
资源设置。完成以下步骤以更改设置:
- 登录到 hub 集群的 Red Hat Advanced Cluster Management for Kubernetes 控制台。
- 在 hub 集群控制台的标头菜单中选择 Search 图标。
-
在搜索参数中输入以下值:
kind:klusterletaddonconfigs
- 选择您要更新的端点资源。
-
找到
spec
部分并选择 Edit 以编辑内容。 - 修改设置。
- 选择 Save 以应用您的更改。
1.2.3. 使用 hub 集群中的命令行进行修改
您必须有权访问 cluster-name
命名空间才能使用 hub 集群修改设置。完成以下步骤:
- 登录到 hub 集群。
输入以下命令以编辑资源:
kubectl edit klusterletaddonconfigs.agent.open-cluster-management.io <cluster-name> -n <cluster-name>
-
找到
spec
部分。 - 根据需要修改您的设置。