【问题标题】:Use SSD or local SSD in GKE cluster在 GKE 集群中使用 SSD 或本地 SSD
【发布时间】:2018-01-08 15:56:05
【问题描述】:

我想让 Kubernetes 在我的 Google Kubernetes 引擎集群中使用本地 SSD,而不使用 alpha 功能。有没有办法做到这一点?

提前感谢您的任何建议或帮助。

【问题讨论】:

    标签: kubernetes google-cloud-platform google-kubernetes-engine


    【解决方案1】:

    https://cloud.google.com/kubernetes-engine/docs/concepts/local-ssd 解释了如何在 Google Kubernetes Engine 的节点上使用本地 SSD。根据 gcloud 命令,该功能似乎是 beta(不是 alpha),所以我认为您不需要依赖任何 alpha 功能来利用它。

    【讨论】:

      【解决方案2】:

      您可以将本地 SSD 与您的 Kubernetes 节点一起使用,如下文documentation 所述:

      • 在 GCP Console 中访问 Kubernetes Engine 菜单。

      • 点击创建集群。

      • 根据需要配置您的集群。然后,从本地 SSD 磁盘(每个节点)字段中,输入所需的 SSD 数量作为绝对数。

      • 点击创建。

      在现有集群中使用本地 SSD 磁盘创建节点池:

      访问 GCP Console 中的 Kubernetes Engine 菜单。

      • 选择所需的集群。

      • 点击编辑。

      • 从节点池菜单中,单击添加节点池。 根据需要配置节点池。然后,从本地 SSD 磁盘(每个节点)字段中,输入所需的 SSD 数量作为绝对数。 点击保存。

      documentation 链接中所述,请注意 Kubernetes 中本地 SSD 存储的缺点/限制:

      • 由于本地 SSD 物理连接到节点的主机虚拟机实例,因此存储在其中的任何数据仅存在于该节点上。由于存储在磁盘上的数据是本地的,因此您应该确保您的应用程序能够灵活应对这些数据不可用的情况。

      • 如果将 Pod 重新安排离开该节点,写入本地 SSD 的 Pod 可能无法访问存储在磁盘上的数据。此外,升级节点会导致数据被擦除。

      • 您无法将本地 SSD 添加到现有节点池。

      如果您想在 Kubernetes 部署中实现高可用性,以上几点非常重要。

      Kubernetes 本地 SSD 存储是短暂的,在容器中运行时会给非平凡的应用程序带来一些问题。 在 Kubernetes 中,当容器崩溃时,kubelet 会重新启动它,但其中的文件会丢失,因为容器以干净的状态启动。 此外,当在 Pod 中一起运行容器时,这些容器通常需要共享文件。

      您可以使用 Kubernetes 卷抽象来解决上述问题,如下面的documentation 所述。

      【讨论】:

        【解决方案3】:

        如果您希望在 Kubernetes 集群中的 SSD 上运行整个 Docker,这就是我在节点池(ubuntu 节点)上的做法:

        在您的服务器上:

        # stop docker
        sudo service docker stop
        
        # format and mount disk
        sudo mkfs.ext4 -m 0 -F -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
        rm -fr /var/lib/docker
        sudo mkdir -p /var/lib/docker
        sudo mount -o discard,defaults /dev/sdb /var/lib/docker
        sudo chmod 711 /var/lib/docker
        
        # backup and edit fstab
        sudo cp /etc/fstab /etc/fstab.backup
        echo UUID=`sudo blkid -s UUID -o value /dev/sdb` /var/lib/docker ext4 discard,defaults,nofail 0 2 | sudo tee -a /etc/fstab
        
        # start docker 
        sudo service docker start
        

        正如其他人所提到的,您可能需要先查看 GKE 提供的“本地 SSD 选项”。提供的添加 SSD 的选项对我来说没有用的原因是,我的节点需要一个 4TB 的 SSD,而且据我所知,本地 ssd 的大小是固定的。

        【讨论】:

          猜你喜欢
          • 2021-10-07
          • 2019-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-19
          相关资源
          最近更新 更多