【问题标题】:What is the correct volume type to use for persistent data in Kubernetes?在 Kubernetes 中用于持久数据的正确卷类型是什么?
【发布时间】:2017-03-15 21:21:00
【问题描述】:

我正在 kubernetes 上设置 Jenkins。我当前的部署如下所示:

    spec:
        containers:
            - name: jenkins-master
              image: jenkins:1.0
              ports:
                  - containerPort: 8080
                    name: http
              volumeMounts:
                  - mountPath: /var/jenkins_home
                    name: jenkins-home
        volumes:
            - name: jenkins-home
              emptyDir: {}

它工作正常,但是如果 pod 被破坏,数据就会消失,因为 jenkins 用来存储数据的文件夹被挂载为emptyDir,这意味着数据只要 pod 存在就存在。

这显然不是一个最佳方案,因为 pod 可能因多种原因被破坏,即使在正常操作期间也是如此。我知道我必须用其他东西替换emptyDir,但是,我不确定我应该使用什么。我可以配置一个 GCE 磁盘,但是,如果您配置一个低于 200GB 的磁盘,您会收到一条警告说您的磁盘将被限制。由于 GCE 磁盘当时只能由一位作者声明,这似乎有点过头了,如果我为每个需要保存持久数据的服务使用 GCE 磁盘,我们最终会付出昂贵的代价。

概括问题:

您在 Kubernetes 上运行多个服务,这些服务需要保存少量持久的磁盘数据。您为他们提供什么样的存储空间?

【问题讨论】:

  • 你能定义少量吗?
  • 大约 5-10 GB

标签: jenkins kubernetes


【解决方案1】:

您正在寻找的是 Persistent Volumes,它实质上将底层持久卷(例如,AWS EBS 或 OpenStack Cinder 卷)建模为资源。

这个资源,简单命名为PersistentVolume 定义了卷的规范,包括例如它的大小和名称。要实际使用它,您需要将 PersistentVolumeClaim 添加到您的部署 yml 中,它定义了您的部署 expects 从要附加到它的持久卷中的内容 - 每个可以有多个匹配的持久卷声明就像可能没有任何卷可以声明一样,这就是存在这种区别的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多