7.4. 使用集群外分层应用自定义分层镜像
您可以在特定机器配置池中的节点上轻松配置 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像层。Machine Config Operator (MCO) 使用新的自定义分层镜像重启这些节点,覆盖基本 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像。
要将自定义分层镜像应用到集群,您必须在集群可访问的存储库中具有自定义层次镜像。然后,创建一个指向自定义分层镜像的 MachineConfig 对象。对于每个需要配置的集群配置池,都需要一个独立的 MachineConfig 对象。
当您配置自定义分层镜像时,OpenShift Container Platform 不再自动更新任何使用自定义分层镜像的节点。根据需要手动进行节点更新是您自己的责任。如果您回滚自定义层,OpenShift Container Platform 将再次自动更新该节点。有关更新使用自定义分层镜像的节点的重要信息,请参阅以下附加资源部分。
先决条件
您必须创建一个基于 OpenShift Container Platform 镜像摘要的自定义层次镜像,而不是标签。
注意您应该使用与集群的其余部分上安装相同的基本 RHCOS 镜像。使用
oc adm release info --image-for rhel-coreos命令获取集群中使用的基础镜像。例如,以下 Containerfile 从 OpenShift Container Platform 4.17 镜像创建一个自定义层次镜像,并使用 CentOS 9 Stream 中的内核软件包覆盖内核软件包:
自定义层镜像的 Containerfile 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意有关如何创建 Containerfile 的说明超出了本文档的范围。
-
由于构建自定义分层镜像的过程是在集群之外执行,所以您必须在 Podman 或 Buildah 中使用
--authfile /path/to/pull-secret选项。或者,要自动读取这些工具的 pull secret,您可以将其添加到默认文件位置之一:~/.docker/config.json,$XDG_RUNTIME_DIR/containers/auth.json,~/.docker/config.json, 或~/.dockercfg。如需更多信息,请参阅containers-auth.json手册页。 - 您必须将自定义分层镜像推送到集群可访问的存储库。
流程
创建机器配置文件。
验证
您可以通过执行以下任一方式来验证是否应用了自定义层次镜像:
检查 worker 机器配置池已使用新机器配置推出:
检查是否创建了新机器配置:
oc get mc
$ oc get mcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查新机器配置中的
osImageURL值是否指向预期的镜像:oc describe mc rendered-worker-5de4837625b1cbc237de6b22bc0bc873
$ oc describe mc rendered-worker-5de4837625b1cbc237de6b22bc0bc873Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查关联的机器配置池是否使用新机器配置更新:
oc get mcp
$ oc get mcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-15961f1da260f7be141006404d17d39b True False False 3 3 3 0 39m worker rendered-worker-5de4837625b1cbc237de6b22bc0bc873 True False False 3 0 0 0 39m
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-15961f1da260f7be141006404d17d39b True False False 3 3 3 0 39m worker rendered-worker-5de4837625b1cbc237de6b22bc0bc873 True False False 3 0 0 0 39m1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 当
UPDATING字段为True时,机器配置池会使用新机器配置进行更新。在这种情况下,您将无法在输出看到新机器配置列表。当字段变为False时,代表 worker 机器配置池已应用到新机器配置。
检查节点以查看是否禁用了在节点上调度。这表示要应用更改:
oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
当节点重新处于
Ready状态时,检查该节点是否使用自定义分层镜像:打开节点的
oc debug会话。例如:oc debug node/ip-10-0-155-125.us-west-1.compute.internal
$ oc debug node/ip-10-0-155-125.us-west-1.compute.internalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/host设置为 debug shell 中的根目录:chroot /host
sh-4.4# chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
rpm-ostree status命令,以查看自定义分层镜像正在使用:sudo rpm-ostree status
sh-4.4# sudo rpm-ostree statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
State: idle Deployments: * ostree-unverified-registry:quay.io/my-registry/... Digest: sha256:...State: idle Deployments: * ostree-unverified-registry:quay.io/my-registry/... Digest: sha256:...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源