Установка BAYRELL CLoud OS Версия 0.4

Данная инструкция описывает процесс установки BAYRELL Cloud OS альфа версии 0.4. Репозиторий с ОС доступен на гихабе.

Базовая настройка и установка Docker Swarm

Для установки Облачной ОС в LXC контейнер воспользуйтесь следующей инструкцией.

1) Перед тем, как устанавливать Облачную ОС настройте саму систему:

2) Обновите систему

apt-get update
apt-get upgrade

3) Установите dnsmasq для Docker Swarm по инструкции

Установка Docker Swarm

1) Установите Docker

curl -sSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker
apt-get install docker-compose

2) В файл /etc/iptables/rules.v4 добавьте строчки перед -A ALLOW-INPUT -j RETURN. Это нужно для Docker Swarm

# Разрешить Docker Swarm
-A ALLOW-INPUT -p tcp -m tcp --dport 2376 -j ACCEPT
-A ALLOW-INPUT -p tcp -m tcp --dport 2377 -j ACCEPT
-A ALLOW-INPUT -p tcp -m tcp --dport 7946 -j ACCEPT
-A ALLOW-INPUT -p udp -m udp --dport 7946 -j ACCEPT
-A ALLOW-INPUT -p udp -m udp --dport 4789 -j ACCEPT

# Разрешаем входящие соединения DNS
-A ALLOW-INPUT -i docker0 -p udp -m udp --dport 53 -j ACCEPT
-A ALLOW-INPUT -i docker0 -p tcp -m tcp --dport 53 -j ACCEPT
-A ALLOW-INPUT -i docker_gwbridge -p udp -m udp --dport 53 -j ACCEPT
-A ALLOW-INPUT -i docker_gwbridge -p tcp -m tcp --dport 53 -j ACCEPT

После перезагрузки данные команды применятся

3) В файле /etc/docker/daemon.json пропишите.

{
  "log-driver": "journald",
  "log-opts": {
    "labels":"com.docker.swarm.service.name"
  },
  "dns": ["172.17.0.1"]
}

Это нужно для хранения логов рекомендуется journald, чтобы автоматически происходила ротация логов. А также, чтобы контейнеры использовали dnsmasq.

Можно также добавить строчки

"max-concurrent-uploads": 1,
"max-concurrent-downloads": 1,

Они позволяют ограничить количество потоков на загрузку докер образов. По умолчанию 3 потока.

4) В крон через команду sudo crontab -e пропишите команду, которая будет автоматически очищать контейнеры

0 */2 * * * docker system prune --filter "until=24h" -f > /dev/null

5) Создайте кластер

docker swarm init

Если у вас несколько IP адресов у распы, то нужно указать конкретный IP адрес, по которому должен создаваться кластер, например так:

docker swarm init --advertise-addr 192.168.1.25

Важно, что сменить IP адрес потом будет нельзя.

После инициализации кластера, команда выдаст ключ подключения к Docker swarm. Если вы забыли Token, то введите команду docker swarm join-token manager на primary node. Подключитесь к остальным серверам и выполните команду, для того чтобы их подключить к кластеру.

docker swarm join --token TOKEN IP-АДРЕС-ГЛАВНОГО-СЕРВЕРА

Если вы забыли токен, его можно узнать командой:

docker swarm join-token manager

6) Выдайте всем нодам в кластере уникальные имена

Узнать ID нод можно командой

docker node ls

Назначить имя можно командой:

docker node update --label-add name=docker0 raspa1

Рекомендуется первый сервер назвать именем docker0, т.к. это имя далее указано в конфигах Cloud OS.

Проверить назначенные label можно командой

docker node inspect self --pretty

7) Добавьте пользователя ubuntu в группу docker

usermod -a -G docker ubuntu

8) Перезагрузите сервер

init 6

Установка NVIDIA драйверов для нейронных сетей

Данную инструкцию нужно выполнять, если вы собираетесь заниматься искусственным интеллектом. На сервере для этого должна быть установлена видеокарта от NVIDIA.

1) Установите драйвер на сервер. Драйвер должен быть последней версии.

aptitude install nvidia-driver-515-server

2) Установите плагин libnvidia-containuer.

Определите версию Убунту

export distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

Установите ключ nvidia:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

Добавьте репозиторий:

wget https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list -O "/etc/apt/sources.list.d/nvidia-container-toolkit.list"

sed -i 's|deb https://|deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://|g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

Установите Docker плагин:

apt-get update
apt-get install -y nvidia-docker2

3) Добавьте строчки в /etc/docker/daemon.json

{
  "log-driver": "journald",
  "log-opts": {
    "labels":"com.docker.swarm.service.name"
  },
  "dns": ["172.17.0.1"],
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}

4) Перезапустите Docker:

systemctl restart docker

5) Выполните команду:

docker run --rm --gpus all nvidia/cuda:11.7.1-base-ubuntu20.04 nvidia-smi

Если команда выполнилась успешно и указала версию драйвера, значит все установлено корректно.

Установка BAYRELL Cloud OS на сервер

Под пользователем ubuntu выполните:

1) Обновите время

sudo ntpdate -s time.nist.gov

2) Запустите облачную ОС в домашнюю папку

cd ~
git clone https://github.com/bayrell-os/cloud_os
cd cloud_os

Скачайте образы

./cloud_os.sh download

и установите ОС

./cloud_os.sh setup

Подождите пока выполнится скрипт установки. Он также вас попросит ввести логин администратора, и в конце создаст и выведет его на экран.

3) Добавьте в автозапуск облачную ОС

Создайте файл через команду

nano /etc/rc.local

Пропишите в нем команды:

#!/bin/bash

for i in $(seq 0 6); do
	sleep 10
	docker start cloud_os_standard_1
done

Поставьте флаг выполнения для этого файла

chmod +x /etc/rc.local

4) Установка завершена!

Установка Desktop Client

Для того чтобы установить Desktop Client перейдите по ссылке.