Kubernetes (k8s) Tutorial — pod, кластер, node, yaml, helm

Краткое введение в терминологию и архитектуру — Kubernetes (k8s) Tutorial

Kubernetes (или K8S) — это платформа с открытым исходным кодом, которая запускает контейнерные приложения. Kubernetes стал стандартом в сфере devops для масштабного развертывания контейнерных приложений в частных, общедоступных и гибридных облачных средах.

Kubernetes предоставляет базовый ресурс под названием PodPod — это самая маленькая развертываемая единица в Kubernetes, которая на самом деле является оболочкой для контейнеров. Pod может иметь один или несколько контейнеров, и вы можете передать различную конфигурацию контейнеру(-ам), используя конфигурацию модуля, например, передачу переменных среды, монтируемых томов, проверки работоспособности и т.д.

Архитектура Kubernetes

  • Кластер K8S (kubernetes cluster) состоит из главного узла (master) и одного или нескольких рабочих узлов Node 1 … Node n.
  • Мастер отвечает за управление кластером. Мастер координирует все процессы в кластере, такие как планирование выполнения приложений, сохранение требуемого состояния приложений, а также их масштабирование и обновление.
  • Узел — это виртуальная машина или физический компьютер, который выполняет роль рабочего узла в кластере Kubernetes. У каждого узла есть Kubelet — агент, управляющий узлом и взаимодействующий с ведущим узлом Kubernetes. Узел также имеет инструменты для выполнения контейнерных операций, например, Docker или rkt. Кластер Kubernetes в промышленном окружении должен состоять как минимум из трёх узлов.
  • Разработчики приложений общаются с кластером Kubernetes с помощью командной строки kubectl, который выполняет запросы через сервер API, расположенный в главном узле.
  • В кластере Kubernetes также есть etcd распределенное key-value store для хранения важной информации о состоянии и другой информации, необходимой для работы кластера.

На очень высоком уровне Kubernetes предоставляет набор динамически масштабируемых хостов для выполнения рабочих нагрузок с использованием контейнеров и использует набор управляющих хостов, называемых мастерами, для предоставления API для управления всей контейнерной инфраструктурой. Рабочие нагрузки могут включать в себя долго работающие службы, пакетные задания и демонов, специфичных для контейнеров. Все хосты контейнеров соединены вместе с помощью оверлейной сети для обеспечения маршрутизации от контейнера к контейнеру. Приложения, развернутые в Kubernetes, динамически обнаруживаются в сети кластера и могут быть доступны во внешних сетях с помощью традиционных балансировщиков нагрузки.

Чтобы начать работать с Kubernetes, можно использовать Minikube. Minikube — это упрощённая реализация Kubernetes, которая создает виртуальную машину на вашем локальном компьютере и разворачивает простой кластер с одним узлом. Minikube доступен для Linux, macOS и Windows. В CLI-инструменте Minikube есть основные операции для инициализации кластера, включая запуск, завершение, просмотра состояния и удаления кластера.

Примечание. Для связи с кластером Kubernetes инструмент командной строки kubectlищет файл с именем config в каталоге $HOME/.kube или в файле, на который указывает переменная среды KUBECONFIG. Этот файл конфигурации содержит ваши учетные данные и конечные точки кластера, с которыми можно разговаривать.

Модель развертывания приложений

На приведенном выше рисунке показана модель развертывания приложений высокого уровня в Kubernetes. Он использует ресурс ReplicaSet для оркестровки контейнеров. 

ReplicaSet можно рассматривать как файл метаданных на основе YAML или JSON, который определяет образы контейнеров, порты, количество реплик, проверки работоспособности активации, проверки работоспособности, переменные среды, монтирование томов, правила безопасности и т.д.

Контейнеры всегда создаются в Kubernetes как группы, называемые подами (pod), которые являются Kubernetes metadata definition или resource. Каждый pod позволяет совместно использовать файловую систему, сетевые интерфейсы, пользователей операционной системы и т.д.

Основные термины, которые нужны для понимания Kubernetes

  • pod — контейнер / набор контейнеров + ресурсы хранения + уникальный IP + локальные параметры
  • volume — иногда совместно используемое постоянное хранилище
  • replicaSet — гарантирует, что определенное количество подов запущено
  • deployment — декларативно управляет replicaSet
  • loadBalancer — предоставляет сервис с балансировщиком нагрузки облачного провайдера
  • Volume — Каталог, содержащий данные, доступные для контейнеров в Pod
  • Secrets предназначены для хранения и управления конфиденциальной информацией, такой как пароли базы данных, ключи SSH и т.д.
  • master — объект, ответственный за управление состоянием кластера. Он состоит из 3-х основных компонентов:

    • kube-apiserver — предоставляет контроль и состояние кластера
    • kube-controller-manager — здесь живет «мозг» контроллеров
    • kube-scheduler — подбирает ресурсы для работы

Kubernetes Helm

Helm — это менеджер пакетов для Kubernetes, аналог NPM или YARN. Однако это не только диспетчер пакетов, это еще и средство управления развертыванием Kubernetes. Для простоты Helm Chart можно сравнить с Docker Image.

Helm chart— это просто набор файлов шаблонов YAML, организованных в определенную структуру каталогов.

Helm charts можно дополнительно публиковать в репозиториях. Это могут быть частные репозитории для внутреннего использования или публично размещенные, например hub.kubeapps.com.

Release: экземпляр helm chart загружен в Kubernetes. Его можно рассматривать, как версию приложения Kubernetes, работающую на основе Chart и связанную с определенной конфигурацией.

Подборка видео про Kubernetes

Kubernetes in 5 mins

What is Kubernetes | Kubernetes explained in 15 mins

What is Helm in Kubernetes? Helm and Helm Charts explained | Kubernetes Tutorial 23

 

Как установить minikube на Ubuntu 20.04

todo

Используемые источники при подготовки статьи

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x