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

4 篇文章 0 订阅
3 篇文章 0 订阅

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


前言

公司新进了一台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节点
    在这里插入图片描述
    在这里插入图片描述

  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描述的过程。

好的,针对您的问题,我可以给出以下的步骤供您参考: 1. 准备离线安装所需的文件和工具,包括: - k3s二进制文件 - autok3s二进制文件 - kubectl二进制文件 - Docker镜像文件 - 一个Linux服务器,可以访问互联网和您的本地文件系统 2. 在互联网上下载k3sautok3s的二进制文件,并将其上传到您的Linux服务器上。 3. 在Linux服务器上安装Docker,并将您需要的Docker镜像文件导入到Docker中。 4. 使用autok3s二进制文件创建一个名为`offline`的k3s集群,命令如下: ``` ./autok3s create --name offline --provider k3s \ --k3s-server-arg "--disable=traefik" \ --k3s-server-arg "--disable-network-policy" \ --k3s-server-arg "--kubelet-arg=eviction-hard=imagefs.available<5%,nodefs.available<5%" \ --k3s-server-arg "--kubelet-arg=eviction-minimum-reclaim=imagefs.available=10%,nodefs.available=10%" \ --k3s-server-arg "--kubelet-arg=eviction-pressure-transition-period=30s" \ --k3s-server-arg "--kubelet-arg=eviction-soft=imagefs.available<15%,nodefs.available<15%" \ --k3s-server-arg "--kubelet-arg=eviction-soft-grace-period=60s" \ --k3s-server-arg "--kubelet-arg=eviction-soft-termination=imagefs.available<5%,nodefs.available<5%" \ --k3s-server-arg "--kubelet-arg=eviction-threshold=imagefs.available<10%,nodefs.available<10%" \ --k3s-server-arg "--kubelet-arg=eviction-max-pod-grace-period=120" ``` 注意,这里使用了一些k3s的参数来避免一些资源消耗,您可以根据您自己的需求进行调整。 5. 等待autok3s命令执行完成,然后使用kubectl命令来验证集群是否成功创建。 至此,您已经完成了autok3s离线安装k3s的过程。希望这些步骤能够对您有所帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值