Перейти к содержанию

k8s

Оркестратор контейнеров. Умеет заниматься их развертыванием, масштабированием и координацией в кластере.

kubectl

Что такое kubectl

kubectl - это утилита для управления k8s кластером. Она стоит на каждой ноде k8s.

Шпаргалка по командам k8s

Общие команды

  • kubectl version - узнать версию кубера
  • kubectl cluster-info - узнать информацию о кластере
  • kubectl get nodes - получить информацию о нодах в кластере
  • kubectl create deployment название --image=образ - создает deployment для образа
  • kubectl get deployments - получить список deployment
  • kubectl proxy - http proxy для доступа к Kubernetes API
  • kubectl 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 на которой он запущен. В случае ошибки на ноде индентичные поды запускаются на других доступных нодах.