Перейти к основному содержимому

Managed Kubernetes

TatNet разворачивает Kubernetes-кластеры, узлами которых служат обычные виртуальные машины платформы под управлением Talos Linux — иммутабельной ОС без SSH и пакетного менеджера, где всё состояние задаётся конфигурацией.

Платформа берёт на себя запуск и обновление узлов, сеть, сертификаты и кластерные компоненты. Внутрь кластера вы ходите обычным kubectl.

Создание кластера​

При создании указываются:

  • Регион — где будут стоять узлы.
  • Версия Kubernetes — из списка поддерживаемых.
  • Пулы узлов — control-plane и рабочие: количество и конфигурация машин.
  • Режим доступа к API — см. ниже.

Узлы создаются как виртуальные машины, но в списке ВМ проекта они не показываются и обычными операциями (остановить, удалить) не управляются: их жизненным циклом распоряжается кластер.

Доступ к API кластера​

Три режима, как у EKS:

РежимКто достаёт API
publicиз интернета
public_privateиз интернета и изнутри сети узлов
privateтолько изнутри сети узлов

Адрес в kubeconfig — DNS-имя вида <идентификатор>.k8s.tatnet.cloud, а не IP. Поэтому смена режима доступа не делает выданный kubeconfig недействительным.

kubeconfig скачивается из панели.

Сеть​

CNI — Cilium, разворачивается автоматически. Узлы выходят в интернет через NAT платформы; в приватном режиме кластер работает без выхода наружу, а образы тянутся через зеркала реестров внутри региона.

Балансировщики нагрузки​

Service типа LoadBalancer создаёт настоящий балансировщик платформы — этим занимается встроенный cloud-controller-manager. Такие балансировщики видны в панели, помечены принадлежностью к кластеру и управляются из Kubernetes: удалять и настраивать их нужно через Service, иначе кластер пересоздаст их снова.

Хранилище​

В кластере доступны два класса:

КлассЧто это
tatnet-blockБлочный том платформы: переживает узел, переезжает между узлами
tatnet-local-pathКаталог на диске узла: быстро, но умирает вместе с узлом

Для данных, которые нельзя потерять, нужен tatnet-block: под, переехавший на другой узел, найдёт свой том на месте.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
spec:
accessModes: [ReadWriteOnce]
storageClassName: tatnet-block
resources:
requests:
storage: 20Gi

Тома создаются и удаляются по PersistentVolumeClaim. В панели они видны, но доступны только для чтения — менять их нужно из кластера.

Расширение работает на живом поде: увеличьте PersistentVolumeClaim, и файловая система вырастет без перезапуска.

Ограничения те же, что у блочных томов: один том — один узел одновременно (ReadWriteOnce), снимков нет, регион менять нельзя.

Оплата​

Кластер складывается из четырёх статей, и каждая оплачивается отдельно:

  • Узлы. И рабочие, и control-plane — обычные виртуальные машины по цене выбранного тарифа. Control-plane не бесплатный именно потому, что это ваши машины: они занимают процессор, память и диск так же, как любые другие.
  • Управление кластером. Одна плата на кластер, не зависящая от числа узлов: оркестрация, обновления Kubernetes и Talos, сеть кластера, сертификаты и endpoint API. Начисляется почасово, с создания до удаления.
  • Публичный IP-адрес endpoint'а — один на кластер. У приватного кластера публичного адреса нет, и платы за него тоже.
  • Тома и балансировщики, если вы их создаёте: блочные тома — по выделенному объёму, балансировщики — по числу узлов балансировщика.

Действующие цены показывает мастер создания кластера: смета в нём собирается из тех же ставок, по которым идёт списание.

Удаление кластера прекращает и плату за управление, и плату за узлы — в момент удаления, а не по завершении сноса.

Обновление версии​

Версия Kubernetes обновляется из панели. Платформа катит обновление по узлам: сначала control-plane, затем рабочие, по одному, дожидаясь готовности каждого.

Масштабирование​

Число рабочих узлов меняется в настройках пула. При уменьшении платформа корректно выводит лишние узлы: сначала переселяет с них поды, потом гасит машины.