k8s¶
Оркестратор контейнеров. Умеет заниматься их развертыванием, масштабированием и координацией в кластере.
kubectl¶
Что такое kubectl¶
kubectl - это утилита для управления k8s кластером. Она стоит на каждой ноде k8s.
Шпаргалка по командам k8s¶
Общие команды¶
kubectl version
- узнать версию кубераkubectl cluster-info
- узнать информацию о кластереkubectl get nodes
- получить информацию о нодах в кластереkubectl create deployment название --image=образ
- создает deployment для образаkubectl get deployments
- получить список deploymentkubectl proxy
- http proxy для доступа к Kubernetes APIkubectl get
- просмотр ресурсовkubectl describe
- посмотреть детальную информацию о ресурсеkubectl logs
- посмотреть логи в контейнере подаkubectl exec
- выполнить команду в контейнере пода
Поды¶
kubectl get pods
- получить список подовkubectl describe pods
- посмотреть детальную информацию о подах
Deployment¶
Что такое deployment и зачем он нужен¶
Как только появился k8s кластер, в него можно деплоить свои контейнеризированные приложения. Для их деплоя нужно написать специальную конфигурацию - kubernetes deployment. Deployment показывает кластеру kubernetes как нужно создавать инстансы приложения. После того как инстансы приложения создадутся, Kubernetes deployment controller будет мониторить эти инстансы. Если инстанс упадет или будет удален, этот контроллер пересоздаст его.
Node¶
Что такое Node (узел) в Kubernetes?¶
Нода (или же узел) - это рабочая машина в Kubernetes. Данная машина может быть как виртуальной, так и физической, в зависимости от кластера. Каждый узел управляется через Control Pane. Нода может содержать в себе podы.
Каждая нода k8s имет хотя бы: 1) kubelet - процесс который ответственнен за коммуникацию между Control Pane и нодой. 2) Рантаим для контейнеров (например docker), который отвечает за их скачивание (pulling) с реестра, распаковку и запуск.
Pod¶
Что такое Pod?¶
Pod - это абстракция в Kubernetes которая представляет группу из одного или более контейнеров в приложении, которые могут содержать ресурсы, например volumes, или айпишники, или информацию о том как запускать контейнеры.
Поды запускаются в приватной изолированной сети kubernetes. По умолчанию поды в одном кластере могут видеть и достучаться до друг друга.
Pod в данном случае моделирует какой-то логический хост для конкретного приложения, который может содержать контейнеры, которые каким-то способом связаны.
Сам по себе Pod атомарная единица. Когда мы создаем deployment, то он создает pod с контейнерами внутри.
Каждый Pod привязан к node на которой он запущен. В случае ошибки на ноде индентичные поды запускаются на других доступных нодах.