16.7. 使用容器镜像预缓存功能
集群可能具有有限的带宽来访问容器镜像 registry,这可能会在更新完成前造成超时。
TALM 不会设置更新的时间。您可以在通过手动应用程序或外部自动化进行更新时应用 ClusterGroupUpgrade CR。
当 preCaching 字段在 ClusterGroupUpgrade CR 中被设置为 true 时,容器镜像预缓存会启动。在成功预缓存后,您可以启动补救策略。当 enable 字段设置为 true 时,补救操作会启动。
预缓存过程可以处于以下状态:
PrecacheNotStarted这是所有集群在第一次协调时会自动分配给
ClusterGroupUpgradeCR 的初始状态。在这个状态中,TALM 会删除来自之前更新中所有 spoke 集群的预缓存命名空间和 hub 查看资源。然后,TALM 为 spoke 创建一个新的
ManagedClusterView资源,以便在PrecachePreparing状态验证删除。PrecachePreparing- 清理之前不完整更新中的所有剩余的资源,资源正在进行中。
PrecacheStarting- 预缓存任务前提条件并创建了作业。
PrecacheActive- 该作业的状态为"Active"状态。
PrecacheSucceeded- pre-cache(预缓存)作业已成功。
PrecacheTimeout- 工件预预缓存已完成。
PrecacheUnrecoverableError- 作业以非零退出代码结束。
16.7.1. 使用预缓存创建 ClusterGroupUpgrade CR 复制链接链接已复制到粘贴板!
预缓存功能允许在更新开始前在 spoke 集群中显示所需的容器镜像。
先决条件
- 安装 Topology Aware Lifecycle Manager(TALM)。
- 置备一个或多个受管集群。
-
以具有
cluster-admin特权的用户身份登录。
流程
在
clustergroupupgrades-group-du.yaml文件中将preCaching字段设置为true来保存ClusterGroupUpgradeCR 的内容:apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: du-upgrade-4918 namespace: ztp-group-du-sno spec: preCaching: true1 clusters: - cnfdb1 - cnfdb2 enable: false managedPolicies: - du-upgrade-platform-upgrade remediationStrategy: maxConcurrency: 2 timeout: 240- 1
preCaching字段设为true,它允许 TALM 在开始更新前拉取容器镜像。
当您要启动更新时,通过运行以下命令应用
ClusterGroupUpgradeCR:$ oc apply -f clustergroupupgrades-group-du.yaml
验证
运行以下命令,检查 hub 集群中是否存在
ClusterGroupUpgradeCR:$ oc get cgu -A输出示例
NAMESPACE NAME AGE ztp-group-du-sno du-upgrade-4918 10s1 - 1
- CR 被创建。
运行以下命令,检查预缓存任务的状态:
$ oc get cgu -n ztp-group-du-sno du-upgrade-4918 -o jsonpath='{.status}'输出示例
{ "conditions": [ { "lastTransitionTime": "2022-01-27T19:07:24Z", "message": "Precaching is not completed (required)",1 "reason": "PrecachingRequired", "status": "False", "type": "Ready" }, { "lastTransitionTime": "2022-01-27T19:07:24Z", "message": "Precaching is required and not done", "reason": "PrecachingNotDone", "status": "False", "type": "PrecachingDone" }, { "lastTransitionTime": "2022-01-27T19:07:34Z", "message": "Pre-caching spec is valid and consistent", "reason": "PrecacheSpecIsWellFormed", "status": "True", "type": "PrecacheSpecValid" } ], "precaching": { "clusters": [ "cnfdb1"2 ], "spec": { "platformImage": "image.example.io"}, "status": { "cnfdb1": "Active"} } }在 spoke 集群中运行以下命令来检查预缓存作业的状态:
$ oc get jobs,pods -n openshift-talm-pre-cache输出示例
NAME COMPLETIONS DURATION AGE job.batch/pre-cache 0/1 3m10s 3m10s NAME READY STATUS RESTARTS AGE pod/pre-cache--1-9bmlr 1/1 Running 0 3m10s运行以下命令,检查
ClusterGroupUpgradeCR 的状态:$ oc get cgu -n ztp-group-du-sno du-upgrade-4918 -o jsonpath='{.status}'输出示例
"conditions": [ { "lastTransitionTime": "2022-01-27T19:30:41Z", "message": "The ClusterGroupUpgrade CR has all clusters compliant with all the managed policies", "reason": "UpgradeCompleted", "status": "True", "type": "Ready" }, { "lastTransitionTime": "2022-01-27T19:28:57Z", "message": "Precaching is completed", "reason": "PrecachingCompleted", "status": "True", "type": "PrecachingDone"1 }- 1
- 预缓存任务已完成。