Несколько постоянных томов в миникубе - PullRequest
0 голосов
/ 29 января 2019

Я хочу подключить несколько томов для установки к развертыванию в мини-кубе на одном постоянном томе.

У меня есть развернутое приложение tomcat, которому нужно сохранить три разные папки (/ var / log / app, / var / lib/ app, / etc / app).Когда контейнер запускается, я должен получать файлы в каждом каталоге, но заполняются только журналы, и приложение не работает.Любая идея, если мой yaml правильный или я подхожу к этому неправильно?

K8s yaml:

apiVersion: v1

kind: PersistentVolume
metadata:
  name: pv-volume
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 6Gi
  hostPath:
    path: /data/pv-volume
  storageClassName: manual
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: manual
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
  labels:
    app: app
spec:
  selector:
    matchLabels:
      app: app
  replicas: 1
  strategy: {}
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
      - image: app:latest
        name: app
        env:
        - name: JAVA_OPTS
          value: -Xms64M -Xmx512M
        ports:
        - containerPort: 8080
        resources:
          requests:
            memory: "512Mi"
            cpu: "250m"
          limits:
            memory: "1024Mi"
            cpu: "500m"
        volumeMounts:
          - name: pv-storage1
            mountPath: /var/log/app
            subPath: log
          - name: pv-storage1
            mountPath: /var/lib/app
            subPath: lib
          - name: pv-storage1
            mountPath: /etc/app
            subPath: etc
        tty: true
      volumes:
      - name: pv-storage1
        persistentVolumeClaim:
          claimName: pv-claim
      restartPolicy: Always
status: {}

v2:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-volume-log
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 1Gi
  hostPath:
    path: /data/pv-volume/log
  storageClassName: manual
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim-log
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: manual
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-volume-lib
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 1Gi
  hostPath:
    path: /data/pv-volume/lib
  storageClassName: manual
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim-lib
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: manual
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-volume-etc
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 1Gi
  hostPath:
    path: /data/pv-volume/etc
  storageClassName: manual
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim-etc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: manual
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: endpoint
  labels:
    app: endpoint
spec:
  selector:
    matchLabels:
      app: endpoint
  replicas: 1
  strategy: {}
  template:
    metadata:
      labels:
        app: endpoint
    spec:
      containers:
      - image: endpoint:latest
        name: endpoint
        env:
        - name: JAVA_OPTS
          value: -Xms64M -Xmx1024M
        ports:
        - containerPort: 8080
        resources:
          requests:
            memory: "1024Mi"
            cpu: "250m"
          limits:
            memory: "2048Mi"
            cpu: "500m"
        volumeMounts:
          - name: pv-storage-log
            mountPath: /var/log
          - name: pv-storage-lib
            mountPath: /var/lib
          - name: pv-storage-etc
            mountPath: /etc
        tty: true
      volumes:
      - name: pv-storage-log
        persistentVolumeClaim:
          claimName: pv-claim-log
      - name: pv-storage-lib
        persistentVolumeClaim:
          claimName: pv-claim-lib
      - name: pv-storage-etc
        persistentVolumeClaim:
          claimName: pv-claim-etc
      restartPolicy: Always
status: {}

1 Ответ

0 голосов
/ 29 января 2019

С вашей конфигурацией выше, вы пытаетесь подключить один PV к нескольким каталогам, что означает, что они будут переносить одни и те же данные с вашим путем к хосту в конфигурации PV.

Если вы хотите использовать несколько разных каталогов с разным содержимым, вам нужно создать PV и PVC для каждого каталога, как показано ниже:

kind: PersistentVolume
metadata:
  name: pv-volume-log
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 6Gi
  hostPath:
    path: /data/pv-volume/log
  storageClassName: manual
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim-log
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: manual

---
kind: PersistentVolume
metadata:
  name: pv-volume-lib
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 6Gi
  hostPath:
    path: /data/pv-volume/lib
  storageClassName: manual
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim-lib
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: manual
---
kind: PersistentVolume
metadata:
  name: pv-volume-etc
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 6Gi
  hostPath:
    path: /data/pv-volume/etc
  storageClassName: manual
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim-etc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: manual

И в своем развертывании yaml добавьте эти тома иприсоедините тома к mountPath соответственно:

...
      volumes:
      - name: pv-storage-log
        persistentVolumeClaim:
          claimName: pv-claim-log
      - name: pv-storage-lib
        persistentVolumeClaim:
          claimName: pv-claim-lib
      - name: pv-storage-etc
        persistentVolumeClaim:
          claimName: pv-claim-etc
      restartPolicy: Always
...

Надеюсь, это будет полезно для вас

...