Pod 使用镜像卷
              特性状态: 
              
Kubernetes v1.33 [beta] (enabled by default: false)
            本页展示了如何使用镜像卷配置 Pod。此特性允许你在容器内挂载来自 OCI 镜像仓库的内容。
准备开始
你必须拥有一个 Kubernetes 的集群,且必须配置 kubectl 命令行工具让其与你的集群通信。 建议运行本教程的集群至少有两个节点,且这两个节点不能作为控制平面主机。 如果你还没有集群,你可以通过 Minikube 构建一个你自己的集群,或者你可以使用下面的 Kubernetes 练习环境之一:
你的 Kubernetes 服务器版本必须不低于版本 v1.31.要获知版本信息,请输入  kubectl version.
- 容器运行时需要支持镜像卷特性
- 你需要能够在主机上执行命令
- 你需要能够进入 Pod 执行命令
- 你需要启用 ImageVolume特性门控
运行使用镜像卷的 Pod
为 Pod 启用镜像卷的方式是:在 .spec 中将 volumes.[*].image
字段设置为一个有效的镜像并在容器的 volumeMounts 中消费此镜像。例如:
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:
      reference: quay.io/crio/artifact:v2
      pullPolicy: IfNotPresent
- 
在你的集群上创建 Pod: kubectl apply -f https://k8s.io/examples/pods/image-volumes.yaml
- 
挂接到容器: kubectl attach -it image-volume bash
- 
查看卷中某个文件的内容: cat /volume/dir/file输出类似于: 1你还可以查看不同路径中的另一个文件: cat /volume/file输出类似于: 2
进一步阅读
使用 subPath(或 subPathExpr)
从 Kubernetes v1.33 开始,使用 image 卷特性时,可以利用
subPath 或
subPathExpr。
apiVersion: v1
kind: Pod
metadata:
  name: image-volume
spec:
  containers:
  - name: shell
    command: ["sleep", "infinity"]
    image: debian
    volumeMounts:
    - name: volume
      mountPath: /volume
      subPath: dir
  volumes:
  - name: volume
    image:
      reference: quay.io/crio/artifact:v2
      pullPolicy: IfNotPresent
- 
在你的集群上创建 Pod: kubectl apply -f https://k8s.io/examples/pods/image-volumes-subpath.yaml
- 
挂接到容器: kubectl attach -it image-volume bash
- 
检查卷中 dir子路径下的文件的内容:cat /volume/file
输出类似于:
1
  最后修改 April 24, 2025 at 10:13 AM PST: [zh-cn]sync configure-pod-container/image-volumes (b0e816b4b4)