- Контейнер. Формально не входит в компоненты k8s, не является его частью. Но его стоит отметить, как то, что помещается внутрь Pods. K8s не работает с контейнерами, а работает с Pod’ами.
- Pod. Самый маленький и простой объект, который можно создать в k8s, и именно этими объектами управляет k8s. Может содержать один или несколько контейнеров. Однако, хорошая практика - создание только одного контейнера (микросервиса) в одном Pod’е. Допускается добавлять в Pod еще один или несколько вспомогательных контейнеров, которые обслуживают основной. Например, вспомогательный микросервис для сбора статистики по основному микросервису. Или сервис для управления сетевым трафиком основного микросервиса. То есть, еще раз: k8s управляет Pod’ами, как некими атомарными единицами: распределяет, клонирует, запускает, перезапускает, создает и прочее. Внутри Pod контейнеры разделяют сетевые и дисковые ресурсы.
- Deployment. Это супервизор для Pod’а. Фактически, мы будем работать не с Pod’ами, а с Deployment. К Deployment можно привязать только один Pod, но его копий может быть много. И они могут быть раскиданы по разным Nodes. То есть, Deployment - это некий абстрактный ресурс, который может скейлиться через создание копий Pod’ов. В Deployment может находиться один Pod, а может находится сотни копий этого Pod’а. Соответственно, все действия обычно делаются не с Pod’ами, а сразу с Deployment’ом. Deployment умный, он распределяет копии Pod’ов между Nodes наиболее оптимальным образом. Также, если Pod (одна из его копий) упал/умер, то Deployment перезапускает его.
- Service. Этот объект дает нам возможность управлять Deployment’ом с Nod’ами. Сервисы объединяют поды в логическую группу и определяют политику доступа к ним. По функционалу они напоминают маршрутизатор и балансировщик нагрузки между подами. Service цепляется к Deployment и позволяет им управлять через:
1) Cluster IP
2) Node port
3) Load balancer
4) DNS external name
- Nodes. Это виртуальные сервера, где всё это бежит. Node бывают двух типов - master и Worker. Черзе Master-ноду идет управление всеми остальными нодами.
- Cluster. Это логическое объединение Nodes.