我正在尝试设置hostPath
在 Pod 之间共享文件。
我正在遵循本指南配置 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"
Run Code Online (Sandbox Code Playgroud)
PVC:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: task-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
Run Code Online (Sandbox Code Playgroud)
荚:
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
Run Code Online (Sandbox Code Playgroud)
我正在向/tmp/data
和 添加一个文件,但在容器中看不到它。
当我检查 的状态时pv,pvc,pod
,结果如下:
有人可以告诉我为什么我看不到该文件吗?欢迎任何有关如何调试此类问题的建议或命令。
Anc*_*nav 14
MINIKUBE 特定
在 Mac 版 minikube 上运行本地集群时,我遇到了同样的错误。
Minikube 实际上创建了一个虚拟机,然后在其上运行容器。因此,hostPath 实际上指的是该虚拟机内部的路径,而不是本地计算机上的路径。这就是为什么所有安装都显示为空文件夹的原因。
解决方案:
使用相同的名称将本地路径映射到 minikube 的虚拟机。这样您就可以按照 kubernetes 清单中的方式引用它。
minikube mount <source directory>:<target directory>
Run Code Online (Sandbox Code Playgroud)
在这种情况下:
minikube mount /tmp/data:/tmp/data
Run Code Online (Sandbox Code Playgroud)
这应该可以解决问题。
来源:https://minikube.sigs.k8s.io/docs/handbook/mount/
我想我明白了。HostPath仅适用于单节点集群。我的集群有 2 个节点。因此 PV 使用的物理存储位于另一台计算机上。
当我第一次浏览文档时,我没有注意到这一点:
“你需要一个只有一个节点的 Kubernetes 集群”
归档时间: |
|
查看次数: |
8377 次 |
最近记录: |