kubernetes 控制平面

本产品的控制平面最少使用3台以上服务器组成

1. 服务器规格

  • 基础配置 | 项目 | 配置 | | —- | —- | | CPU | Intel XEON E3 1231V3 以上 | | 内存 | 4G 以上 | | 磁盘 | 1T 以上 | | 网络 | 2个以上的千兆网口 |
  • 推荐配置
项目 配置
CPU Intel XEON E5 2699V3
内存 32G
磁盘 4T
网络 4*千兆网口

2. kubernetes控制平面相关参数

参数 配置
kubernetes 版本 1.18+
API-Server QPS 3000
API-Server Brust 3000

TIPS: 控制平面也可以使用公有云的kubernetes作为控制平面

Kubernetes 工作节点

1. 服务器规格

  • 基础配置
项目 配置
CPU Intel XEON E3 1231V3 以上
内存 16G 以上
磁盘 4T 以上
网络 2个以上的千兆网口
显卡 GTX 1660 6G 以上
  • 推荐配置
项目 配置
CPU Intel XEON E5 2699V3
内存 128G
磁盘 16T
网络 4*千兆网口
显卡 Tesla V100 * 8

2. 工作操作系统相关参数

软件相关项目 配置
操作系统 Centos 7 \ Ubuntu 18.04
Swap 关闭
文件系统 EXT4
Selinux 关闭
防火墙 IPTABLES
Kubelet 1.18.2 以上
Docker 18.03 以上
NVIDIA-Driver 400+以上

3. Docker 的相关配置

1.确保英伟达容器运行时和英伟达驱动程序都安装在每个工作节点上。有关更多详细信息,请参阅nvidia docker的相关说明。

$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit nvidia-container-runtime $ sudo systemctl restart docker

  1. - Centos
  2. ```shell
  3. $ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
  4. $ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
  5. $ sudo yum install -y nvidia-container-toolkit nvidia-container-runtime
  6. $ sudo systemctl restart docker

2.将英伟达容器运行时启用为每个工作节点上的DOCKER默认运行时。

您需要修改 /etc/docker/deamon.json 添加到每个工作节点上的以下内容:

    {
        "default-runtime": "nvidia",
        "runtimes": {
            "nvidia": {
                "path": "/usr/bin/nvidia-container-runtime",
                "runtimeArgs": []
            }
        },
        "exec-opts": ["native.cgroupdriver=systemd"],
        "log-driver": "json-file",
        "log-opts": {
          "max-size": "100m"
        },
        "storage-driver": "overlay2",
        "registry-mirrors": ["https://registry.docker-cn.com"]
    }

部署本产品

本产品一共有四个组件,分别为:SCV嗅探器、Yoda 调度器、Breakfast 控制器和Tower 图形界面

    1. 部署 SCV 嗅探器

      SCV是一个分布式集群GPU嗅探器。它可以配合Yoda调度器来实现细粒度的GPU调度任务。

$ kubectl apply -f  https://raw.githubusercontent.com/NJUPT-ISL/SCV/master/deploy/deploy.yaml
    1. 部署 Yoda 调度器

      Yoda 调度器是一个基于 GPU 指标的 Kubernetes 调度器

$ kubectl apply -f https://raw.githubusercontent.com/NJUPT-ISL/Yoda-Scheduler/master/deploy/yoda-scheduler.yaml
    1. 部署 Breakfast 控制器

      Breakfast是kubernetes自定义资源控制器,它通过自定义控制器管理运行机器学习pod的生命周期。

$ kubectl apply -f https://raw.githubusercontent.com/NJUPT-ISL/Breakfast/master/deploy/breakfast.yaml
    1. 部署 Tower 图形界面

      Tower是基于Kubernetes的机器学习任务管理图形界面,实现了对机器学习任务生命周期的管理。

$ git clone https://github.com/NJUPT-ISL/Tower.git
$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py runserver

所有产品组件所对应的项目均存在于 https://github.com/NJUPT-ISL 里。