Pod 未写入本地路径

Pod not writing on a local path

我是容器和 kubernetes 的新手。 我想做的是创建一个可以访问本地目录的 pod。

我已遵循以下指示: configure persistent volume storage

创建了我的 Persistent Volume、Persistent Volume Claim 和我的 pod。

问题是 tomcat 无法写入共享目录

这是持久卷:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: pv-webapp6
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 3Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/opt/test_tomcat/app"

这是持久卷声明:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-webapp6
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

这是我要创建的 tomcat Pod:

apiVersion: v1
kind: Pod
metadata:
  name: webapp6
spec:
  containers:
  - image: tomcat:8.0
    name: webapp6
    ports:
      - containerPort: 8080
        name: webapp6
    volumeMounts:
    - mountPath: /usr/local/tomcat/webapps
      name: test-volume
  volumes:
  - name: test-volume
    persistentVolumeClaim:
      claimName: pvc-webapp6

有点明显,但这是 pod 上的错误。

[root@testserver webapp6-test]# kubectl exec -it webapp6 -- /bin/bash
root@webapp6:/usr/local/tomcat# mkdir /usr/local/tomcat/webapps/sample
mkdir: cannot create directory ‘/usr/local/tomcat/webapps/sample’: Permission denied

问题出在您没有指定 storageClassName 的 PVC yaml 文件中。因此 PV 和 PVC 不能相互绑定。请将 PVC yaml 文件替换为以下文件:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
   name: pvc-webapp6
spec:
   storageClassName: manual
   accessModes:
      - ReadWriteOnce
   resources:
      requests:
         storage: 3Gi

现在一切正常。希望这有帮助。

我很快用你的 yaml 部署了 pod,在我这边一切正常:

[root@Master admin]# kubectl exec -it webapp6 bash
root@webapp6:/usr/local/tomcat#  mkdir /usr/local/tomcat/webapps/sample 
root@webapp6:/usr/local/tomcat# touch /usr/local/tomcat/webapps/sample/a
root@webapp6:/usr/local/tomcat# ls /usr/local/tomcat/webapps/sample/
a

现在当我查看主机时,我可以看到新创建的 a 文件

[root@Master admin]# ls /opt/test_tomcat/app/sample/
a

所以,至少 yaml 文件可以正常工作。