Про Kubernetes

Про Кубернетес всегда начинают рассказывать очень сложно, засыпая новичка кучей абстракций и новых понятий. Или же просто пересказывают своими словами архитектуру не задумываясь, что новичок не понимает самого главного вопроса "Что с этим делать?"

Мне заняло немало времени и чуть-чуть боевого опыта, чтоб понять, что Кубернетес это не страшно, а вполне удобно и логично. В статье специально опущены детали и есть неточности которые вообще неважны на мой взгляд для нового пользователя.

Очень важно помнить, что Кубернетес состоит из двух основных частей.

На физическом уровне Nodes. Это могут быть виртуальные машины, выделенные серверы, пачка RasberryPI и т.п. Главное, что на самом нижнем уровне это просто куча компьютеров программно объединенных в один кластер.

На программном уровне- условные сущности, абстракции которые помогают эффективнее управлять ресурсами расположенными на физическом уровне..

Самые важные из ресурсов:

Namespace - чисто для удобства, чтобы не путаться в сущностях которые занимаются разными задачами.

Pod - минимальная логическая единица. В ней бежит контейнер с вашим сервисом. Но абстракция с которой придется больше всего работать не pod а Deployment. Это мета-сущность которая включает в себя и под и и количество его копий.

Еще одна сложная для моего понимания вещь - Ingress

Ingress это "дверь" в ваш кластер. Их может быть несколько, но будем считать что обычно в кластере она одна. Доступ к любому сервису снаружи происходит через нее. Ingress знает (мы сконфигурировали же) какой сервис и порт будет отвечать по конкретному URL.

Резюме: Чтобы получить минимальный работающий кластер нужно следующее:

  • Компьютер\виртуальная машина
  • сама программа Kubernetes
  • Образ(docker image) с программой
  • Сконфигурировать Deployment (он уже включает в себя конфигурацию подов и реплик)
  • Сконфигурировать Ingress Controller (Haproxy, traefik, Nginx)
  • Выставить сервис в интернет и привязать к какому-нибудь IP