简体   繁体   English

docker 数据量 vs Kubernetes 持久化存储

[英]docker data volume vs kubernetes persistent storage

docker engine supports data volumes docker 引擎支持数据量

A Docker data volume persists after a container is deleted删除容器后Docker数据卷仍然存在

docker run and docker-compose both support it: docker rundocker-compose都支持它:

  1. docker run --volume data_vol:/mount/point
  2. docker-compose with named volumes using top-level volumes key docker-compose 使用顶级volumes键命名卷

kubernetes also supportspersistent volumes , but does it support the same concept of having a data volume - that is, a volume which resides within a container? kubernetes 也支持持久卷,但它是否支持具有数据卷的相同概念 - 即驻留在容器内的卷?

if kubernetes supports a data volume (within a container):如果 kubernetes 支持数据卷(在容器内):

  1. would appreciate any reference to the documentation (or an example)感谢您对文档(或示例)的任何参考
  2. does it also support the migration of the data volume in the same manner it supports the migration of regular containers?是否也像支持普通容器的迁移一样支持数据量的迁移?

i found some related questions , but couldn't get the answer i am looking for.我发现了一些相关的问题,但无法得到我正在寻找的答案。

What you are trying to say is:你想说的是:

If you do not specify a host path for a docker volume mount, docker dynamically provisions a path and persist it between restarts.如果您没有为 docker 卷挂载指定主机路径,docker 会动态提供路径并在重新启动之间保留它。

"that is, a volume which resides within a container" Volume is generated outside of container and mounted later. “即,位于容器内的卷是在容器外生成并稍后安装。

For example:例如:

# 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

In kubernetes terms, this is similar to dynamic provisioning.在 Kubernetes 术语中,这类似于动态配置。 If you want dynamic provisioning, you need to have Storage classes depending on your storage backend.如果您想要动态配置,则需要根据您的存储后端拥有存储类。

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

If you want to specify a host path, following is an example.如果要指定主机路径,以下是一个示例。 You can also achieve similar results by using NFS, block storage etc.您还可以通过使用 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM