Введение в Kubernetes
Что такое Kubernetes?
Kubernetes происходит от греческого слова κυβερνήτης:, что означает «рулевой» или «капитан корабля». Зная эту аналогию, мы можем сказать, что Kubernetes это менеджер по управлению контейнерами. Kubernetes также называют k8s
, так как между k и s находится 8 символов.
Kubernetes была написана под вдохновлением от Google Borg. Это проект компании Google с открытым исходным кодом, написанный на языке Go, и под лицензией Apache 2.0. Kubernetes был разработан Google для сервиса Cloud Native Computing Foundation (CNCF).
Сама Google говорит о Borg, следующее:
Borg — это кластерный менеджер, который выполняет сотни тысяч заданий из многих тысяч различных приложений в нескольких кластерах с десятками тысяч виртуальных машин в каждом.
На протяжении более десяти лет Borg был секретом Google для запуска контейнеров в продакшн. Любые услуги, которые мы используем от Google, такие как Gmail, Drive, и т. д. все они обслуживаются с помощью Borg.
Некоторые из первоначальных разработчиков Kubernetes были сотрудниками Google, которые использовали Borg и разработали его в прошлом. Они вложили свои ценные знания и опыт в проектирование Kubernetes. Вот некоторые особенности/объектов Kubernetes:
- API servers
- Pods
- IP-per-Pod
- Services
- Labels
Особенности Kubernetes
Kubernetes предлагает очень богатый набор функций для оркестрации контейнеров. Некоторые из них:
- Automatic binpacking
- Kubernetes автоматически планирует контейнеров на основе использования ресурсов и ограничений, без ущерба для доступности.
- Self-Healing
- Kubernetes автоматически заменяет и меняет контейнеры, если есть поврежденные. Он также “убивает” и перезапускает контейнеры, которые не отвечают на проверки работоспособности, на основе существующих правил / политик.
- Horizontal scaling
- Kubernetes может автоматически масштабировать приложения на основе использования ресурсов, таких как процессор и память. В некоторых случаях он также поддерживает динамическое масштабирование, основанное на показателях клиентов.
- Service discovery and Load balancing
- Kubernetes группирует несколько контейнеров и ссылается на них через систему доменных имен (DNS). Этот DNS также называется службой Kubernetes. Kubernetes может автоматически открывать эти службы и делать балансировку между контейнерами данной службы.
- Automated rollouts and rollbacks
- Kubernetes может развертывать и откатывать новые версии / конфигурации приложения без каких-либо простоев.
- Secrets and configuration management
- Kubernetes может управлять секретами и конфигурационными данными для приложения без повторной сборки соответствующих изображений. С секретами мы можем передавать конфиденциальную информацию в наше приложение, не подвергая его конфигурации стека, например, на GitHub.
- Storage orchestration
- С Kubernetes и его плагинами мы можем автоматически монтировать локальные, внешние и хранилища в контейнеры бесшовно, основываясь на программном хранилище (SDS).
- Batch execution
- Помимо продолжительных рабочих заданий, Kubernetes также поддерживает пакетное выполнение.
Зачем использовать Kubernetes?
Мы только что рассмотрели некоторые из полностью поддерживаемых функций Kubernetes. Следует также отметить, что Kubernetes очень переносим и расширяем. Kubernetes может быть развернут в любой среде, будь то виртуальные машины, “голый металл” или общедоступные/частные/гибридные / мульти-облачные установки. Кроме того, Kubernetes имеет модульную и подключаемую архитектуру. Мы можем написать пользовательские API или плагины для расширения его функциональных возможностей.
Для успешного проекта с открытым исходным кодом, сообщество так же важно, как и большой код. Kubernetes имеет очень процветающее сообщество по всему миру. Она насчитывает более 1600 участников, которые со временем сделали более 62 000 коммитов. Есть встреча группы в разных городах, которые регулярно встречаются, чтобы обсудить Kubernetes и его экосистемы. Существуют специальные группы интересов (Sig), которые сосредоточены на особых интересах, таких как масштабирование, голый металл, сети и т.д. Мы будем говорить о них больше в нашей последней главе, Kubernetes общин.