Kubernetes - операционная система для облачных решений, представляющая собой открытую платформу для управления кластерами контейнерных приложений и сервисов. Это решение было разработано инженерами Google - Джо Бедой, Бренданом Бернсом и Крейгом Мак-Лаки в 2014 году и вскоре после этого было выпущено с открытым исходным кодом. С тех пор Kubernetes быстро стал самостоятельной и активно развивающейся экосистемой "Cloud Native". В настоящее время управление Kubernetes осуществляется "Cloud Native Computing Foundation" (CNCF), подразделением Linux Foundation.
Kubernetes стал первым выпускным проектом CNCF и одним из самых быстрорастущих проектов с открытым исходным кодом в истории. Более 2300 участников работают над Kubernetes, и оно широко используется как крупными, так и малыми компаниями, включая половину Fortune 100.
Контейнеры — хороший способ объединить и запустить ваши приложения. В производственной среде вам необходимо управлять контейнерами, в которых выполняются приложения, и обеспечивать отсутствие простоев. Например, если контейнер выходит из строя, необходимо запустить другой контейнер. Не было бы проще, если бы такое поведение обрабатывалось системой?
Вот тут-то на помощь и приходит Kubernetes! Kubernetes предоставляет вам платформу для устойчивой работы распределенных систем. Он обеспечивает масштабирование и аварийное переключение вашего приложения, предоставляет шаблоны развертывания и многое другое. Например: Kubernetes может легко управлять канареечным развертыванием вашей системы. При канареечном развертывании переключение происходит постепенно, начиная с части пользователей.
Обнаружение служб и балансировка нагрузки
Kubernetes может предоставлять контейнер, используя DNS-имя или собственный IP-адрес. Если трафик в контейнере высокий, Kubernetes может балансировать нагрузку и распределять сетевой трафик, чтобы развертывание было стабильным.
Оркестрация хранилища
Kubernetes позволяет автоматически монтировать систему хранения по вашему выбору, например локальные хранилища, общедоступные облака и т. д.
Автоматизированное развертывание и откат
Вы можете описать желаемое состояние развернутых контейнеров с помощью Kubernetes, и он может изменить фактическое состояние на желаемое с контролируемой скоростью. Например, вы можете автоматизировать Kubernetes для создания новых контейнеров для вашего развертывания, удаления существующих контейнеров и переноса всех их ресурсов в новый контейнер.
Автоматическая упаковка контейнеров
Вы предоставляете Kubernetes кластер узлов, которые он может использовать для выполнения контейнерных задач. Вы сообщаете Kubernetes, сколько процессора и памяти (ОЗУ) требуется каждому контейнеру. Kubernetes может разместить контейнеры на ваших узлах, чтобы максимально эффективно использовать ваши ресурсы.
Самовосстановление
Kubernetes перезапускает контейнеры, которые вышли из строя, заменяет контейнеры, уничтожает контейнеры, которые не отвечают на заданную пользователем проверку работоспособности, и не объявляет о них клиентам, пока они не будут готовы к работе.
Управление секретами и конфигурациями
Kubernetes позволяет хранить конфиденциальную информацию, такую как пароли, токены OAuth и ключи SSH, и управлять ею. Вы можете развертывать и обновлять секреты и конфигурацию приложения, не перестраивая образы контейнеров и не раскрывая секреты в конфигурации стека.
Пакетное выполнение
Помимо сервисов, Kubernetes может управлять вашими пакетными и CI-рабочими нагрузками, при желании заменяя вышедшие из строя контейнеры.
Горизонтальное масштабирование
Масштабируйте свое приложение вверх и вниз с помощью простой команды, с помощью пользовательского интерфейса или автоматически в зависимости от загрузки ЦП.
Двойной стек IPv4/IPv6
Выделение адресов IPv4 и IPv6 модулям и службам.