在 Pod 中使用镜像卷
功能状态:
Kubernetes v1.35 [beta](默认启用)此页面展示如何使用镜像卷配置 Pod。这允许您将 OCI 注册表中的内容挂载到容器内部。
开始之前
您需要一个 Kubernetes 集群,并且 kubectl 命令行工具必须配置为与您的集群通信。建议在至少具有两个非控制平面节点的集群上运行本教程。如果您还没有集群,可以使用 minikube 创建一个,或者可以使用以下 Kubernetes 游乐场
您的 Kubernetes 服务器必须是 v1.31 版本或更高版本。要检查版本,请输入 kubectl version。
- 容器运行时需要支持镜像卷功能
- 您需要在主机中执行命令
- 您需要能够进入 Pod
- 您需要启用
ImageVolume功能门
运行使用镜像卷的 Pod
通过将 .spec 的 volumes[*].image 字段设置为有效的引用并在容器的 volumeMounts 中使用它,可以启用 Pod 的镜像卷。例如
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 exec image-volume -it -- bash检查卷中文件的内容
cat /volume/dir/file输出类似于
1您还可以检查卷中不同路径下的另一个文件
cat /volume/file输出类似于
2
使用 subPath (或 subPathExpr)
从 Kubernetes v1.33 开始,在使用镜像卷功能时,可以使用 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 exec image-volume -it -- bash检查卷中
dir子路径中的文件的内容cat /volume/file输出类似于
1
进一步阅读
最后修改时间:2025 年 10 月 24 日下午 3:23 PST:修复 tasks/configure-pod-container/image-volumes.md 中的错别字 (ca3bf06233)