【问题标题】:Minikube: use persistent volume (shared disk) and mount it to hostMinikube:使用持久卷(共享磁盘)并将其挂载到主机
【发布时间】: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


    【解决方案1】:

    使用您的 yaml 文件,我成功地创建了卷并毫无问题地部署它,但在启动 minikube 后我不得不使用命令 minikube mount /mydir/:/data/myapp/share/,因为 --mount --mount-strings="/mydir/:/data/myapp/share/" 不起作用。

    【讨论】:

    • 这可能是因为它是--mount-string 而不是--mount-strings
    猜你喜欢
    • 2021-07-04
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多