【发布时间】:2019-01-29 09:09:49
【问题描述】:
我想将多个volumeMounts附加到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: {}
【问题讨论】:
标签: kubernetes minikube persistent-volumes