autok3s搭建k3s ha集群并支持gpu调度

本文描述了如何利用autok3s搭建k3s集群,同时支持对gpu的调用和切分。

文章目录

  • 前言
  • 一、autok3s是什么
    • 1. k3s
    • 2. autok3s
  • 二、部署步骤
    • 1. autok3s部署
    • 2. 创建集群
  • 三、QA
  • 总结


前言

公司新进了一台8卡a800的机器,老板要求将这台机器做成算力节点。之前利用autok3s在单机上搭建过k3d集群(autok3s单机搭建k3d集群并支持gpu调度),尝到了autok3s部署k3s集群的方便与快捷,并且autok3s支持部署native模式的k3s集群,所以再次基于autok3s部署native的k3s集群。本文详细记录了部署过程。

方案:3 masters + n workers。
master节点找3台比较稳定的机器,首先部署master节点,worker节点可以采用pve进行虚拟化,然后创建出一台worker,在worker上面安装好相应的nvidia驱动等前置操作,然后再将worker做成pve的模板,后续worker可以直接从模板启动并通过autok3s快速join进现有的集群


一、autok3s是什么

1. k3s

k3s的学习请查阅官方文档:k3s

2. autok3s

autok3s是一款k3s的带ui界面操作的自动部署工具,目前支持了k3d,native k3s,k3s on aws,k3s on gcp,k3s on tencent等模式的部署场景。具体使用请查阅官方文档:autok3s

二、部署步骤

  • k3s: v1.22.1-k3s1
  • 集群规划:3 master (ha mode) + n workers
  • autok3s配置ssh keys(参考官方文档)
  • nvidia-driver: 525.125.06

1. autok3s部署

我们在工作站上用docker部署autok3s

# 注意:我们需要将k3d的隐藏目录挂载到宿主机,这样删除autok3s容器后之前生成的k3d集群信息就不会丢失

docker run -itd --restart=unless-stopped --net host --name autok3s-0.8 -v /var/run/docker.sock:/var/run/docker.sock -v /root/.k3d:/root/.k3d --volumes-from autok3s cnrancher/autok3s:v0.8.0

2. 创建集群

  1. 部署master节点
    autok3s搭建k3s ha集群并支持gpu调度_第1张图片
    autok3s搭建k3s ha集群并支持gpu调度_第2张图片

  2. 制作worker 节点模板 (pve虚拟化)

    1. 安装nvidia驱动:ubuntu20.04系统安装nvidia显卡驱动
    2. 安装nvidia-container-runtime
    distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
    && curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - \
    && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    
    apt-get update 
    apt-get install -y nvidia-container-toolkit
    
    1. 将containerd binary(见k3d-gpu-image) copy进/usr/bin目录下
    cp containerd-shim* /usr/bin/
    
    1. 创建/var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl,内容见:k3d-gpu-image
  3. autok3s ui界面join worker node

三、QA

  1. Q:误删除(在master节点执行了/usr/local/bin/k3s-uninstall.sh)了master节点如何恢复集群
    A:只删除的master节点上执行命令curl -sfL https://get.k3s.io | K3S_URL=https://<现有 master 节点 IP>:6443 K3S_TOKEN=<集群 token> sh -s - server,其中token在现有的master节点上的/var/lib/rancher/k3s/server/node-token文件里面
  2. Q: 节点重启后,ubuntu掉显卡驱动
    A: 解决方案如下: ubuntu Nvidia dkms 驱动恢复

总结

本文详细描述了使用autok3s部署k3s高可用集群,并且实现了对gpu资源的调用和切分。整个过程和autok3s部署k3d集群有相似之处,包括制作镜像过程其实是k3d gpu node容器的dockerfile描述的过程。

你可能感兴趣的:(容器,kubernetes,GPU,kubernetes,gpu算力,容器)