Серия1 частьВиталий Лещенко

Kubernetes для самых маленьких

Серия для тех, кто уже знает Linux и сети и хочет понять, как устроен Kubernetes: что происходит между kubectl apply и запущенным контейнером, кто и как решает, на каком узле ему работать, откуда у пода адрес и как до него доходит пакет снаружи, где лежат данные и что будет, если узел пропадёт.

У серии три принципа.

Первый: о каждом компоненте — не только зачем он нужен, но и как он работает. Какие объекты появляются в API, какой контроллер на них реагирует, какие правила появляются на узле, что лежит в etcd. Поэтому почти в каждой части есть вывод kubectl, crictl, nft и разбор того, что в нём написано.

Второй: свой кластер, а не облачный. Учебный кластер ставится kubeadm на три виртуальные машины с Ubuntu Server: так видно control plane, сертификаты и etcd, которые в облаке спрятаны. Каждый объект описывается YAML-манифестом и применяется kubectl; Kustomize и Helm появляются только после того, как манифесты понятны.

Третий: лучшие практики, а не «и так работает». Там, где настройку по умолчанию или популярный рецепт из интернета лучше не повторять, — объяснение, почему, и как сделать правильно.

Порядок такой: сначала основа (архитектура, API, установка кластера, образы), затем рабочие нагрузки, конфигурация и планирование, сеть снизу вверх — от адреса пода до Ingress и сертификатов, хранилище с отдельными частями про NFS и SMB, упаковка, безопасность, наблюдаемость, обслуживание кластера, гибридный кластер с Windows-воркерами и в конце GitOps. Протоколы, разобранные в серии «Сети для самых маленьких», заново не разбираются: там, где они встречаются, есть ссылка и суть в двух фразах. Отказоустойчивый control plane и публикация сервисов по BGP — в серии «Отказоустойчивый Kubernetes на BGP».

  1. Часть 1

    Зачем Kubernetes

    Зачем нужен оркестратор, желаемое состояние и цикл согласования, декларативный подход против императивного и чего Kubernetes не делает.

Серия не завершена: следующие части готовятся к публикации.