VK Private Cloud logo
Помощь
Обновлена 21 августа 2026 г. в 08:12

Запуск обновления с помощью скрипта box.sh

Запуск скрипта box.sh

Чтобы запустить скрипт box.sh с группой upgrade:

  1. Создайте группу upgrade:

    $ cd $NEW_DISTRIB_DIR/repos_mcs_distr_box-$NEW_RELEASE_NAME/upgrade/minimal_yml/$ python3 ./make_upgrade_group.py --groups-file ~/inventory-$NEW_RELEASE_NAME/tools/box.sh.d/groups/ci --groups-dir ~/inventory-$NEW_RELEASE_NAME/tools/box.sh.d/groups/ --out-file ~/inventory-$NEW_RELEASE_NAME/tools/box.sh.d/groups/upgrade --replace-file ./replace.yml
  2. Если в инсталляции Платформы используется программный роутер, при обновлении Neutron на сетевых узлах:

    1. Запустите плейбук playbooks/neutron-network-deploy.yml с указанием параметра --limit и перечислением узлов, с которых перемещены все роутеры на другие сетевые узлы (подробнее — в разделе Миграция объектов сетевого узла перед его перезагрузкой).
    2. Перезапустите сервисы Neutron на обновленных узлах (neutron-l3-agent, neutron-dhcp-agent, neutron-metadata-agent, neutron-openvswitch-agent).
    3. Дождитесь завершения Full Sync Neutron L3 агента. Проверьте, что в логах L3 агента есть сообщение FullsyncL3: Stop sync successed.
    4. Повторите шаги по перемещению роутеров на обновленные сетевые узлы.
    5. Запустите плейбук на остальных сетевых узлах.
  3. Запустите обновление:

    $ cd ~/inventory-$NEW_RELEASE_NAME/vkcloud$ ../ansible-openstack/tools/box.sh deploy -b ../ansible-openstack -i vkcloud.yml -s upgrade -e distro_deploy=true -e env=vkcloud
  4. Перезагрузите серверы (подробнее — в разделе Перезагрузка узлов).

Устранение неполадок

Не стартуют службы Redis

Проблема: Службы Redis не стартуют, поскольку порт уже занят.

Решение: Остановите сервисы Redis на управляющих узлах:

$ ansible 'cpn*' -i ./vkcloud.yml -m shell -a "systemctl stop 'redis-magnumrapid*' 'redis-sentinel-magnumrapid*' 'redis_exporter-redis-magnumrapid*'" -b

Продолжите обновление с момента появления ошибки, перезапустив команды с ключом --skip-to:

$ ../ansible-openstack/tools/box.sh deploy -b ../ansible-openstack -i vkcloud.yml -s upgrade -e distro_deploy=true -e env=vkcloud -e @/home/centos/override.yml -e @/home/centos/saved_passwords/certs --skip-to redis.yml

Ошибка при обновлении ClickHouse

Проблема: При обновлении ClickHouse произошла ошибка.

Пример ошибки
Code: 999. Coordination::Exception: Connection loss, path: All connection tries failed while connecting to ZooKeeper. nodes: 10.30.3.13:2181, 10.30.3.11:2181, 10.30.3.12:2181Code: 999. Coordination::Exception: Unexpected handshake length received: 37 (Marshalling error): while receiving handshake from ZooKeeper.(KEEPER_EXCEPTION) (version 22.9.7.34 (official build))

Решение:

  1. Перезапустите сервисы ClickHouse на управляющих узлах:

    $ ansible 'cpn*' -i ./vkcloud.yml -m shell -a "systemctl restart clickhouse-server*" -b
  2. Перезапустите службы ZooKeeper:

    $ ansible 'cpn*' -i ./vkcloud.yml -m shell -a "systemctl restart zookeeper.service" -b

Не создаются диски на инсталляциях с NVMeBox

Проблема: Не создаются диски на инсталляциях с NVMeBox.

Решение: Измените значение параметра use_lvmlockd в файле lvm.conf на 1. На управляющем узле выполните команды:

# grep 'use_lvmlockd' /etc/lvm/lvm.confuse_lvmlockd = 0# sed -i 's/use_lvmlockd = 0/use_lvmlockd = 1/g' /etc/lvm/lvm.conf# grep 'use_lvmlockd' /etc/lvm/lvm.confuse_lvmlockd = 1

Удаление тестовых проектов

Проблема: Во время выполнения плейбука post-deploy.yml произошла ошибка.

Пример ошибки
TASK [postdeploy : include] ****...... 'dict object' has no attribute 'user1'...

Решение: Удалите вызов тестовых проектов из файла postdeploy.yml, оставив только служебные.

Продолжите обновление с момента появления ошибки, перезапустив команды с ключом --skip-to:

deploy$ ../ansible-openstack/tools/box.sh deploy -b ../ansible-openstack -i vkcloud.yml -s upgrade -e env=vkcloud --skip-to post-deploy.yml

Загрузка Glance-образов

Проблема: Во время выполнения плейбука imageloader.yml произошла ошибка.

Пример ошибки
TASK [imageloader : Image Loader | Create empty bare for image] ****...... Provided object does not match schema 'image': False is not of type 'string' ......Status code was 400 and not [201, 409]: HTTP Error 400: Bad Reques...

Решение: На всех управляющих узлах перезапустите сервис openstack-glance-api:

deploy$ ansible -b -i vkcloud.yml -m shell -a "systemctl restart openstack-glance-api" cpn*

Продолжите обновление с момента появления ошибки, перезапустив команды с ключом --skip-to:

deploy$ ../ansible-openstack/tools/box.sh deploy -b ../ansible-openstack -i vkcloud.yml -s upgrade -e env=vkcloud --skip-to imageloader.yml

Проблемы сети

Проблема: В случае сетевых проблем в плейбуках возникают плавающие ошибки при взаимодействии сервисов по сети (тайм-ауты, случайные коды 5XX, ошибки скачивания, отказ в соединении и прочее).

Пример ошибок
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "XXX": Unauthorized...Failed to download packages: XXX...Request failed: <urlopen error [Errno 111] Connection refused>...Status code was -1 and not [200]: Connection failure: timed out...The checksum for XXX did not match

Решение: Перезапустите плейбук, при выполнении которого возникла ошибка. Продолжите обновление с момента появления ошибки, перезапустив команды с ключом --skip-to:

deploy$ ../ansible-openstack/tools/box.sh deploy -b ../ansible-openstack -i vkcloud.yml -s upgrade -e env=vkcloud --skip-to <ПЛЕЙБУК>

Здесь <ПЛЕЙБУК> — имя плейбука, при выполнении которого возникла ошибка.

Если ошибка с сетью произойдет повторно, проведите диагностику проблемы: выполните аналогичные запросы вручную и просмотрите логи. Для таких ошибок нет универсального решения.

Обновление ошибки доверенных сертификатов

Проблема: Во время выполнения плейбука opensearch.yml произошла ошибка.

Пример ошибки
...unable to load certificate...

Решение: Проверьте корректность сертификатов и ключей в Inventory:

deploy$ vi group_vars/vkcloud/vars.yml...# CA-сертификат (при наличии)trusted_ca_certs:  - content: |      -----BEGIN CERTIFICATE-----      MIIGLTCCBBWgAwIBAgIUEEfZuV5+obXF7dnC9EkSUgMYqCAwDQYJKoZIhvcNAQEL      BQAwgaUxCzAJBgNVBAYTAlJVMRYwFAYDVQQIDA1Sb3N0b3Ytb24tRG9uMRYwFAYD...# Название сертификатов сайта:ssl_sertificate_name: self-signed-wildcard.private.infra.devmail.ru...deploy$ vi group_vars/vkcloud/vault.yml...# Корректность сертификатов и ключей сайта, а также их названия:vault_ssl_certs:  self-signed-wildcard.private.infra.devmail.ru: |    -----BEGIN CERTIFICATE-----    MIIE4zCCAssCFB+lEPtkv6r7xPU3Jwc8sVyGN6iNMA0GCSqGSIb3DQEBCwUAMIGl    MQswCQYDVQQGEwJSVTEWMBQGA1UECAwNUm9zdG92LW9uLURvbjEWMBQGA1UEBwwN    ...    1Q9vy969z2VRW6vvSjdcIUBMd3BCQpvVQKom5AAIexNDg3a9p1zhAjMsoHuIfeim    e7G1myMj6w==    -----END CERTIFICATE-----    -----BEGIN PRIVATE KEY-----    MIIEogIBAAKCAQEAmsHMp3rtI3IKYUZOgCYV2ihfqz5ATjG/8cyMK7gqG3KL/nwX    ...    OjOP0E3q1va+wUUCbl2c99SK/QWH4Gr/bV7n58QhX0opxf0WP+PqbLezSqpDPe+z    X8QwlIKtfHMG39PIqpC/22pYerD1xb+meNdGO7bMckiwrfSjxSk=    -----END PRIVATE KEY-----...

Дополнительно проверьте эти сертификаты и ключи на корректность:

  • Сертификаты сайта должны быть wildcard (Common name должен быть вида *.private.infra.devmail.ru).
  • Сертификаты выпущены доверенным CA (из переменной trusted_ca_certs) или открытым CA.
  • Сертификаты не просрочены.

Запустите обновление Платформы с начала:

deploy$ ../ansible-openstack/tools/box.sh deploy -b ../ansible-openstack -i vkcloud.yml -s upgrade -e env=vkcloud

Отладка логов в OpenSearch

Проблема: После завершения обновления Платформы, веб-интерфейс OpenSearch работает, но логов от серверов нет.

Решение: В ручном режиме выполните остановку и обновление Logstash:

lm001$ sudo systemctl stop logstash-lm001 (прервите команду через CTRL+C)lm001$ ps aux | grep logstashlogstash 49647 26.3  7.5 7077280 1230532 ? SNsl Feb01 2623:53 /usr/share/logstash/jdk/bin/java ...lm001$ sudo kill -9 49647lm001$ sudo dnf remove logstash -ylm001$ sudo dnf clean alllm001$ sudo rm -f /etc/logstash/logstash-*/log4j2.properties

Запустите плейбук logstash.yml:

deploy001$ ansible-playbook -i vkcloud.yml -e env=vkcloud ../ansible-openstack/playbooks/logstash.yml

После выполнения команды установите права на файл .lock (при его наличии):

lm001$ sudo chown logstash. /srv/logstash/logstash-lm001/.lock

Запуск audit2.0 с самоподписанными сертификатами

Проблема: Во время выполнения плейбука helm-audit-admin.yml произошла ошибка.

Пример ошибки
TASK [helm-chart-installer : Helm | Print k8s failed pods log from async task] ****...... x509: certificate relies on legacy Common Name field, use SANs instead...

Решение: Проверьте, что значение параметра X509v3 Subject Alternative Name сертификата заполнено:

any$ openssl x509 -in <СЕРТИФИКАТ>.crt -text -noout...X509v3 Subject Alternative Name:    DNS:*.private.infra.devmail.ru, DNS:private.infra.devmail.ru...

Здесь <СЕРТИФИКАТ> — сертификат из переменной vault_ssl_certs.

Если значения нет, перезакажите сертификат, оформив записи в Subject Alternative Name. Поместите новый сертификат в переменную vault_ssl_certs и запустите плейбуки *_haproxy.yml для его применения:

deploy$ ansible-playbook -i vkcloud.yml -e env=vkcloud ../ansible-openstack/playbooks/public_haproxy.ymldeploy$ ansible-playbook -i vkcloud.yml -e env=vkcloud ../ansible-openstack/playbooks/private_haproxy.yml

Продолжите обновление с момента появления ошибки, перезапустив команды с ключом --skip-to:

deploy$ ../ansible-openstack/tools/box.sh deploy -b ../ansible-openstack -i vkcloud.yml -s upgrade -e env=vkcloud --skip-to helm-audit-admin.yml

Не создается кластер Kubernetes

Проблема: Не создается кластер Kubernetes. При диагностике появляется ошибка.

Пример ошибки
PING lk17-161.private.corp.devmail.ru (10.30.6.3) 56(84) bytes of data.64 bytes from 10.30.6.3 (10.30.6.3): icmp_seq=1 ttl=62 time=3.28 ms--- lk.private.corp.devmail.ru ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0msrtt min/avg/max/mdev = 3.277/3.277/3.277/0.000 msTrying to pull repo.private.corp.devmail.ru:5010/magnum-agent:v1.3.4...010/magnum-agent: manifest unknownpts-user (scripts in /var/lib/cloud/instance/scripts)init/config/cc_scripts_user.py'>) failed

Решение: Вручную добавьте шаблон (cluster-template-list), создав копию существующего шаблона. Подмените ключевые параметры для версии 4.3.DS.

  1. Найдите текущие шаблоны и выведите текущую информацию об этом шаблоне с управляющего узла:

    # . ~/openrc.sh# magnum cluster-template-list+--------------------------------------+-------------------------------------------+| uuid                                 | name                                      |+--------------------------------------+-------------------------------------------+| 9fac7a57-cbad-4912-b1e9-cecf4d21c320 | Kubernetes-almalinux-v1.27.6-mcs.external |+--------------------------------------+-------------------------------------------+# magnum cluster-template-show 9fac7a57-cbad-4912-b1e9-cecf4d21c320+-----------------------+------------| Property              | Value+-----------------------+------------| uuid                  | 9fac7a57-cbad-4912-b1e9-cecf4d21c320| name                  | Kubernetes-almalinux-v1.27.6-mcs.external...

    Если Kubernetes-шаблоны привязаны к проектам, добавьте OpenStack-ID проекта в каждую команду.

    Пример команды с OpenStack-ID проекта
    # magnum --os-project-id 353db9887b5a4ad783f2e5b2b535df4a cluster-template-list

    Повторите действия для каждого проекта, где есть созданный Kubernetes-шаблон.

  2. Для создания нового шаблона получите ID Glance-образа для кластера Kubernetes и его шаблоны конфигураций ВМ:

    # openstack flavor list | grep Standard-2-6| 0aaddda5-e0ea-42b0-9e0f-6d4c2ee9df7f | Standard-2-6   |  6144 |    0 |         0 |     2 | True# openstack image list | grep almalinux-9-v1.27.6.202410100552.git57412380| 91205e2d-6b8f-4c18-9fce-7e223e456c93 | almalinux-9-v1.27.6.202410100552.git57412380     | active |
  3. Получите токен пользователя admin:

    # openstack token issue
  4. Заполните данные по новому шаблону:

    Пример конфигурации в штатном состоянии Платформы
    # curl -g -i -X POST http://<ЭНДПОИНТ>:9511/v1/clustertemplates -H "Accept: application/json" -H "Content-Type: application/json" -H "OpenStack-API-Version: container-infra latest" -H "User-Agent: None" -H "X-Auth-Token: <ТОКЕН>" -d '{"uuid": "9fac7a57-cbad-4912-b1e9-cecf4d21c321", # +1 - чтобы получился уникальный ID"name": "Kubernetes-almalinux-v1.27.6.4.2-mcs.external", # Оставьте такой же или измените, чтобы их отличать в веб-интерфейсе"coe": "kubernetes","image_id": "91205e2d-6b8f-4c18-9fce-7e223e456c93", # Изменить на найденный выше Glance-образ (шаг 4)"flavor_id": "0aaddda5-e0ea-42b0-9e0f-6d4c2ee9df7f",  # Изменить на найденный выше Flavor (шаг 4)"master_flavor_id": "0aaddda5-e0ea-42b0-9e0f-6d4c2ee9df7f", # Изменить на найденный выше Flavor (шаг 4)"dns_nameserver": "10.235.100.1", # Подставьте старое значение"keypair_id": null,"external_network_id": "86a305a2-f668-4fe4-bc62-0a23a4aa93ee", # Подставьте старое значение"fixed_network": null,"fixed_subnet": null,"network_driver": "calico","apiserver_port": null,"docker_volume_size": null,"cluster_distro": "almalinux","volume_driver": null,"registry_enabled": false,"labels": {  "prometheus_monitoring": "true",  "calico_ipv4pool": "10.100.0.0/16",  "kube_ccm_tag": "1.27.6-mcs.2", # Поменяйте под версию 4.3.DS  "kube_autoscaler_tag": "1.27.3-mcs.3", # Поменяйте под версию 4.3.DS  "container_infra_prefix": "repo.private.corp.devmail.ru:5010/", #  Подставьте старое значение  "use_ccm": "true",  "kube_core_tag": "1.27.6-mcs.2", # Поменяйте под версию 4.3.DS  "task_support": "true",  "calico_tag": "v3.26.3",  "calico_cni_tag": "v3.26.3",  "calico_kube_controllers_tag": "v3.26.3",  "cinder_csi_plugin_version": "1.27.2-mcs.2", # NEW  "kube_dashboard_version": "v2.3.1",  "ingress_controller_tag": "v1.2.1",  "cgroup_driver": "systemd",  "etcd_tag": "v3.5.10",  "config_drive": "true"},"tls_disabled": false,"public": true,"server_type": "vm","insecure_registry": "true","docker_storage_driver": "devicemapper","master_lb_enabled": true,"floating_ip_enabled": true,"is_deprecated": false,"executor_image_tag": "0.0.0-202501280838.git7ca92117", # Поменяйте под версию 4.3.DS"magnum_agent_tag": "v1.3.5"}' # Поменяйте под версию 4.3.DS
    Здесь:
    • <ЭНДПОИНТ> — внутренний эндпоинт.
    • <ТОКЕН> — токен пользователя admin, полученный ранее.
  5. После создания шаблона в веб-интерфейсе у пользователей отобразятся две версии при попытке создать Kubernetes-кластер:

    # magnum cluster-template-listWARNING: The magnum client is deprecated and will be removed in a future release.Use the OpenStack client to avoid seeing this message.+--------------------------------------+-----------------------------------------------+| uuid                                 | name                                          |+--------------------------------------+-----------------------------------------------+| 9fac7a57-cbad-4912-b1e9-cecf4d21c320 | Kubernetes-almalinux-v1.27.6-mcs.external     || 9fac7a57-cbad-4912-b1e9-cecf4d21c321 | Kubernetes-almalinux-v1.27.6.4.2-mcs.external |+--------------------------------------+-----------------------------------------------+
  6. Попробуйте развернуть Kubernetes-кластер из нового шаблона.

Была ли статья полезна?