Настройка Kubernetes

Требования к кластеру

Для установки требуется Kubernetes-кластер со следующими характеристиками:

Рекомендуемый минимальный объём доступных ресурсов:

Для продуктивной эксплуатации объём ресурсов определяется ожидаемой нагрузкой и количеством одновременно выполняемых задач.

Проверка кластера

Выполните:

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 заранее проверьте: