【问题标题】:Persistent volume atached to k8s pod group附加到 k8s pod 组的持久卷
【发布时间】:2018-11-18 21:37:36
【问题描述】:

我正在尝试将典型的单节点 LAMP 堆栈 内置 prestashop 迁移到 kubernetes Google Cloud Platform em>。

到目前为止,我已经:

  • 将数据库设置为独立的第二代 Cloud SQL。
  • 使用 Apache 和 PHP 对 Prestashop 的自定义版本进行 Docker 化并上传。
  • 设置了部署部署,包括 SQL 代理和 Ingress 以公开服务。

这行得通,如果它不会使部署任何对磁盘有任何影响的更改(上传产品图像、安装新模块等)变得如此困难,我会保持这种方式。

我想将整个 html 文件夹移动到一个永久卷。我检查了两个选项。

  • Google persistent disk:很容易创建和附加到 pods,但它需要我将其附加到实例才能进行编辑 它。所以这对 CI 来说有点糟糕。
  • Google Cloud Storage (segment) 它很容易编辑(即使是从浏览器中),但 AFAIK 它需要使用 GCSFuse 才能将其附加到 pod。 (我读到的内容既慢又处于测试阶段)。

我想要一些关于使用什么的建议,最好使用存储的灵活性和永久性磁盘的本机附件。关于带宽,到目前为止,堆栈的流量很少甚至没有,但它以一种体面的方式扩展会很好。 (如果不是,整个 k8s 集群有点毫无意义)。

【问题讨论】:

    标签: kubernetes google-cloud-platform google-cloud-storage persistent-storage


    【解决方案1】:

    在我看来,您应该选择永久性磁盘。而且,老实说,我从未在 k8s 中使用过存储桶,但我看到它很痛苦。此外,您可能确实需要使用 gcsfuse,它一直处于测试阶段。

    【讨论】:

    • 有什么办法可以将永久性磁盘附加到我的本地机器上以便手动编辑文件?
    • 您可以使用 GCE 持久磁盘作为您的 pod 的卷挂载(只能以读/写方式挂载在单个 pod 中)。当您这样做时,它将充当普通的 GCE 持久磁盘,这意味着您可以在磁盘不使用时(但不能在 pod 运行时)将磁盘挂载到任何其他实例。 IE 1- 停止 pod,2- 将 GCE PD 附加到另一个实例 3- 连接到实例(并可能挂载磁盘) 4- 编辑。完成后,分离磁盘并重新部署 pod。
    • 以下是如何将 PD 附加到 GCE 实例:cloud.google.com/compute/docs/disks/… 从第 2 步开始
    【解决方案2】:

    您可以考虑为您的html 文件夹使用gitRepo 卷:

    apiVersion: v1
    kind: Pod
    metadata:
      name: server
    spec:
      containers:
      - image: ...
        name: ...
        volumeMounts:
        - mountPath: /mypath
          name: git-volume
      volumes:
      - name: git-volume
        gitRepo:
          repository: "git@somewhere:me/your-git-repository.git"
          revision: "eef1d8406d464b0c0874075521c1f2e96c253775"
    

    【讨论】:

    • 使用 git 存储库会很好,但 Prestashop 后端可编辑的内容(产品图像等)不会在每次服务或存储库更新时被删除吗?
    • 如果你有在线更改,那么gitRepo不太适合,我认为你应该使用一些持久化存储技术。
    • 是的,我正在寻找持久存储选项。但正如我在我的问题中所说,永久性磁盘似乎只能由谷歌机器访问,而我的本地计算机(或任何其他)不会让我的工作流程变得繁琐。
    猜你喜欢
    • 2018-06-10
    • 2021-06-12
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多