Kubernetes/Minikube : After mounting volume, pod 挂载目录为空

标签 kubernetes minikube kubernetes-pod

我是 k8s 的新手。我正在关注 official tutorial使用 minikube 在 k8s 中设置 Nginx pod,安装卷并提供 index.html。

当我安装并转到主页时,我收到此错误directory index of "/usr/share/nginx/html/" is forbidden .

如果我没有安装任何东西,我会收到一个“欢迎使用 Nginx”页面。

这是挂载前该文件夹的内容。而在 mount 之后是空的

root@00c1:/usr/share/nginx/html# ls -l
total 8
-rw-r--r-- 1 root root 494 Jul 23 11:45 50x.html
-rw-r--r-- 1 root root 612 Jul 23 11:45 index.html


为什么挂载后 pod 内的挂载文件夹为空?

这是我的设置
apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Mi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/home/my_username/test/html"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Mi
---
apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-hello-rc
spec:
  replicas: 2
  selector:
    app: hello-nginx-tester
  template:
    metadata:
      labels:
        app: hello-nginx-tester
    spec:
      securityContext:
        fsGroup: 1000
      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
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-tester
  labels:
    app: hello-nginx-tester
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 30500
    protocol: TCP
  selector:
    app: hello-nginx-tester

任何信息,将不胜感激。谢谢

最佳答案

我已经在我正在运行的 k8s 环境中检查了您的配置。经过一些调整后,以下 list 对我来说很顺利:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Mi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/home/my_username/test/html"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Mi
  volumeName: task-pv-volume
---
apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-hello-rc
spec:
  replicas: 2
  selector:
    app: hello-nginx-tester
  template:
    metadata:
      labels:
        app: hello-nginx-tester
    spec:
      securityContext:
        fsGroup: 1000
      volumes:
        - name: task-pv-volume
          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-volume
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-tester
  labels:
    app: hello-nginx-tester
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 30500
    protocol: TCP
  selector:
    app: hello-nginx-tester

关于Kubernetes/Minikube : After mounting volume, pod 挂载目录为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57507618/

相关文章:

kubernetes - 由于重启政策,创建kubernetes ReplicationController失败

docker - 在 docker-for-desktop OSX 上删除 kubernetes 集群?

kubernetes - Kubernetes:minikube持久卷本地文件系统存储位置

docker - 如何在Windows 10上拉本地构建的Docker镜像?

azure - 创建 Azure Kubernetes 入口 Controller 以限制每个 Pod 1 个连接

kubernetes - 使用来自 gcr.io 的图像运行 pod 时出错

kubernetes - 如何使用 Kubebuilder-v3/operator-sdk 发送事件

azure - 我可以停止 AKS 群集并启动吗?

kubernetes - 看不懂kubernetes `When should you use a startup probe`的死锁场景?

kubernetes - 当 Kubernetes 中的 configmap 更新时重新启动 Pod?