[英]Multiple persistent volumes in minikube
我想根據一個持久性卷聲明將多個volumeMount附加到minikube中的部署。
我有一個部署了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: {}
使用上面的配置,您嘗試將一個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
然后在您的Deployment 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
...
希望對您有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.