Для установки требуется 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.
Рабочая станция администратора и узлы Kubernetes должны иметь доступ к registry, указанному в конфигурации установки.
Если registry использует внутренний центр сертификации, его корневой сертификат необходимо добавить в доверенные сертификаты Docker или container runtime на всех Kubernetes-узлах.
Для registry без TLS необходимо заранее разрешить его использование в настройках container runtime и указать соответствующие параметры установки.
DNS-имя приложения должно разрешаться в адрес Ingress Controller или внешнего балансировщика.
Проверьте:
getent hosts <доменное-имя>
curl -kI https://<доменное-имя>До начала установки ответ 404 или 503 допустим. Ошибка разрешения имени или сетевой timeout указывают на проблему DNS, маршрутизации или межсетевого экрана.
Если 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 заранее проверьте:
разрешение DNS-имён;
доступность портов;
корректность учётных данных;
наличие базы данных и необходимых прав;
наличие S3 bucket или прав на его создание;
доверие к TLS-сертификатам внешних сервисов.