User data
Использование user data недоступно в кластерах Managed Kubernetes на выделенных серверах.
User data в кластере Managed Kubernetes на облачном сервере — пользовательские параметры для настройки и персонализации кластера. Передаются как скрипт в формате cloud-config (текстовые файлы с YAML-синтаксисом) или как bash-скрипт. Скрипты автоматически кодируются в Base64, а затем передаются на облачный сервер, на котором расположен кластер Managed Kubernetes. На сервере скрипты выполняются с помощью агента cloud-init. Использование user data помогает ускорить и автоматизировать процесс настройки кластера Managed Kubernetes.
Указать user data можно при создании кластера или добавлении новой группы нод.
Подробнее о форматах скриптов cloud-config и bash в инструкции User data formats документации cloud-init.
В скриптах можно передавать параметры для настройки рабочих нод и установки дополнительного программного обеспечения на ноды вне кластера Managed Kubernetes. Например:
Указать user data
Указать user data можно при создании кластера на облачном сервере или добавлении новой группы нод:
- в панели управления — скрипт с данными, которые не закодированы в Base64, в поле User Data. Максимальный размер скрипта — 47 КБ;
- через Terraform — только скрипт с данными, которые закодированы в Base64, в аргумент user_data. Максимальный размер скрипта — 65 535 байт.
После добавления user data изменить скрипт нельзя.
Примеры user data
Отключить IPv6
Cloud-config
Bash-скрипт
#cloud-config
runcmd:
- echo "options ipv6 disable=1" >> /etc/modprobe.d/ipv6.conf
- sysctl -a
- DisableIPv6Conf="/etc/sysctl.d/99-ipv6-disable.conf"
- cat /dev/null > $DisableIPv6Conf
- echo '# Custom sysctl Parameter for ipv6 disable' >> $DisableIPv6Conf
- echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> $DisableIPv6Conf
- echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> $DisableIPv6Conf
- sysctl --system
- sysctl -p
- sysctl -a | grep -ie "local_port" -ie "ipv6" | sort
#!/bin/bash -v
# Disable IPv6 Kernel Module
echo "options ipv6 disable=1" >> /etc/modprobe.d/ipv6.conf
# Disable IPv6 Kernel Parameter
sysctl -a
DisableIPv6Conf="/etc/sysctl.d/99-ipv6-disable.conf"
cat /dev/null > $DisableIPv6Conf
echo '# Custom sysctl Parameter for ipv6 disable' >> $DisableIPv6Conf
echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> $DisableIPv6Conf
echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> $DisableIPv6Conf
sysctl --system
sysctl -p
sysctl -a | grep -ie "local_port" -ie "ipv6" | sort
Создать каталог и загрузить в него файлы по сети
Cloud-config
Bash-скрипт
#cloud-config
runcmd:
- mkdir /run/mydir
- [ wget, "http://example.com", -O, /run/mydir/index.html ]
#!/bin/bash
mkdir /run/mydir
wget http://example.com -O /run/mydir/index.html