Kubernetes: внутреннее устройство и архитектура | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Backend-разработчик на PHP Алгоритмы и структуры данных Team Lead Архитектура и шаблоны проектирования Разработчик IoT C# Developer. Professional HTML/CSS
-11%
C# ASP.NET Core разработчик
-5%
Kotlin Backend Developer
-8%
iOS Developer. Professional
-8%
Symfony Framework Unity Game Developer. Basic JavaScript Developer. Professional Android Developer. Basic JavaScript Developer. Basic Java Developer. Professional Highload Architect Reverse-Engineering. Professional Java Developer. Basic Web-разработчик на Python Framework Laravel Cloud Solution Architecture Vue.js разработчик Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool" PHP Developer. Basic
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK Administrator Linux. Professional Дизайн сетей ЦОД Разработчик IoT PostgreSQL Экспресс-курс "Версионирование и командная работа с помощью Git"
-30%
Microservice Architecture Highload Architect MS SQL Server Developer Разработчик программных роботов (RPA) на базе UiPath и PIX Разработчик голосовых ассистентов и чат-ботов Administrator Linux. Advanced Infrastructure as a code Супер-практикум по использованию и настройке GIT Administrator Linux.Basic Экспресс-курс «IaC Ansible» Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» Основы Windows Server
Корпоративные курсы
Безопасность веб-приложений IT-Recruiter Дизайн сетей ЦОД Компьютерное зрение Разработчик IoT Вебинар CERTIPORT Machine Learning. Professional
-6%
NoSQL Пентест. Практика тестирования на проникновение Java QA Engineer. Базовый курс Руководитель поддержки пользователей в IT
-8%
SRE практики и инструменты Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Infrastructure as a code Супер-практикум по использованию и настройке GIT Промышленный ML на больших данных Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» BPMN: Моделирование бизнес-процессов Основы Windows Server
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

Kubernetes: внутреннее устройство и архитектура

Kuber_Deep_14.4-5020-6a6dfe.png

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

Kubernetes является проектом с открытым исходным кодом, предназначенным для управления кластером контейнеров Linux как единой системой. Kubernetes управляет и запускает контейнеры Docker на большом количестве хостов, а также обеспечивает совместное размещение и репликацию большого количества контейнеров. Проект был начат в 2014 году в недрах самой великой и ужасной Google и теперь поддерживается многими компаниями, среди которых и Microsoft, и RedHat, и IBM. Код Kubernetes написан на языке Go и распространяется под лицензией Apache 2.0. Продукт позиционируется как развиваемое сообществом универсальное решение, не привязанное к отдельным решениям и способное работать с любыми приложениями в любых облачных окружениях.

И сегодня K8s де-факто стал неким стандартом для современных DevOps-сред – что in-house недр больших компаний, что в популярных среди стартапов облачных сервисах типо AWS, Microsoft Azure или Google Cloud.

Базовая концепции внутреннего устройства Kubernetes

Nodes (node.md) – нода – это машина в кластере Kubernetes.

Pods (pods.md) – это группа контейнеров с общими разделами, запускаемые как единое целое.

Replication Controllers (replication-controller.md) – сервис, гарантирующий, что определённое количество «реплик» pod'ы будут запущены в любой момент времени.

Services (services.md) – ещё один сервис в Kubernetes – это абстракция, которая определяет логический объединённый набор pod и политику доступа к ним.

Volumes (volumes.md) – директория или раздел, возможно, с данными в ней, которая доступна в контейнере.

Labels (labels.md) – пары ключ/значение, которые прикрепляются к объектам, например, pod'ам. Label'ы могут быть использованы для создания и выбора наборов объектов.

Kubectl Command Line Interface (kubectl.md) – интерфейс командной строки для управления Kubernetes.

9be79a7b32dccc8ff811f_1-20219-d055da.png

Несколько слов об архитектуре Kubernetes

Работающий кластер Kubernetes включает в себя агента, запущенного на нодах (kubelet), и компоненты мастера (APIs, scheduler, etc) поверх решения с распределённым хранилищем.

199165bd6fc10f8bb6a1f_1-20219-8bacd8.png

Архитектура: 1. Нода Kubernetes – при взгляде на архитектуру системы мы можем разбить его на сервисы, которые работают на каждой ноде, и сервисы уровня управления кластера. На каждой ноде Kubernetes запускаются сервисы, необходимые для управления нодой со стороны мастера и для запуска приложений. И, конечно, на каждой ноде запускается Docker. Docker обеспечивает загрузку образов и запуск контейнеров. 2. Kubelet – Kubelet управляет pod'ами их контейнерами, образами, разделами. 3. Kube-Proxy – на каждой ноде запускается простой proxy-балансировщик. Этот сервис запускается на каждой ноде и настраивается в Kubernetes API. Kube-Proxy может выполнять простейшее перенаправление потоков TCP и UDP (round robin) между набором бэкендов. 4. Компоненты управления Kubernetes – система управления Kubernetes разделена на несколько компонентов. 4.1 Сервер хранения ключевой информации etcd – состояние мастера хранится в экземпляре etcd. Это обеспечивает надёжное хранение конфигурационных данных и своевременное оповещение прочих компонентов об изменении состояния. 4.2 Kubernetes API Server – обеспечивает работу api-сервера. Он предназначен для того, чтобы быть CRUD-сервером со встроенной бизнес-логикой, реализованной в отдельных компонентах или в плагинах. Он, в основном, обрабатывает REST-операции, проверяя их и обновляя соответствующие объекты в etcd (и событийно в других хранилищах). 4.3 Scheduler – привязывает незапущенные pod'ы к нодам через вызов /binding API. Scheduler подключаем; планируется поддержка множественных scheduler'ов и пользовательских scheduler'ов. 5. Kubernetes Controller Manager Server – все остальные функции уровня кластера представлены в Controller Manager. Например, ноды обнаруживаются, управляются и контролируются средствами node controller. Эта сущность в итоге может быть разделена на отдельные компоненты, чтобы сделать их независимо подключаемыми.

2f6774e6cd8baa01f9b50_1-20219-fd5c42.png

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться