【发布时间】:2021-09-07 18:07:05
【问题描述】:
我尝试将 linux 目录挂载为 minikube 中多个容器的共享目录。
这是我的配置:
minikube start --insecure-registry="myregistry.com:5000" --mount --mount-string="/tmp/myapp/k8s/:/data/myapp/share/"
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: manual
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: myapp-share-storage
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
local:
path: "/data/myapp/share/"
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- minikube
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myapp-share-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
io.kompose.service: myapp-server
name: myapp-server
spec:
selector:
matchLabels:
io.kompose.service: myapp-server
template:
metadata:
labels:
io.kompose.service: myapp-server
spec:
containers:
- name: myapp-server
image: myregistry.com:5000/server-myapp:alpine
ports:
- containerPort: 80
resources: {}
volumeMounts:
- mountPath: /data/myapp/share
name: myapp-share
env:
- name: storage__root_directory
value: /data/myapp/share
volumes:
- name: myapp-share
persistentVolumeClaim:
claimName: myapp-share-claim
status: {}
它适用于陷阱:不支持 Statefulset,它们会带来死锁错误:
- 待处理的 PVC:等待第一个消费者在绑定之前创建
- 待处理的 POD:0/1 个节点可用:1 个节点未找到要绑定的可用持久卷
另一种选择是使用 minikube persistentvolumeclaim 而不使用 persistentvolume(它将自动创建)。然而:
- 卷在 /tmp 中创建(例如:/tmp/hostpath-provisioner/default/myapp-share-claim)
- Minikube 不支持挂载请求
我怎样才能让它正常工作?
【问题讨论】:
标签: kubernetes minikube mount