Kubernetes (или сокращенно k8s) — это платформа для оркестровки контейнеров с открытым исходным кодом.
Она автоматизирует многие ручные задачи, обычно связанные с инфраструктурой на основе контейнеров.
K8s преобразует виртуальные и физические машины в единую поверхность API. Разработчик может использовать API Kubernetes для развертывания, масштабирования и управления контейнерными приложениями.
Он помогает управлять контейнерами, в которых выполняются приложения, и обеспечивает отсутствие простоев в производственной среде. Например, если контейнер выходит из строя, другой контейнер автоматически занимает его место, и конечный пользователь этого не замечает.
- Архитектура и компоненты Kubernetes
- Мастер Kubernetes (главный узел) получает данные от CLI (интерфейс командной строки) или UI (пользовательский интерфейс) через API.
- Сервер API
- Хранилище ключей-значений (etcd)
- Контроллер
- Планировщик
- Рабочие узлы слушают API-сервер для получения новых рабочих заданий; они выполняют их и затем сообщают о результатах ведущему узлу Kubernetes.
- Куплет
- Время выполнения контейнера
- Kube-proxy
- Pod
- Установка Minikube
Архитектура и компоненты Kubernetes
Мастер Kubernetes (главный узел) получает данные от CLI (интерфейс командной строки) или UI (пользовательский интерфейс) через API.
Сервер API
Сервер API является внешним компонентом плоскости управления и единственным компонентом плоскости управления, с которым мы взаимодействуем напрямую. Внутренние компоненты системы, а также внешние пользовательские компоненты взаимодействуют через один и тот же API.
Хранилище ключей-значений (etcd)
Key-Value Store, также называемый etcd, — это база данных Kubernetes, используемая для резервного копирования всех данных кластера. В ней хранится вся конфигурация и состояние кластера. Ведущий узел запрашивает etcd для получения параметров состояния узлов, стручков и контейнеров.
Контроллер
Роль контроллера заключается в получении требуемого состояния от сервера API. Он проверяет текущее состояние узлов, которыми ему поручено управлять, определяет, есть ли какие-либо различия, и решает их, если они есть.
Планировщик
Планировщик следит за новыми запросами, поступающими от сервера API, и распределяет их между исправными узлами. Он оценивает качество узлов и размещает капсулы на наиболее подходящем узле. Если подходящих узлов нет, стручки переводятся в состояние ожидания, пока такой узел не появится.
Рабочие узлы слушают API-сервер для получения новых рабочих заданий; они выполняют их и затем сообщают о результатах ведущему узлу Kubernetes.
Куплет
Куплет запускается на каждом узле кластера. Он является основным агентом Kubernetes. При установке kubelet процессор, оперативная память и хранилище узла становятся частью более широкого кластера. Он следит за заданиями, отправленными с сервера API, выполняет их и сообщает об этом мастеру. Он также следит за капсулами и сообщает на панель управления, если капсула не полностью функциональна. На основе этой информации мастер может решить, как распределить задачи и ресурсы, чтобы достичь желаемого состояния.
Время выполнения контейнера
Время выполнения контейнера извлекает образы из реестра образов контейнеров, запускает и останавливает контейнеры. Обычно эту функцию выполняет стороннее программное обеспечение или плагин, например, Docker.
Kube-proxy
kube-proxy обеспечивает получение каждым узлом своего IP-адреса, реализует локальные iptables и правила для маршрутизации и балансировки нагрузки на трафик.
Pod
Под — это наименьший элемент планирования в Kubernetes. Без него контейнер не может быть частью кластера. Если вам нужно масштабировать ваше приложение, вы можете сделать это только путем добавления или удаления стручков.
Стручок служит «оберткой» для одного контейнера с кодом приложения. Основываясь на доступности ресурсов, мастер назначает pod на определенный узел и координирует запуск контейнера со средой выполнения контейнера.
Установка Minikube
Minikube — это инструмент, позволяющий запускать Kubernetes локально. Minikube запускает одноузловой кластер Kubernetes на вашем персональном компьютере (включая ПК под управлением Windows, macOS и Linux), чтобы вы могли опробовать Kubernetes или для ежедневной разработки.
Шаг 1: Проверьте, поддерживается ли виртуализация на вашей машине
systeminfo
Шаг 2: Скачайте/установите kubectl, утилиту minikube & добавьте ее в локальный ENV PATH
https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/
https://github.com/kubernetes/minikube/releases
Попробуйте это, чтобы убедиться, что у вас установлен kubectl
Шаг 3: Скачайте/установите гипервизор | ORACLE VM BOX
https://www.virtualbox.org/wiki/Downloads
Шаг 4: Запустите Minikube (укажите драйвер)
minikube start --driver=virtualbox or minikube start
minikube status