Pod在将附加持久卷应用于YAML文件时崩溃



这是我的持久卷定义

apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"

这是我的持续量索赔

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: task-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi

这是我试图部署的吊舱

apiVersion: v1
kind: Pod
metadata:
name: task-pv-pod
spec:
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: task-pv-claim
containers:
- name: task-pv-container
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: task-pv-storage

当我尝试使用kubectl create -f task-pv-pod.yaml部署pod时,我得到了这个错误

无法启动容器";52c5f707bb90d87b4178e8508d710ae0912d8ee7bdd7c4b9b802bd6b35f266de":来自守护程序的错误响应:创建装载源路径"/mnt/data"时出错:mkdir/mnt/data:只读文件系统:RunContainerError

我遵循本指南https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/,我有另一个使用不同应用程序运行的pod,我想在这个pod启动并运行后将持久存储应用于该pod。

在定义持久卷时,您使用的是type: local。这意味着您希望在/mnt中创建目录。本地不支持动态卷配置。例如,当您将SSH连接到任何节点时,您会发现此文件夹是ReadOnly文件系统。

/mnt $ mkdir something mkdir: cannot create directory ‘something’: Read-only file system

你可以更改你的PV YAML

apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/var/lib/data"

请注意accessMode和路径的更改。同样在您的PVC定义更改中:

accessModes:
- ReadWriteMany

请记住,必须删除旧的PV和PVC(如果它们不会消失,您可能还需要重新部署nginx pod(,因为在某些资源中,您无法在创建后更改值。

看看:只读fs。

阅读:gke动态配置。

最新更新