Настройка Kubernetes
Требования к кластеру
Для установки требуется Kubernetes-кластер со следующими характеристиками:
архитектура узлов
linux/amd64;все рабочие узлы находятся в состоянии
Ready;настроен StorageClass по умолчанию;
установлен Ingress Controller и зарегистрирован IngressClass; для ingress-nginx используйте приложенную к этой странице PDF-инструкцию (Helm chart 4.15.1, controller v1.15.1);
доступен container registry для загрузки образов дистрибутива;
настроены DNS и маршрутизация до внешних сервисов;
в кластере отсутствуют ограничения, запрещающие создание необходимых ресурсов в целевом namespace.
Рекомендуемый минимальный объём доступных ресурсов:
суммарно не менее
4 CPU;суммарно не менее
16 GiBоперативной памяти;не менее
8 GiBдоступной памяти на одном рабочем узле.
Для продуктивной эксплуатации объём ресурсов определяется ожидаемой нагрузкой и количеством одновременно выполняемых задач.
Проверка кластера
Выполните:
kubectl cluster-info
kubectl get nodes -o wide
kubectl get storageclass
kubectl get ingressclassВсе используемые узлы должны иметь состояние Ready. Один StorageClass должен быть отмечен как используемый по умолчанию.
Создайте namespace или укажите существующий:
export NS=offline
kubectl create namespace "$NS" \
--dry-run=client \
-o yaml | kubectl apply -f -Проверьте права текущего пользователя:
kubectl auth can-i create deployments -n "$NS"
kubectl auth can-i create statefulsets -n "$NS"
kubectl auth can-i create services -n "$NS"
kubectl auth can-i create secrets -n "$NS"
kubectl auth can-i create jobs -n "$NS"Для каждой команды ожидается результат yes.
Container registry
Рабочая станция администратора и узлы Kubernetes должны иметь доступ к registry, указанному в конфигурации установки.
Если registry использует внутренний центр сертификации, его корневой сертификат необходимо добавить в доверенные сертификаты Docker или container runtime на всех Kubernetes-узлах.
Для registry без TLS необходимо заранее разрешить его использование в настройках container runtime и указать соответствующие параметры установки.
DNS и сетевой доступ
DNS-имя приложения должно разрешаться в адрес Ingress Controller или внешнего балансировщика.
Проверьте:
getent hosts <доменное-имя>
curl -kI https://<доменное-имя>До начала установки ответ 404 или 503 допустим. Ошибка разрешения имени или сетевой timeout указывают на проблему DNS, маршрутизации или межсетевого экрана.
TLS
Если TLS завершается в Kubernetes, создайте Secret с сертификатом:
kubectl -n "$NS" create secret tls ml-apps-tls \
--cert=./tls.crt \
--key=./tls.key \
--dry-run=client \
-o yaml | kubectl apply -f -Имя Secret указывается в конфигурации установки.
Если TLS завершается на внешнем балансировщике, Kubernetes Secret создавать не требуется.
Внешние PostgreSQL и S3
При использовании внешних PostgreSQL или S3 заранее проверьте:
разрешение DNS-имён;
доступность портов;
корректность учётных данных;
наличие базы данных и необходимых прав;
наличие S3 bucket или прав на его создание;
доверие к TLS-сертификатам внешних сервисов.