4.12. 配置 fuse-overlayfs
默认情况下,通用基础镜像(UDI)包含 Podman 和 Buildah,您可以在工作区中构建和推送容器镜像。但是,UDI 中的 Podman 和 Buildah 被配置为使用 vfs
存储驱动程序,该驱动程序不提供写时复制支持。要更有效地镜像管理,请使用 fuse-overlayfs 存储驱动程序,该驱动程序在无根环境中支持 copy-on-write。
要为早于 4.15 的 OpenShift 版本启用 fuse-overlayfs,管理员必须首先通过 第 4.12.1 节 “为早于 4.15 的 OpenShift 版本启用访问” 在集群中启用 /dev/fuse
访问。
OpenShift 版本 4.15 及更高版本不需要这样做,因为 /dev/fuse
设备默认可用。请参阅 发行注记。
启用 /dev/fuse
访问后,可通过两种方式启用 fuse-overlayfs:
4.12.1. 为早于 4.15 的 OpenShift 版本启用访问 复制链接链接已复制到粘贴板!
要使用 fuse-overlayfs,您必须首先使 /dev/fuse
可以被工作区容器访问。
OpenShift 版本 4.15 及更新的版本不需要这个过程,因为 /dev/fuse
设备默认可用。请参阅 发行注记。
在 OpenShift 集群中创建 MachineConfig
资源是一个潜在的危险任务,因为您要对集群进行高级系统级更改。
查看 MachineConfig 文档 以了解更多详情和可能的风险。
流程
根据 OpenShift 集群的类型设置环境变量:单一节点集群,或使用单独的 control plane 和 worker 节点的多节点集群。
对于单一节点集群,请设置:
NODE_ROLE=master
$ NODE_ROLE=master
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于多节点集群,请设置:
NODE_ROLE=worker
$ NODE_ROLE=worker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
为 OpenShift Butane 配置版本设置环境变量。此变量是 OpenShift 集群的主版本和次要版本。例如:
4.12.0
、4.13.0
或4.14.0
。VERSION=4.12.0
$ VERSION=4.12.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
MachineConfig
资源,在NODE_ROLE
节点上创建一个名为99-podman-fuse
的 drop-in CRI-O 配置文件。此配置文件可让您访问某些 pod 的/dev/fuse
设备。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用
MachineConfig
资源后,在应用更改时,会临时禁用具有worker
角色的每个节点调度。查看节点的状态。oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当所有具有
worker
角色的节点都处于Ready
状态后,/dev/fuse
可供带有以下注解的任何 pod 使用:io.openshift.podman-fuse: '' io.kubernetes.cri-o.Devices: /dev/fuse
io.openshift.podman-fuse: '' io.kubernetes.cri-o.Devices: /dev/fuse
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
获取具有
worker
角色的节点名称:oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开到 worker 节点的
oc debug
会话。oc debug node/<nodename>
$ oc debug node/<nodename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证存在名为
99-podman-fuse
的新 CRI-O 配置文件。stat /host/etc/crio/crio.conf.d/99-podman-fuse
sh-4.4# stat /host/etc/crio/crio.conf.d/99-podman-fuse
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.12.1.1. 在工作区中为 Podman 和 Buildah 使用 fuse-overlayfs 复制链接链接已复制到粘贴板!
用户可遵循 https://access.redhat.com/documentation/zh-cn/red_hat_openshift_dev_spaces/3.21/html-single/user_guide/index#end-user-guide:using-the-fuse-overlay-storage-driver 来更新现有工作区,为 Podman 和 Buildah 使用 fuse-overlayfs 存储驱动程序。
4.12.2. 为所有工作区启用 fuse-overlayfs 复制链接链接已复制到粘贴板!
先决条件
- 第 4.12.1 节 “为早于 4.15 的 OpenShift 版本启用访问” 部分已完成。OpenShift 版本 4.15 及更新的版本不需要这样做。
-
对目标 OpenShift 集群具有管理权限的活动
oc
会话。请参阅 CLI 入门。
流程
创建一个 ConfigMap,为所有用户工作区挂载
storage.conf
文件。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告创建此 ConfigMap 将导致所有正在运行的工作区重启。
在 CheCluster 自定义资源的
spec.devEnvironments.workspacesPodAnnotations
字段中设置所需的注解。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于 4.15 之前的 OpenShift 版本,还需要
io.openshift.podman-fuse: ""
注解。
验证步骤
启动工作区并验证存储驱动程序是否
覆盖
。podman info | grep overlay
$ podman info | grep overlay
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意现有工作区可能会出现以下错误:
ERRO[0000] User-selected graph driver "overlay" overwritten by graph driver "vfs" from database - delete libpod local files ("/home/user/.local/share/containers/storage") to resolve. May prevent use of images created by other tools
ERRO[0000] User-selected graph driver "overlay" overwritten by graph driver "vfs" from database - delete libpod local files ("/home/user/.local/share/containers/storage") to resolve. May prevent use of images created by other tools
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这种情况下,删除错误信息中所述的 libpod 本地文件。