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

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

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

Создание образа для Yandex Cloud в ручном режиме

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

Выключаем 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

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

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

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

Устанавливаем утилиту 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
shutdown now

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

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

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