Pod 使用镜像卷

特性状态: Kubernetes v1.31 [alpha]

本页展示了如何使用镜像卷配置 Pod。此特性允许你在容器内挂载来自 OCI 镜像仓库的内容。

准备开始

你必须拥有一个 Kubernetes 的集群,且必须配置 kubectl 命令行工具让其与你的集群通信。 建议运行本教程的集群至少有两个节点,且这两个节点不能作为控制平面主机。 如果你还没有集群,你可以通过 Minikube 构建一个你自己的集群,或者你可以使用下面的 Kubernetes 练习环境之一:

你的 Kubernetes 服务器版本必须是 v1.31. 要获知版本信息,请输入 kubectl version.

  • 容器运行时需要支持镜像卷特性
  • 你需要能够在主机上执行命令
  • 你需要能够进入 Pod 执行命令
  • 你需要启用 ImageVolume 特性门控

运行使用镜像卷的 Pod

为 Pod 启用镜像卷的方式是:在 .spec 中将 volumes.[*].image 字段设置为一个有效的镜像并在容器的 volumeMounts 中消费此镜像。例如:

  1. pods/image-volumes.yaml
  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: image-volume
  5. spec:
  6. containers:
  7. - name: shell
  8. command: ["sleep", "infinity"]
  9. image: debian
  10. volumeMounts:
  11. - name: volume
  12. mountPath: /volume
  13. volumes:
  14. - name: volume
  15. image:
  16. reference: quay.io/crio/artifact:v1
  17. pullPolicy: IfNotPresent
  1. 在你的集群上创建 Pod:

    1. kubectl apply -f https://k8s.io/examples/pods/image-volumes.yaml
  2. 挂接到容器:

    1. kubectl attach -it image-volume bash
  3. 查看卷中某个文件的内容:

    1. cat /volume/dir/file

    输出类似于:

    1. 1

    你还可以查看不同路径中的另一个文件:

    1. cat /volume/file

    输出类似于:

    1. 2

进一步阅读