0

我正在用 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 启动时,nginx 图像中的默认index.html文件应该在我的 pod 内的/usr/share/nginx/html中可用,并且它也应该在我的/nfs_share/mynginx/demo中复制/可用。

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

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

4

2 回答 2

0

/nfs_share/docker/mynginx/demo将无法使用,此处pod提供说明:

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 gibibytes 和访问模式ReadWriteOnce,这意味着该卷可以被单个节点以读写方式安装。它定义了PersistentVolume 的StorageClass 名称 manual,它将用于将 PersistentVolumeClaim 请求绑定到此 PersistentVolume。

PV在. pod_ PVC_pod

您可以阅读整篇文章Configure a Pod to Use a PersistentVolume for Storage,它应该回答所有问题。

于 2020-02-04T14:19:48.710 回答
-1

“/mnt/data”目录应该在你的 pod 实际运行的节点上创建。

于 2021-04-24T10:16:47.910 回答