2.11. 将 OCI 镜像挂载到 pod 中
您可以直接将开放容器项目(OCI)兼容的容器镜像挂载到 pod 中,使镜像中的文件能被容器访问,而无需将它们包含在基础镜像中,从而允许您在 OCI 兼容的 registry 中托管数据。
2.11.1. 了解镜像卷 复制链接链接已复制到粘贴板!
您可以使用一个镜像卷直接将开放容器项目(OCI)兼容的容器镜像挂载到 pod 中,使镜像中的文件能被容器访问,而无需将它们包含在基础镜像中,从而允许您在 OCI 兼容的 registry 中托管数据。这意味着您可以在 OCI 兼容 registry 中托管数据。
通过使用 pod 中的镜像卷,您可以利用 OCI 镜像和分布规格标准来完成几个任务,包括以下用例:
- 您可以在 pod 中的多个容器间共享配置文件,而无需在基础镜像中包含该文件,以最大程度降低安全风险和镜像大小。
- 在智能环境中,您可以使用镜像卷来挂载 pod 中的大型语言模型权重或机器学习模型权重,以及模型。您可以以这种方式有效地提供模型权重,而无需在 model-server 容器镜像中包含它们。因此,您可以将模型规格和内容与处理它们的可执行文件分开。
- 您可以将公共镜像用于恶意软件扫描程序,将其挂载到一个有私有恶意软件签名的卷中,这样您就可以加载这些签名,而无需将镜像合并到基础镜像中(公共镜像中的版权可能不允许基础镜像)。
要挂载镜像卷,请使用可选的 pull 策略在 pod 规格中包括镜像的路径,如将镜像卷添加到 pod 中所述。
2.11.2. 将镜像卷添加到 pod 复制链接链接已复制到粘贴板!
要挂载与 Open Container Initiative (OCI) 兼容的容器镜像,使用 volume 参数来包括到您的带有一个可选 pull 策略的 pod spec 中包含的镜像的路径。您可以直接创建 pod,或使用控制对象,如部署或副本集。
流程
创建一个类似如下的 YAML 文件:
apiVersion: v1 kind: Pod metadata: name: image-volume spec: containers: - name: shell command: ["sleep", "infinity"] image: debian volumeMounts: - name: volume mountPath: /volume volumes: - name: volume image:1 reference: quay.io/crio/image:v22 pullPolicy: Always3 运行以下命令来创建 pod:
$ oc create -f <file_name>.yaml
验证
使用类似如下的命令检查 pod 以查看镜像拉取和挂载的详细信息:
$ oc describe pod <pod_name>输出示例
Name: image-volume Namespace: default # ... Volumes: volume:1 Type: Image Reference: quay.io/crio/image:v2 PullPolicy: IfNotPresent # ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- # ... Normal Pulling 46s kubelet Pulling image "quay.io/crio/image:v2" Normal Pulled 44s kubelet Successfully pulled image "quay.io/crio/image:v2" in 2.261s (2.261s including waiting). Image size: 6707 bytes.2 # ...