Устранение проблем при установке или обновлении системы
В данном разделе приведены возможные проблемы при установке или обновлении системы и способы их решения.
Установка Kubernetes с помощью Kubespray: несовместимые версии пакетов
Проявление: во время работы скрипта установки Kubernetes с помощью Kubespray возникают ошибки несовместимости системных пакетов и тех, что поставляются вместе с установщиком, например:
cannot install both python3-3.8.19-4.el7.x86_64 from deps-offline and python3-3.8.20-4.el7.x86_64 from @System
Причина: несовместимость версий пакетов, установленных в операционной системе узла кластера, с пакетами, необходимыми для работы установщика.
Решение:
-
На каждом из узлов кластера удалите конфликтующие пакеты, выполнив следующую команду для каждого из них:
sudo dnf remove <package_name>Здесь:
-
<package_name>— имя пакета, установленного в системе (@System). В примере выше —python3-3.8.20-4.el7.x86_64.
В зависимости от операционной системы на узле кластера может использоваться другой пакетный менеджер вместо dnf, например,rpm. -
-
Повторно запустите скрипт установки Kubernetes на машине, с которой запускали его ранее.
Longhorn: ошибка конфигурации
Проявление: при установке или обновлении системы возникает ошибка Unable to attach or mount volumes: unmounted volumes=[data], unattached volumes=[kube-api-access scripts data config tz]: timed out waiting for the condition. Установлен провайдер хранилища Longhorn.
Причина: некорректные настройки Longhorn или на узлах кластера не запущена служба iscsid.
Решение:
-
Проверьте настройки Longhorn. Для этого выполните следующие действия:
-
Осуществите проброс портов. Для этого выполните на хосте с сетевым доступом к master-узлу кластера следующую команду:
kubectl -n longhorn-system port-forward service/longhorn-frontend <local_port>:80Здесь:
-
<local_port>— порт на хосте, по которому будет осуществляться доступ к Longhorn.
-
-
В браузере откройте URL
localhost:<local_port>, где<local_port>— порт с предыдущего шага. Отобразится панель управления Longhorn. -
Чтобы просмотреть и отредактировать конфигурацию узлов (реплик) Longhorn, перейдите в раздел Node.
-
Если количество узлов Longhorn больше, чем количество worker-узлов кластера, удалите лишние узлы. Для этого нажмите на кнопку Remove Node в выпадающем меню в столбце Operation для каждого из лишних узлов.
-
Для каждого узла Longhorn проверьте, не превышает ли объем выделенного ему пространства размер диска узла кластера:
-
В выпадающем меню в столбце Operation нажмите на кнопку Edit node and disks.
-
Если в поле Storage Reserved выделено больше пространства, чем размер диска узла кластера, уменьшите размер пространства и нажмите на кнопку Save.
Рекомендуется выделять под Longhorn 30% диска узла кластера.
-
-
-
Если исправление конфигурации Longhorn не решило проблему, проверьте, запущена ли служба
iscsidна всех узлах кластера:-
На каждом узле кластера выполните команду:
systemctl status iscsid -
Если статус службы отличается от
active (running), запустите ее:systemctl start iscsid
-
Установка helm-чартов: ошибка cannot assign requested address
Проявление: установка helm-чартов завершается с ошибкой, содержащей сообщение cannot assign requested address, например:
Error: create: failed to create: Internal error occurred: Get "https://[::1]:6443/api/v1/namespaces/local-path-provisioner": dial tcp [::1]:6443: connect: cannot assign requested address
Причина: при развертывании кластера Kubernetes на одном или нескольких узлах не было отключено использование IPv6 или в кэше Kubernetes сохранились некорректные настройки.
Решение: убедитесь, что использование IPv6 отключено на всех узлах кластера, перезапустите узлы кластера и установщик системы. Для этого:
-
На каждом узле кластера выполните следующие действия:
-
Откройте файл
/etc/sysctl.d/99-disable-ipv6.conf. -
Проверьте, добавлены ли в файл следующие строки:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 -
Если строки отсутствуют:
-
Добавьте строки в файл и сохраните его.
-
Примените изменения с помощью следующей команды:
sudo sysctl --system
-
-
Перезагрузите узел кластера.
-
-
Перезапустите установщик системы.
MetalLB: ошибка запуска в окружении Альт Сервер
Проявление: отсутствует доступ к веб-интерфейсу системы. На узлах кластера установлена ОС Альт Сервер или Альт СП Сервер. Под metallb-controller в пространстве имен metallb-system не запущен.
Причина: ошибка конфигурации MetalLB.
Решение: внесите правку в конфигурацию MetalLB, выполнив следующую команду на master-узле кластера:
ubectl apply -f - <<EOF
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: evo-pool
namespace: metallb-system
spec:
addresses:
- <system_ip>/32
autoAssign: true
avoidBuggyIPs: false
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: evo-nlb
namespace: metallb-system
EOF
Здесь:
-
<system_ip>— IP-адрес для обращения к системе, зарезервированный на этапе подготовки к установке системы.
Установка в неинтерактивном режиме: ошибка создания стрима NATS
Проявление: установка основного экземпляра системы в неинтерактивном режиме завершается с ошибкой создания стрима NATS:
nats: error: could not create Stream: insufficient storage resources available (10047)
Причина: некорректная настройка лимитов объемов данных в NATS:
-
Суммарный объем данных, указанный с помощью переменных в таблице Настройки стримов на стороне центрального кластера, превышает значение переменной
INFRA_NATS_STORAGE_SIZE. -
Суммарный объем данных, указанный с помощью переменных в таблице Настройки стримов на стороне пространства, превышает значение переменной
INFRA_NATS_SAT_STORAGE_SIZE.
Решение:
-
Измените настройки стримов менеджера пространств в конфигурационном файле установщика согласно пункту 3 инструкции по установке основного экземпляра системы в неинтерактивном режиме так, чтобы устранить некорректную конфигурацию.
-
Перезапустите установку в неинтерактивном режиме.
Обновление системы: повышенное потребление памяти на worker-узлах
Проявление: после обновления системы наблюдается повышенное потребление оперативной памяти (ОЗУ) на одном или нескольких worker-узлах. С подом сервиса evo.space.space-manager наблюдаются следующие проблемы:
-
Под не переходит в состояние
Runningи циклически перезапускается. -
В логах пода отображаются сообщения вида:
Container space-manager failed liveness probe, will be restarted Readiness probe failed: timeout: health rpc did not complete within 1s Readiness probe failed: timeout: failed to connect service "<pod_ip>:50051" within 1s Liveness probe failed: timeout: failed to connect service "<pod_ip>:50051" within 1s
Здесь:
-
<pod_ip>— IP-адрес пода.
-
-
В подробной информации о поде, полученной с помощью команды
kubectl describe, отображается следующая информация о контейнереspace-manager:Last State: Terminated Reason: Error Exit Code: 13
Причина: недостаточный объем ОЗУ для сервиса evo.space.space-manager при обработке активных списков с большим количеством записей.
Решение: временно измените лимиты потребления памяти, настройки сборщика мусора и длительность ожидания liveness-проб сервиса evo.space.space-manager. Для этого:
-
Откройте конфигурацию контроллера Deployment
evo.space.space-managerдля редактирования, выполнив следующую команду:kubectl -n <namespace> edit deployment evo.space.space-managerЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Создайте копию текущей версии конфигурации контроллера, чтобы после решения проблемы восстановить состояние конфигурации и освободить занятые ресурсы.
-
Измените конфигурацию контроллера:
-
В секции
spec.template.spec.containers.resourcesувеличьте запрашиваемый объем ОЗУ и его лимит.Рекомендуется выделить максимально возможный объем ОЗУ, доступный в вашей инсталляции, чтобы гарантировать успешную обработку данных самых больших активных списков. Пример конфигурации для выделения ОЗУresources: limits: cpu: "1" memory: 12Gi requests: cpu: 20m memory: 4Gi -
В секции
spec.template.spec.containers.livenessProbeувеличьте интервал liveness-пробы. Для этого установите 600 секунд (10 минут) в качестве значения параметраinitialDelaySeconds.Пример конфигурации liveness-пробы с интервалом 600 секундlivenessProbe: failureThreshold: 6 grpc: port: 50051 service: "" periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 initialDelaySeconds: 600 -
В секции
spec.template.spec.envдобавьте переменнуюNODE_OPTIONSследующим образом:- name: NODE_OPTIONS value: --max-old-space-size=<max_old_space_size>Здесь:
-
<max_old_space_size>— размер в МиБ секции устаревшей памяти движка V8, используемого Node.js. При заполнении этой секции V8 будет активировать сборщик мусора для более эффективного освобождения ОЗУ.Значение параметра
<max_old_space_size>указывается без единиц измерения.
Рекомендуется устанавливать для
<max_old_space_size>значение в 75% от лимита (limits.cpu) ОЗУ, ранее выделенного для контроллераspec.template.spec.containers.resources. Например, при лимите ОЗУ контроллера12Gi(12288Mi) в качестве<max_old_space_size>рекомендуется указать9216:Пример конфигурации переменнойNODE_OPTIONS- name: NODE_OPTIONS value: --max-old-space-size=9216 -
-
-
Сохраните изменения в конфигурации контроллера.
-
Проследите за состоянием пода
evo.space.space-managerи дождитесь, когда он перейдет в статусRunning:kubectl -n <namespace> get pod -l app.kubernetes.io/name=space-manager --watchЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Восстановите предыдущую версию конфигурации контроллера, чтобы освободить занятые ресурсы:
-
Откройте конфигурацию контроллера Deployment
evo.space.space-managerдля редактирования, выполнив следующую команду:kubectl -n <namespace> edit deployment evo.space.space-managerЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Замените конфигурацию контроллера на копию, созданную на шаге 2 текущей инструкции.
-
Сохраните изменения в конфигурации контроллера.
-
Была ли полезна эта страница?