Docker 卷挂载到 kubernetes 卷

Docker volume mount to kubernetes volume

我正在尝试在 Kubernetes 上安装卷。

目前我有一张 Docker 我 运行 喜欢的图片:

docker run --mount type=bind,source="$(pwd)"<host_dir>,target=<docker_dir> container

要在 Google Kubernetes 集群上安装这个 运行,我有:

  1. 创建 Google 计算磁盘
  2. 创建了一个引用磁盘的持久卷:

kind: PersistentVolume
...
    namespace: default
    name: pvc
spec:
  claimRef:
    namespace: default
    name: pvc
  gcePersistentDisk:
    pdName: disk-name
    fsType: ext4
---
...
kind: PersistentVolumeClaim
metadata:
  name: pvc
spec:
  storageClassName: "storage"
...
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2000Gi
  1. 已创建带挂载的 pod
kind: Pod
apiVersion: v1
metadata:
  name: k8s-pod
spec:
  volumes:
    - name: pvc
      persistentVolumeClaim:
       claimName: pvc
  containers:
    - name: image_name
      image: eu.gcr.io/container:latest
      volumeMounts:
        - mountPath: <docker_dir>
          name: dir

我错过了主机和 container/pod 目录之间绑定的位置。另外,我在哪里提到我的 yaml 文件中的绑定。

我将不胜感激:)

你走在正确的道路上。在您的 Pod 规范中,volumeMount 的名称应该与卷的名称相匹配。所以在你的情况下,

volumes:
    - name: pvc
      persistentVolumeClaim:
       claimName: pvc

卷名是 pvc。所以你的 volumeMount 应该是

volumeMounts:
        - mountPath: "/path/in/container"
          name: pvc

因此,例如,要在您的容器中将此卷安装在 /mydata,您的 Pod 规格将如下所示

kind: Pod
apiVersion: v1
metadata:
  name: k8s-pod
spec:
  volumes:
    - name: pvc
      persistentVolumeClaim:
       claimName: pvc
  containers:
    - name: image_name
      image: eu.gcr.io/container:latest
      volumeMounts:
        - mountPath: "/mydata"
          name: pvc