Подготовка Образов ОС
Перед началом установки подготовим образы с желаемой ОС. Создаём инстанс в Yandex Cloud и проводим настройку.
Создание образа для Yandex Cloud в ручном режиме
Базовые настройки
Выключаем SWAP и включаем компоненты ядра
swapoff -a && sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab
modprobe overlay && modprobe br_netfilter
mkdir /etc/containerd
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
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
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
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, подготовленный инстанс можно удалять.