代码之家  ›  专栏  ›  技术社区  ›  radicaled

pod未在本地路径上写入

  •  0
  • radicaled  · 技术社区  · 5 年前

    我刚接触过集装箱和Kubernetes。 我要做的是创建一个可以访问本地目录的pod。

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

    创建了我的持久卷、持久卷声明和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上的错误。

    [根@testserver webapp6 test]kubectl exec-it webapp6--/bin/bash
    root@webapp6:/usr/local/tomcat mkdir/usr/local/tomcat/webapps/sample
    mkdir:无法创建目录_/usr/local/tomcat/webapps/sample_:权限被拒绝

    1 回复  |  直到 5 年前
        1
  •  1
  •   Prafull Ladha    5 年前

    问题出在你的pvc yaml文件中,你没有指定 storageClassName .因此pv和pvc不能相互结合。请用以下文件替换pvc yaml文件:

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

    现在一切都应该开始了。希望这有帮助。

    我很快就用你的山药来部署吊舱,结果一切正常:

    [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文件工作正常。