Размещение образов#
Стадия применима к сценарию без доступа в интернет; при онлайн-обновлении пропустите ее.
На этой стадии сценарий Ansible из состава установочного пакета размещает образы контейнеров новой версии на рабочих узлах кластера.
Сценарий копирует архивы образов на каждый узел из инвентаря и импортирует их для службы containerd, поэтому отдельный реестр образов не требуется.
Команды этой стадии необходимо выполнять из каталога установочного пакета, распакованного на стадии подготовки:
cd ~/aa-bundle
Описание инвентаря#
В файле tools/inventory.yml перечислите узлы кластера, на которых могут запускаться поды платформы:
all:
children:
k8s_nodes:
hosts:
node1.example.com:
node2.example.com:
node3.example.com:
vars:
ansible_user: astra
ansible_become: true
ansible_ssh_private_key_file: ~/.ssh/astra
images_dir: /tmp/images
Примечание
Узлы плоскости управления (control plane) с ограничением NoSchedule не следует включать в описание инвентаря.
Поды платформы на них не запускаются, а размещение образов занимает время и место на диске.
Если ограничение с узлов снято, включите их в описание.
Установка rsync на узлы#
Установите сервис rsync на все узлы инвентаря:
ansible -i tools/inventory.yml k8s_nodes -b -m ansible.builtin.package -a "name=rsync state=present"
Примечание
Сценарий размещения образов содержит задачу автоматической установки rsync, однако эта задача не выполняется, что зафиксировано в списке известных проблем.
Размещение образов#
Запустите сценарий размещения образов:
ansible-navigator run tools/load-containerd-images.yml -i tools/inventory.yml
Сценарий выполняет следующие действия:
Проверяет свободное место на каждом узле для обеспечения прогнозируемой занятости диска не выше 80%.
Копирует архивы образов из каталога
images/во временный каталог/tmp/imagesна каждом узле.Импортирует образы для службы
containerd.Если используется
containerdверсии 1.7 и новее, помечает импортированные образы меткойio.cri-containerd.pinned, которая запрещает службеkubeletавтоматически удалять эти образы при нехватке места на диске, пока поды еще не запущены. Для более ранних версийcontainerdсценарий выводит предупреждение о том, что пометка недоступна, однако конфигурация остается работоспособной.Удаляет временный каталог
/tmp/imagesна узлах (переменнаяcleanup_image_archives, по умолчаниюtrue).
Примечание
Выполнение сценария занимает десятки минут, в течение которых на каждый узел передается по сети около 24 ГБ, а затем containerd распаковывает образы.
При работе по нестабильному каналу запускайте сценарий в сеансе tmux или screen.
Проверка размещения#
Убедитесь, что образы новой версии доступны на узлах кластера:
ssh <user>@<node> 'sudo ctr -n k8s.io images ls | grep ":2.1"'
Здесь:
<user>– название учетной записи пользователя на узле кластера;<node>– доменное имя или IP-адрес любого узла из инвентаря.
Ожидаемый результат: список всех образов версии 2.1 из каталога images/ установочного пакета.