集群内镜像分层仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且功能可能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参见技术预览功能支持范围。 |
Red Hat Enterprise Linux CoreOS (RHCOS) 镜像分层允许您通过分层将其他镜像添加到基础镜像来轻松扩展基础 RHCOS 镜像的功能。此分层不会修改基础 RHCOS 镜像。相反,它会创建一个自定义分层镜像,其中包含所有 RHCOS 功能,并向集群中的特定节点添加其他功能。
镜像分层允许您自定义集群任何工作节点上的底层节点操作系统。这有助于保持所有内容(包括节点操作系统和任何添加的自定义项,例如专用软件)的最新状态。
您可以使用 Containerfile 创建自定义分层镜像,并使用自定义对象将其应用于节点。您可以随时通过删除该自定义对象来删除自定义分层镜像。
使用 RHCOS 镜像分层,您可以将 RPM 安装到基础镜像中,并且您的自定义内容将与 RHCOS 一起启动。机器配置操作符 (MCO) 可以像处理默认 RHCOS 镜像一样,推出这些自定义分层镜像并监控这些自定义容器。RHCOS 镜像分层使您在管理 RHCOS 节点时具有更大的灵活性。
不建议将实时内核和扩展 RPM 作为自定义分层内容安装。这是因为这些 RPM 可能会与使用机器配置安装的 RPM 冲突。如果发生冲突,MCO 在尝试安装机器配置 RPM 时会进入 |
应用自定义分层镜像到集群后,您便拥有了您的自定义分层镜像和这些节点。Red Hat 仍然负责维护和更新标准节点上的基础 RHCOS 镜像,但您负责维护和更新使用自定义分层镜像的节点上的镜像。您对使用自定义分层镜像应用的软件包以及该软件包可能引发的任何问题负责。
有两种方法可以将自定义分层镜像部署到您的节点
使用集群内分层,您可以创建一个MachineOSConfig
对象,其中包含 Containerfile 和其他参数。构建在您的集群上执行,生成的自定义分层镜像会自动推送到您的存储库并应用于您在MachineOSConfig
对象中指定的机器配置池。整个过程完全在您的集群内完成。
集群内镜像分层仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且功能可能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参见技术预览功能支持范围。 |
使用集群外分层,您可以创建一个引用 OpenShift Container Platform 镜像和您想要应用的 RPM 的 Containerfile,在您自己的环境中构建分层镜像,并将镜像推送到您的存储库。然后,在您的集群中,为目标节点池创建一个指向新镜像的MachineConfig
对象。机器配置操作符会覆盖关联机器配置中osImageURL
值指定的基础 RHCOS 镜像,并启动新镜像。
对于这两种方法,都使用安装在集群其余部分上的相同基础 RHCOS 镜像。使用 |
RHCOS镜像分层允许您使用以下类型的镜像来创建自定义分层镜像
OpenShift Container Platform 热修复。您可以与客户体验和参与 (CEE) 团队合作,获取并应用热修复程序包到您的 RHCOS 镜像之上。在某些情况下,您可能需要在官方 OpenShift Container Platform 版本中包含错误修复或增强功能之前就应用它们。RHCOS 镜像分层允许您轻松添加热修复程序(在正式发布之前),并在底层 RHCOS 镜像包含该修复程序后将其移除。
某些热修复程序需要 Red Hat 支持例外,并且不在 OpenShift Container Platform 支持范围或生命周期策略的正常范围内。 |
热修复程序是根据Red Hat 热修复程序策略提供的。将其应用于基础镜像之上,并在非生产环境中测试新的自定义分层镜像。当您确认自定义分层镜像可在生产环境中安全使用时,您可以根据自己的时间表将其部署到特定的节点池。出于任何原因,您可以轻松回滚自定义分层镜像并返回到使用默认 RHCOS。
# Using a 4.17.0 image
containerfileArch: noarch
content: |-
FROM configs AS final
#Install hotfix rpm
RUN dnf install -y https://example.com/myrepo/haproxy-1.0.16-5.el8.src.rpm && \
dnf clean all && \
ostree container commit
# Using a 4.17.0 image
FROM quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256...
#Install hotfix rpm
RUN dnf install -y https://example.com/myrepo/haproxy-1.0.16-5.el8.src.rpm && \
dnf clean all && \
ostree container commit
RHEL 软件包。您可以从Red Hat 客户门户下载 Red Hat Enterprise Linux (RHEL) 软件包,例如 chrony、firewalld 和 iputils。
# Get RHCOS base image of target cluster `oc adm release info --image-for rhel-coreos`
# hadolint ignore=DL3006
FROM quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256...
# Install our config file
COPY my-host-to-host.conf /etc/ipsec.d/
# RHEL entitled host is needed here to access RHEL packages
# Install libreswan as extra RHEL package
RUN dnf install -y libreswan && \
dnf clean all && \
systemctl enable ipsec && \
ostree container commit
由于 libreswan 需要额外的 RHEL 软件包,因此必须在授权的 RHEL 主机上构建镜像。为了使 RHEL 授权生效,您必须将 `etc-pki-entitlement` 密钥复制到 `openshift-machine-api` 命名空间。
第三方软件包。您可以下载并安装来自第三方组织的 RPM 包,例如以下类型的软件包:
最新的驱动程序和内核增强功能,以提高性能或添加功能。
取证客户端工具,用于调查可能的和实际的入侵。
安全代理。
提供整个集群一致视图的清单代理。
SSH 密钥管理软件包。
FROM configs AS final
#Enable EPEL (more info at https://docs.fedoraproject.org/en-US/epel/ ) and install htop
RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \
dnf install -y htop && \
dnf clean all && \
ostree container commit
# Get RHCOS base image of target cluster `oc adm release info --image-for rhel-coreos`
# hadolint ignore=DL3006
FROM quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256...
#Enable EPEL (more info at https://docs.fedoraproject.org/en-US/epel/ ) and install htop
RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \
dnf install -y htop && \
dnf clean all && \
ostree container commit
此 Containerfile 安装 RHEL fish 程序。由于 fish 需要额外的 RHEL 软件包,因此必须在授权的 RHEL 主机上构建镜像。为了使 RHEL 授权生效,您必须将 `etc-pki-entitlement` 密钥复制到 `openshift-machine-api` 命名空间。
FROM configs AS final
# RHEL entitled host is needed here to access RHEL packages
# Install fish as third party package from EPEL
RUN dnf install -y https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/Packages/f/fish-3.3.1-3.el9.x86_64.rpm && \
dnf clean all && \
ostree container commit
# Get RHCOS base image of target cluster `oc adm release info --image-for rhel-coreos`
# hadolint ignore=DL3006
FROM quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256...
# RHEL entitled host is needed here to access RHEL packages
# Install fish as third party package from EPEL
RUN dnf install -y https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/Packages/f/fish-3.3.1-3.el9.x86_64.rpm && \
dnf clean all && \
ostree container commit
创建机器配置后,机器配置操作员 (MCO) 将执行以下步骤:
为指定的池或池渲染新的机器配置。
对池或池中的节点执行 cordon 和 drain 操作。
将其余的机器配置参数写入节点。
将自定义分层镜像应用于节点。
使用新镜像重新启动节点。
强烈建议您在将镜像部署到集群之前,在生产环境之外对其进行测试。 |
要使用集群内构建过程将自定义分层镜像应用于您的集群,请创建一个包含 Containerfile、机器配置池引用、存储库推送和拉取密钥以及预设条件中所述的其他参数的 `MachineOSConfig` 自定义资源。
创建对象时,机器配置操作员 (MCO) 将创建一个 `MachineOSBuild` 对象和一个 `machine-os-builder` pod。构建过程还会创建临时对象(例如配置映射),这些对象在构建完成后将被清除。
构建完成后,MCO 将新的自定义分层镜像推送到您的存储库,以便在部署新节点时使用。您可以在 `MachineOSBuild` 对象和 `machine-os-builder` pod 中看到新自定义分层镜像的已处理镜像拉取规范。
您无需与这些新对象或 `machine-os-builder` pod 交互。但是,如有必要,您可以使用所有这些资源进行故障排除。
您需要为要在其中使用自定义分层镜像的每个机器配置池创建一个单独的 `MachineOSConfig` CR。
集群内镜像分层仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且功能可能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参见技术预览功能支持范围。 |
您已使用功能网关启用了 `TechPreviewNoUpgrade` 功能集。有关更多信息,请参阅“使用功能网关启用功能”。
您在 `openshift-machine-config-operator` 命名空间中拥有 MCO 拉取基础操作系统镜像所需的拉取密钥。
您拥有 MCO 将新自定义分层镜像推送到您的注册表所需的推送密钥。
您拥有节点从您的注册表拉取新自定义分层镜像所需的拉取密钥。这应该与用于将镜像推送到存储库的密钥不同。
您熟悉如何配置 Containerfile。有关如何创建 Containerfile 的说明不在本文档的范围内。
可选:您为要应用自定义分层镜像的节点创建了单独的机器配置池。
创建 `machineOSconfig` 对象
创建一个类似于以下内容的 YAML 文件:
apiVersion: machineconfiguration.openshift.io/v1alpha1
kind: MachineOSConfig
metadata:
name: layered
spec:
machineConfigPool:
name: <mcp_name> (1)
buildInputs:
containerFile: (2)
- containerfileArch: noarch
content: |-
FROM configs AS final
RUN dnf install -y cowsay && \
dnf clean all && \
ostree container commit
imageBuilder: (3)
imageBuilderType: PodImageBuilder
baseImagePullSecret: (4)
name: global-pull-secret-copy
renderedImagePushspec: image-registry.openshift-image-registry.svc:5000/openshift/os-image:latest (5)
renderedImagePushSecret: (6)
name: builder-dockercfg-7lzwl
buildOutputs: (7)
currentImagePullSecret:
name: builder-dockercfg-7lzwl
1 | 指定与要部署自定义分层镜像的节点关联的机器配置池的名称。 |
2 | 指定用于配置自定义分层镜像的 Containerfile。 |
3 | 指定要使用的镜像构建器的名称。这必须是 `PodImageBuilder`。 |
4 | 指定 MCO 从注册表拉取基础操作系统镜像所需的拉取密钥的名称。 |
5 | 指定要将新构建的自定义分层镜像推送到其中的镜像注册表。这可以是您的集群可以访问的任何注册表。此示例使用内部 OpenShift Container Platform 注册表。 |
6 | 指定 MCO 将新构建的自定义分层镜像推送到该注册表所需的推送密钥的名称。 |
7 | 指定节点拉取新构建的自定义分层镜像所需的镜像注册表所需的密钥。这应该与用于将镜像推送到存储库的密钥不同。 |
创建 `MachineOSConfig` 对象
$ oc create -f <file_name>.yaml
如有必要,当 `MachineOSBuild` 对象已创建并处于 `READY` 状态时,请修改要使用新自定义分层镜像的节点的规范
检查 `MachineOSBuild` 对象是否为 `READY`。当 `SUCCEEDED` 值为 `True` 时,表示构建完成。
$ oc get machineosbuild
NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED
layered-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0-builder False False True False False
通过为在 `MachineOSConfig` 对象中指定的机器配置池添加标签来编辑要部署自定义分层镜像的节点
$ oc label node <node_name> 'node-role.kubernetes.io/<mcp_name>='
其中
指定识别要部署自定义分层镜像的节点的节点选择器。
保存更改后,MCO 将排空、隔离并重新启动节点。重新启动后,节点将使用新的自定义分层镜像。
使用以下命令验证新 pod 是否正在运行
$ oc get pods -n <machineosbuilds_namespace>
NAME READY STATUS RESTARTS AGE
build-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0 2/2 Running 0 2m40s (1)
# ...
machine-os-builder-6fb66cfb99-zcpvq 1/1 Running 0 2m42s (2)
1 | 这是正在构建自定义分层镜像的构建 pod。 |
2 | 此 pod 可用于故障排除。 |
验证 `MachineOSConfig` 对象是否包含对新自定义分层镜像的引用
$ oc describe MachineOSConfig <object_name>
apiVersion: machineconfiguration.openshift.io/v1alpha1
kind: MachineOSConfig
metadata:
name: layered
spec:
buildInputs:
baseImagePullSecret:
name: global-pull-secret-copy
containerFile:
- containerfileArch: noarch
content: ""
imageBuilder:
imageBuilderType: PodImageBuilder
renderedImagePushSecret:
name: builder-dockercfg-ng82t-canonical
renderedImagePushspec: image-registry.openshift-image-registry.svc:5000/openshift-machine-config-operator/os-image:latest
buildOutputs:
currentImagePullSecret:
name: global-pull-secret-copy
machineConfigPool:
name: layered
status:
currentImagePullspec: image-registry.openshift-image-registry.svc:5000/openshift-machine-config-operator/os-image@sha256:f636fa5b504e92e6faa22ecd71a60b089dab72200f3d130c68dfec07148d11cd (1)
1 | 新自定义分层镜像的已消化镜像拉取规范。 |
验证MachineOSBuild
对象是否包含对新的自定义分层镜像的引用。
$ oc describe machineosbuild <object_name>
apiVersion: machineconfiguration.openshift.io/v1alpha1
kind: MachineOSBuild
metadata:
name: layered-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0-builder
spec:
desiredConfig:
name: rendered-layered-ad5a3cad36303c363cf458ab0524e7c0
machineOSConfig:
name: layered
renderedImagePushspec: image-registry.openshift-image-registry.svc:5000/openshift-machine-config-operator/os-image:latest
# ...
status:
conditions:
- lastTransitionTime: "2024-05-21T20:25:06Z"
message: Build Ready
reason: Ready
status: "True"
type: Succeeded
finalImagePullspec: image-registry.openshift-image-registry.svc:5000/openshift-machine-config-operator/os-image@sha256:f636fa5b504e92e6faa22ecd71a60b089dab72200f3d130c68dfec07148d11cd (1)
1 | 新自定义分层镜像的已消化镜像拉取规范。 |
验证相应的节点是否正在使用新的自定义分层镜像
以root用户身份启动控制平面节点的调试会话
$ oc debug node/<node_name>
在调试shell中将/host
设置为根目录
sh-4.4# chroot /host
运行rpm-ostree status
命令以查看是否正在使用自定义分层镜像
sh-5.1# rpm-ostree status
# ...
Deployments:
* ostree-unverified-registry:quay.io/openshift-release-dev/os-image@sha256:f636fa5b504e92e6faa22ecd71a60b089dab72200f3d130c68dfec07148d11cd (1)
Digest: sha256:bcea2546295b2a55e0a9bf6dd4789433a9867e378661093b6fdee0031ed1e8a4
Version: 416.94.202405141654-0 (2024-05-14T16:58:43Z)
1 | 新自定义分层镜像的已消化镜像拉取规范。 |
您可以轻松地在特定机器配置池中的节点上配置Red Hat Enterprise Linux CoreOS (RHCOS)镜像分层。机器配置操作符(MCO)将使用新的自定义分层镜像重新引导这些节点,从而覆盖基本的Red Hat Enterprise Linux CoreOS (RHCOS)镜像。
要将自定义分层镜像应用于您的集群,您必须在集群可以访问的存储库中拥有自定义分层镜像。然后,创建一个指向自定义分层镜像的MachineConfig
对象。对于要配置的每个机器配置池,您都需要一个单独的MachineConfig
对象。
配置自定义分层镜像后,OpenShift Container Platform将不再自动更新使用该自定义分层镜像的任何节点。您将负责根据需要手动更新您的节点。如果您回滚自定义层,OpenShift Container Platform将再次自动更新节点。有关更新使用自定义分层镜像的节点的重要信息,请参阅后面的“附加资源”部分。 |
您必须创建一个基于OpenShift Container Platform镜像摘要(而非标签)的自定义分层镜像。
您应该使用与集群中其余部分安装的相同的RHCOS基础镜像。使用 |
例如,以下Containerfile从OpenShift Container Platform 4.17镜像创建一个自定义分层镜像,并使用来自CentOS 9 Stream的镜像覆盖内核包
# Using a 4.17.0 image
FROM quay.io/openshift-release/ocp-release@sha256... (1)
#Install hotfix rpm
RUN rpm-ostree override replace http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/Packages/kernel-{,core-,modules-,modules-core-,modules-extra-}5.14.0-295.el9.x86_64.rpm && \ (2)
rpm-ostree cleanup -m && \
ostree container commit
1 | 指定集群的RHCOS基础镜像。 |
2 | 替换内核包。 |
关于如何创建Containerfile的说明不在本文档范围之内。 |
由于创建自定义分层镜像的过程是在集群外部执行的,因此您必须使用--authfile /path/to/pull-secret
选项与Podman或Buildah一起使用。或者,为了让这些工具自动读取pull secret,您可以将其添加到默认文件位置之一:~/.docker/config.json
,$XDG_RUNTIME_DIR/containers/auth.json
,~/.docker/config.json
或~/.dockercfg
。有关更多信息,请参阅containers-auth.json
手册页。
您必须将自定义分层镜像推送到集群可以访问的存储库。
创建一个机器配置文件。
创建一个类似于以下内容的 YAML 文件:
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: worker (1)
name: os-layer-custom
spec:
osImageURL: quay.io/my-registry/custom-image@sha256... (2)
1 | 指定要应用自定义分层镜像的机器配置池。 |
2 | 指定存储库中自定义分层镜像的路径。 |
创建MachineConfig
对象
$ oc create -f <file_name>.yaml
强烈建议您在将镜像部署到集群之前,在生产环境之外对其进行测试。 |
您可以通过执行以下任何检查来验证是否应用了自定义分层镜像
检查工作机器配置池是否已使用新的机器配置推出
检查是否创建了新的机器配置
$ oc get mc
NAME GENERATEDBYCONTROLLER IGNITIONVERSION AGE
00-master 5bdb57489b720096ef912f738b46330a8f577803 3.2.0 95m
00-worker 5bdb57489b720096ef912f738b46330a8f577803 3.2.0 95m
01-master-container-runtime 5bdb57489b720096ef912f738b46330a8f577803 3.2.0 95m
01-master-kubelet 5bdb57489b720096ef912f738b46330a8f577803 3.2.0 95m
01-worker-container-runtime 5bdb57489b720096ef912f738b46330a8f577803 3.2.0 95m
01-worker-kubelet 5bdb57489b720096ef912f738b46330a8f577803 3.2.0 95m
99-master-generated-registries 5bdb57489b720096ef912f738b46330a8f577803 3.2.0 95m
99-master-ssh 3.2.0 98m
99-worker-generated-registries 5bdb57489b720096ef912f738b46330a8f577803 3.2.0 95m
99-worker-ssh 3.2.0 98m
os-layer-custom 10s (1)
rendered-master-15961f1da260f7be141006404d17d39b 5bdb57489b720096ef912f738b46330a8f577803 3.2.0 95m
rendered-worker-5aff604cb1381a4fe07feaf1595a797e 5bdb57489b720096ef912f738b46330a8f577803 3.2.0 95m
rendered-worker-5de4837625b1cbc237de6b22bc0bc873 5bdb57489b720096ef912f738b46330a8f577803 3.2.0 4s (2)
1 | 新的机器配置 |
2 | 新的渲染机器配置 |
检查新机器配置中的osImageURL
值是否指向预期的镜像
$ oc describe mc rendered-worker-5de4837625b1cbc237de6b22bc0bc873
Name: rendered-worker-5de4837625b1cbc237de6b22bc0bc873
Namespace:
Labels: <none>
Annotations: machineconfiguration.openshift.io/generated-by-controller-version: 5bdb57489b720096ef912f738b46330a8f577803
machineconfiguration.openshift.io/release-image-version: 4.17.0-ec.3
API Version: machineconfiguration.openshift.io/v1
Kind: MachineConfig
...
Os Image URL: quay.io/my-registry/custom-image@sha256...
检查关联的机器配置池是否已更新为新的机器配置
$ oc get mcp
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 (1)
1 | 当UPDATING 字段为True 时,机器配置池正在使用新的机器配置进行更新。在这种情况下,您将不会看到输出中列出的新机器配置。当该字段变为False 时,工作机器配置池已推出到新的机器配置。 |
检查节点以查看节点上的调度是否已禁用。这表示正在应用更改
$ oc get nodes
NAME STATUS ROLES AGE VERSION
ip-10-0-148-79.us-west-1.compute.internal Ready worker 32m v1.30.3
ip-10-0-155-125.us-west-1.compute.internal Ready,SchedulingDisabled worker 35m v1.30.3
ip-10-0-170-47.us-west-1.compute.internal Ready control-plane,master 42m v1.30.3
ip-10-0-174-77.us-west-1.compute.internal Ready control-plane,master 42m v1.30.3
ip-10-0-211-49.us-west-1.compute.internal Ready control-plane,master 42m v1.30.3
ip-10-0-218-151.us-west-1.compute.internal Ready worker 31m v1.30.3
当节点恢复到Ready
状态时,检查节点是否正在使用自定义分层镜像
打开到节点的oc debug
会话。例如
$ oc debug node/ip-10-0-155-125.us-west-1.compute.internal
在调试shell中将/host
设置为根目录
sh-4.4# chroot /host
运行rpm-ostree status
命令以查看是否正在使用自定义分层镜像
sh-4.4# sudo rpm-ostree status
State: idle Deployments: * ostree-unverified-registry:quay.io/my-registry/... Digest: sha256:...
您可以轻松地从特定机器配置池中的节点还原Red Hat Enterprise Linux CoreOS (RHCOS)镜像分层。机器配置操作符(MCO)将使用集群基础Red Hat Enterprise Linux CoreOS (RHCOS)镜像重新引导这些节点,从而覆盖自定义分层镜像。
要从集群中删除Red Hat Enterprise Linux CoreOS (RHCOS)自定义分层镜像,您需要删除应用该镜像的机器配置。
删除应用自定义分层镜像的机器配置。
$ oc delete mc os-layer-custom
删除机器配置后,节点将重新引导。
您可以通过执行以下任何检查来验证是否已删除自定义分层镜像
检查工作机器配置池是否正在使用之前的机器配置进行更新
$ oc get mcp
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE
master rendered-master-6faecdfa1b25c114a58cf178fbaa45e2 True False False 3 3 3 0 39m
worker rendered-worker-6b000dbc31aaee63c6a2d56d04cd4c1b False True False 3 0 0 0 39m (1)
1 | 当UPDATING 字段为True 时,机器配置池正在使用之前的机器配置进行更新。当该字段变为False 时,工作机器配置池已推出到之前的机器配置。 |
检查节点以查看节点上的调度是否已禁用。这表示正在应用更改
$ oc get nodes
NAME STATUS ROLES AGE VERSION
ip-10-0-148-79.us-west-1.compute.internal Ready worker 32m v1.30.3
ip-10-0-155-125.us-west-1.compute.internal Ready,SchedulingDisabled worker 35m v1.30.3
ip-10-0-170-47.us-west-1.compute.internal Ready control-plane,master 42m v1.30.3
ip-10-0-174-77.us-west-1.compute.internal Ready control-plane,master 42m v1.30.3
ip-10-0-211-49.us-west-1.compute.internal Ready control-plane,master 42m v1.30.3
ip-10-0-218-151.us-west-1.compute.internal Ready worker 31m v1.30.3
当节点恢复到Ready
状态时,检查节点是否正在使用基础镜像
打开到节点的oc debug
会话。例如
$ oc debug node/ip-10-0-155-125.us-west-1.compute.internal
在调试shell中将/host
设置为根目录
sh-4.4# chroot /host
运行rpm-ostree status
命令以查看是否正在使用自定义分层镜像
sh-4.4# sudo rpm-ostree status
State: idle Deployments: * ostree-unverified-registry:podman pull quay.io/openshift-release-dev/ocp-release@sha256:e2044c3cfebe0ff3a99fc207ac5efe6e07878ad59fd4ad5e41f88cb016dacd73 Digest: sha256:e2044c3cfebe0ff3a99fc207ac5efe6e07878ad59fd4ad5e41f88cb016dacd73
配置Red Hat Enterprise Linux CoreOS (RHCOS)镜像分层后,OpenShift Container Platform将不再自动更新使用自定义分层镜像的节点池。您将负责根据需要手动更新您的节点。
要更新使用自定义分层镜像的节点,请遵循以下一般步骤
集群会自动升级到x.y.z+1版本,但使用自定义分层镜像的节点除外。
然后,您可以创建一个新的Containerfile,该文件引用更新的OpenShift Container Platform镜像和您之前应用的RPM。
创建一个指向更新的自定义分层镜像的新机器配置。
不需要使用自定义分层镜像更新节点。但是,如果该节点落后于当前OpenShift Container Platform版本太远,您可能会遇到意外的结果。