【问题标题】:docker data volume vs kubernetes persistent storagedocker 数据量 vs Kubernetes 持久化存储
【发布时间】:2020-09-27 09:34:10
【问题描述】:

docker 引擎支持data volumes

删除容器后,Docker 数据卷仍然存在

docker rundocker-compose 都支持它:

  1. docker run --volume data_vol:/mount/point
  2. docker-compose 使用顶级 volumes 键命名卷

kubernetes 也支持persistent volumes,但是否支持具有数据卷的相同概念——即驻留在容器中的卷?

如果 kubernetes 支持数据卷(在容器内):

  1. 希望对文档(或示例)提供任何参考
  2. 它是否也像支持常规容器迁移一样支持数据卷的迁移?

我找到了一些related questions,但找不到我正在寻找的答案。

【问题讨论】:

  • 持久本地存储/卷是 kubernetes 中最接近您所要求的:kubernetes.io/docs/tasks/configure-pod-container/… 2) 不,它不会被迁移:您在特定节点上手动显式分配它。
  • “驻留在容器中的卷” --- 在 docker 案例中它也不驻留在容器中:它是在外部创建的,然后在启动时安装在容器中。
  • @zerkms:它创建了一个从主机(工作)节点到容器的挂载点,而我对数据容器感兴趣。所以该链接不涵盖我的用户案例并且不回答我的问题。如果您认为我错过了链接中的任何内容,请澄清。
  • @zerkms:“它也不驻留在 docker 案例中的容器中”意思是,它由 docker 引擎管理(当然它驻留在磁盘上的某个地方);正如您在我的帖子中看到的,当使用 docker run 时,--volume 的参数不是绝对路径
  • 只是将其从常规字体更改为粗体并不能使其更清晰:“驻留在容器中的卷” --- 在 docker 中没有这样的东西,在 docker 中是在外部创建的卷和然后装在里面。 Kubernetes 中的每个卷类型都是一样的。

标签: docker kubernetes docker-compose


【解决方案1】:

你想说的是:

如果您没有为 docker 卷挂载指定主机路径,docker 会动态提供路径并在重新启动之间保留它。

“即位于容器内的卷” 卷在容器外部生成并稍后安装。

例如:

# data_vol location is decided by docker installation
docker run --volume data_vol:/mount/point

# host path is explicitly given
docker run --volume /my/host/path:/mount/point

在 Kubernetes 术语中,这类似于动态配置。如果您想要动态配置,则需要根据您的存储后端具有存储类。

请阅读https://kubernetes.io/docs/concepts/storage/dynamic-provisioning/

如果要指定主机路径,以下是一个示例。您也可以通过使用 NFS、块存储等来获得类似的结果。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 10Gi
  hostPath:
    path: /home/user/my-vol
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: my-ss
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-ss
  serviceName: my-svc
  template:
    metadata:
      labels:
        app: my-ss
    spec:
      containers:
        - image: ubuntu
          name: my-container
          volumeMounts:
            - mountPath: /my-vol
              name: my-vol
  volumeClaimTemplates:
    - metadata:
        name: my-vol
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 10Gi
        selector:
          matchLabels:
            app: my-ss

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多