Запуск обновления с помощью скрипта box.sh
Чтобы запустить скрипт box.sh с группой upgrade:
-
Создайте группу
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 -
Если в инсталляции Платформы используется программный роутер, при обновлении Neutron на сетевых узлах:
- Запустите плейбук
playbooks/neutron-network-deploy.ymlс указанием параметра--limitи перечислением узлов, с которых перемещены все роутеры на другие сетевые узлы (подробнее — в разделе Миграция объектов сетевого узла перед его перезагрузкой). - Перезапустите сервисы Neutron на обновленных узлах (
neutron-l3-agent,neutron-dhcp-agent,neutron-metadata-agent,neutron-openvswitch-agent). - Дождитесь завершения Full Sync Neutron L3 агента. Проверьте, что в логах L3 агента есть сообщение
FullsyncL3: Stop sync successed. - Повторите шаги по перемещению роутеров на обновленные сетевые узлы.
- Запустите плейбук на остальных сетевых узлах.
- Запустите плейбук
-
Запустите обновление:
$ 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 -
Перезагрузите серверы (подробнее — в разделе Перезагрузка узлов).
Проблема: Службы 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 произошла ошибка.
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))
Решение:
-
Перезапустите сервисы ClickHouse на управляющих узлах:
$ ansible 'cpn*' -i ./vkcloud.yml -m shell -a "systemctl restart clickhouse-server*" -b -
Перезапустите службы ZooKeeper:
$ ansible 'cpn*' -i ./vkcloud.yml -m shell -a "systemctl restart zookeeper.service" -b
Проблема: Не создаются диски на инсталляциях с 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
Проблема: Во время выполнения плейбука 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+obXF7dnC9EkSUgMYqCAwDQYJKoZIhvcNAQELBQAwgaUxCzAJBgNVBAYTAlJVMRYwFAYDVQQIDA1Sb3N0b3Ytb24tRG9uMRYwFAYD...# Название сертификатов сайта: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+lEPtkv6r7xPU3Jwc8sVyGN6iNMA0GCSqGSIb3DQEBCwUAMIGlMQswCQYDVQQGEwJSVTEWMBQGA1UECAwNUm9zdG92LW9uLURvbjEWMBQGA1UEBwwN...1Q9vy969z2VRW6vvSjdcIUBMd3BCQpvVQKom5AAIexNDg3a9p1zhAjMsoHuIfeime7G1myMj6w==-----END CERTIFICATE----------BEGIN PRIVATE KEY-----MIIEogIBAAKCAQEAmsHMp3rtI3IKYUZOgCYV2ihfqz5ATjG/8cyMK7gqG3KL/nwX...OjOP0E3q1va+wUUCbl2c99SK/QWH4Gr/bV7n58QhX0opxf0WP+PqbLezSqpDPe+zX8QwlIKtfHMG39PIqpC/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 работает, но логов от серверов нет.
Решение: В ручном режиме выполните остановку и обновление 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
Проблема: Во время выполнения плейбука 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. При диагностике появляется ошибка.
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.
-
Найдите текущие шаблоны и выведите текущую информацию об этом шаблоне с управляющего узла:
# . ~/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-шаблон.
-
Для создания нового шаблона получите 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 | -
Получите токен пользователя
admin:# openstack token issue -
Заполните данные по новому шаблону:
Здесь:Пример конфигурации в штатном состоянии Платформы# 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, полученный ранее.
-
После создания шаблона в веб-интерфейсе у пользователей отобразятся две версии при попытке создать 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 |+--------------------------------------+-----------------------------------------------+ -
Попробуйте развернуть Kubernetes-кластер из нового шаблона.