【问题标题】:Docker volume mount to kubernetes volumeDocker 卷挂载到 Kubernetes 卷
【发布时间】:2021-10-26 13:39:07
【问题描述】:

我正在尝试在 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. 使用 mount 创建了 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

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

我将不胜感激任何帮助:)

【问题讨论】:

  • 您无法将本地磁盘挂载到远程 Kubernetes 集群中。 (根本不可能;除非您的本地系统正在运行 NFS 服务器或类似的东西。)本地磁盘目录中有什么;为什么要安装此卷?
  • 该卷将用作应用程序的持久存储。
  • 请说得更具体一些 - 您想将本地驱动器(或目录)挂载为集群内所有节点都可以访问的卷吗?
  • 没有。该卷应可供集群内的单个应用程序使用。

标签: docker kubernetes google-kubernetes-engine


【解决方案1】:

你在正确的道路上。在您的 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

【讨论】:

  • 很高兴听到这个消息!
猜你喜欢
  • 1970-01-01
  • 2018-08-25
  • 2021-10-30
  • 2020-08-07
  • 2019-08-24
  • 2019-10-09
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多