Minikube:使用持久卷(共享磁盘)并将其挂载到主机

时间:2021-06-24 08:47:35

标签: kubernetes minikube mount

我尝试挂载一个 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,它们会带来死锁错误:

  • pending PVC:在绑定前等待创建第一个消费者
  • 待定 POD:0/1 个节点可用:1 个节点未找到可绑定的持久卷

另一种选择是使用 minikube persistentvolumeclaim 而不使用persistentvolume(它将自动创建)。但是:

  • 在 /tmp 中创建卷(例如:/tmp/hostpath-provisioner/default/myapp-share-claim)
  • Minikube 不接受挂载请求

我怎样才能让它正常工作?

1 个答案:

答案 0 :(得分:1)

使用您的 yaml 文件,我设法创建了卷并顺利部署了它,但我不得不在启动 minikube 后使用命令 minikube mount /mydir/:/data/myapp/share/,因为 --mount --mount-strings="/mydir/:/data/myapp/share/" 不起作用。

相关问题