Nginx 的 Kubernetes 持久卷不显示默认索引.html文件



我正在用PV测试一些东西,想得到一些澄清。我们有一个 18 节点集群(使用 Docker EE(,并且我们已经在每个节点上挂载了 NFS 共享以用于 k8s 持久存储。我创建了一个PV(使用hostPath(将其与我的nginx部署绑定(将/usr/share/nginx/html挂载到PV(。

apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-test-namespace-pv
namespace: test-namespace
spec:
storageClassName: manual
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/nfs_share/docker/mynginx/demo"
How to create the PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-test-namespace-pvc
namespace: test-namespace
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi

部署文件:

apiVersion: apps/v1
kind: Deployment
metadata:
name: mynginx
specs:
selector:
matchLabels:
run: mynginx-apps
replicas:2
template:
metadata:
labels:
run: mynginx-apps
spec:
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: nfs-test-namespace-pvc
containers:
- name: mynginx
image: dtr.midev.spglobal.com/spgmi/base:mynginx-v1
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: task-pv-storage

所以我假设当我的 pod 启动默认索引时.htmlnginx 图像中的文件应该在我的 pod 中的/usr/share/nginx/html 上可用,它也应该在我的/nfs_share/mynginx/demo上复制/可用。

但是,我在这里没有看到任何文件,当我公开此部署并访问服务时,它给了我 403 错误,因为索引文件不可用。现在,当我从 Pod 内部或从挂载为 PV 的 nfs 共享上的节点创建 html 文件时,它按预期工作。

我对默认文件复制到主机路径的假设是否正确? 还是我错过了什么?

您的/nfs_share/docker/mynginx/demopod中将不可用,解释可在此处获得:

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

配置文件指定卷在群集的节点上处于/mnt/data。该配置还指定了 10 GB 的大小和ReadWriteOnce的访问模式,这意味着卷可以由单个节点作为读写挂载。它定义了 PersistentTVolume 的 StorageClass 名称manual,该名称将用于将 PersistentVolumeClaim 请求绑定到此 PersistentVolume。

您在pod上看不到PV,它被用作PVC,然后可以安装在pod内。

您可以阅读整篇文章 配置 Pod 以使用 持久卷进行存储 它应该回答所有问题。

"/mnt/data" 目录应该在 Pod 实际运行的节点上创建。

最新更新