我是kubernets的新手(约3天)。我尝试设置一个主机路径来与pod共享文件,我在设置后跟随他的指南Configure a Pod to Use a PersistentVolume for Storage。我检查了pv,pvc,pod的状态,结果如下。
这是pv,pvc,pod的配置文件。
kind: PersistentVolume
apiVersion: v1
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/tmp/data"
PVC:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: task-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
POD:
kind: Pod
apiVersion: v1
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
有些人可以提供线索吗?任何建议,欢迎指导如何调试此类问题。
答案 0 :(得分:3)
MINIKUBE 专用
在 minikube for Mac 上运行本地集群时,我遇到了同样的错误。
Minikube 实际上创建了一个 VM,然后在其上运行您的容器。因此,hostPath 实际上是指该 VM 内的路径,而不是您本地计算机上的路径。这就是为什么所有挂载都显示为空文件夹的原因。
解决方案:
将您的本地路径映射到同名的 minikube 虚拟机。这样你就可以在你的 kubernetes Manifests 中引用它。
minikube mount <source directory>:<target directory>
在这种情况下:
minikube mount /tmp/data:/tmp/data
这应该可以解决问题。
答案 1 :(得分:0)
您是否首先在/tmp/data
放置了本地文件?
答案 2 :(得分:0)
我想我明白了。 HostPath仅适用于单节点集群。我的群集有2个节点。所以PV使用的物理存储在另一台计算机上。
当我第一次浏览文档时,我不注意这个:
“您需要一个只有一个节点的Kubernetes集群”