Перейти к содержанию

Подготовка Образов ОС

Внимание!

Работа GPU возможна только на узлах с ядром linux 6.1+

Перед началом установки подготовьте образы с желаемой ОС. Создайте инстанс в облаке или гипервизоре и проведите настройку.

Базовые настройки

Выключите SWAP и включите компоненты ядра

swapoff -a && sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab
modprobe overlay && modprobe br_netfilter
mkdir /etc/containerd
Создайте файл /etc/sysctl.d/sysctl.conf с помощью команды
cat <<EOF > /etc/sysctl.d/sysctl.conf
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.all.disable_ipv6=0
net.ipv4.tcp_congestion_control=bbr
vm.overcommit_memory=1
kernel.panic=10
kernel.panic_on_oops=1
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=524288
EOF
Создайте файл /etc/modules-load.d/containerd.conf с помощью команды
cat <<EOF > /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

Отключение брандмауэра

ufw disable

Загрузка kubernetes компонентов

Загрузите с нашего публичного S3-хранилища дополнительные файлы:

- containerd
- k8s_${Kubernetes_Version}/(deb|rpm)/*

Заметка

Kubernetes_Version - соответствует желаемой версии Kubernetes deb - для Ubuntu и Astra rpm - для RedOS

Установка kubernetes компонентов

Установите зависимости kubernetes

apt install -y socat ebtables ethtool conntrack open-iscsi nfs-common
Установите containerd из скачанного архива

tar -C / -xvf cri-containerd-cni-*.tar.gz

Установите Kubernetes пакеты

for pkg in cri-tools kubernetes-cni kubectl kubelet kubeadm; do
dpkg --install $pkg*.deb
done
apt-mark hold cri-tools kubernetes-cni kubectl kubelet kubeadm

Далее примените изменения в sysctl и включите containerd

sysctl --system
systemctl daemon-reload && systemctl enable containerd && systemctl start containerd

Установите зависимости kubernetes

yum install -y socat ebtables ethtool conntrack iscsi-initiator-utils nfs-utils
systemctl enable iscsid
systemctl start iscsid
Установите containerd из скачанного архива

tar -C / -xvf cri-containerd-cni-*.tar.gz

Установите Kubernetes пакеты

rpm -U *.$(uname -m).rpm

Далее примените изменения в sysctl и включите containerd

sysctl --system
systemctl daemon-reload && systemctl enable containerd && systemctl start containerd

Дополнительные сетевые настройки

Создайте юнит для автозапуска настроек

cat <<EOF > /etc/systemd/system/ethtool-conf.service
[Unit]
After=network.target

[Service]
ExecStart=/usr/local/bin/ethtool-conf.sh

[Install]
WantedBy=default.target
EOF
И сам скрипт

Заметка

Используйте имя вашего основного интерфейса вместо ${INTERFACE_NAME}

cat <<EOF > /usr/local/bin/ethtool-conf.sh
#!/bin/bash

ethtool -K ${INTERFACE_NAME} tx-udp_tnl-csum-segmentation off
ethtool -K ${INTERFACE_NAME} tx-udp_tnl-segmentation off
EOF
chmod 744 /usr/local/bin/ethtool-conf.sh
chmod 664 /etc/systemd/system/ethtool-conf.service
systemctl daemon-reload
systemctl enable ethtool-conf.service --now

Настройка Cloud-init

Очистите cloud-init и выключите инстанс

cat /dev/null > /etc/machine-id
cloud-init clean --logs

Установите утилиту cloud-utils-growpart

yum install -y cloud-utils-growpart

Добавьте опцию "prefer_fqdn_over_hostname: false"

echo "prefer_fqdn_over_hostname: false" > /etc/cloud/cloud.cfg.tmp
cat /etc/cloud/cloud.cfg >> /etc/cloud/cloud.cfg.tmp
rm -f /etc/cloud/cloud.cfg
mv /etc/cloud/cloud.cfg.tmp /etc/cloud/cloud.cfg

Включите автозапуск cloud-init

systemctl enable cloud-init-local.service
systemctl enable cloud-init.service
systemctl enable cloud-config.service
systemctl enable cloud-final.service

Очистите cloud-init и выключите инстанс

cat /dev/null > /etc/machine-id
cloud-init clean --logs

Поддержка GPU

Для создания образа с поддержкой GPU для baremetal или vsphere инсталяций потребуются дополнительные настройки

Добавьте дополнительную опцию загрузки ядра: в файл /etc/default/grub, в строку GRUB_CMDLINE_LINUX_DEFAULT=

pci=nocrs,realloc
Итоговый файл должен иметь вид:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="parsec.mac=0 parsec.max_ilev=0 quiet net.ifnames=0 pci=nocrs,realloc"

cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-6.1.90-1-generic root=UUID=c3e1f0eb-c6f9-49fe-b726-f28ff6755df4 ro parsec.mac=0 parsec.max_ilev=0 quiet net.ifnames=0 pci=nocrs,realloc

Выключите машину

shutdown now

Для гипервизора vsphere потребеются дополнительные опции машин в Advanced Parameters

Для этого выберете выключенную машину для образа, заходим в Settings > Advanced Parameters Advanced Parameters Добавьте дополнительные параметры

pciPassthru.64bitMMIOSizeGB=128
pciPassthru.use64bitMMIO=TRUE

Создание образа

Выключите машину, если не выключили в рамках настройки GPU

shutdown now

После выключения подготовленного инстанса сконвертируйте его образ. В зависимости от использованного облака, воспользуйтесь инструкцией Yandex или инструкцией VK

Когда статус образа перейдет в статус Ready, подготовленный инстанс можно удалять.