我想让Kubernetes在我的Google Kubernetes引擎群集中使用本地SSD而不使用alpha功能。有没有办法做到这一点?
提前感谢您的任何建议或帮助。
答案 0 :(得分:1)
https://cloud.google.com/kubernetes-engine/docs/concepts/local-ssd说明了如何在Google Kubernetes Engine的节点上使用本地SSD。基于gcloud命令,该功能似乎是beta(不是alpha),所以我认为你不需要依赖任何alpha功能来利用它。
答案 1 :(得分:0)
您可以将本地SSD与Kubernetes节点一起使用,如下面documentation中所述:
访问GCP控制台中的Kubernetes Engine菜单。
单击“创建群集”。
根据需要配置群集。然后,从Local SSD磁盘(每个节点)字段输入所需的SSD数量作为绝对数字。
点击“创建”。
在现有群集中创建具有本地SSD磁盘的节点池:
访问GCP控制台中的Kubernetes Engine菜单。
选择所需的群集。
点击修改。
从“节点池”菜单中,单击“添加节点池”。 根据需要配置节点池。然后,从Local SSD磁盘(每个节点)字段输入所需数量的SSD作为绝对编号。 单击“保存”。
请注意Kubernetes中本地SSD存储的缺点/限制,如documentation链接中所述:
由于本地SSD物理连接到节点的主机虚拟机实例,因此存储在其中的所有数据仅存在于该节点上。由于存储在磁盘上的数据是本地数据,因此应确保您的应用程序能够恢复此数据不可用。
如果将Pod重新安排在远离该节点的位置,则写入本地SSD的Pod可能会失去对存储在磁盘上的数据的访问权限。此外,升级节点会导致数据被删除。
您无法将本地SSD添加到现有节点池。
如果您希望在Kubernetes部署中获得高可用性,则以上几点非常重要。
Kubernetes本地SSD存储是短暂的,并且在容器中运行时会给非平凡的应用程序带来一些问题。 在Kubernetes中,当容器崩溃时,kubelet将重新启动它,但其中的文件将丢失,因为容器以干净状态启动。 此外,当在Pod中一起运行容器时,通常需要这些容器共享文件。
您可以使用Kubernetes Volume抽象来解决上述问题,如以下documentation中所述。
答案 2 :(得分:0)
如果您希望在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是固定大小。