Что такое Kubernetes?

Kubernetes — это программное обеспечение оркестрации с открытым кодом для развертывания контейнеров, управления ими и их масштабирования

Описание Kubernetes

Современные приложения все чаще создаются с применением контейнеров. Это микрослужбы, укомплектованные зависимостями и конфигурациями. Kubernetes (произносится "ку-бер-не-тис") — это программное обеспечение с открытым кодом для развертывания контейнеров и управления ими в большом масштабе, а также греческое слово, означающее "кормчий", "рулевой". Kubernetes (иногда также используется название k8s или k-eights) сокращает время сборки, поставки и масштабирования контейнерных приложений.

Простая схема изучения Kubernetes

Как работает Kubernetes

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

Kubernetes позволяет координировать кластеры виртуальных машин и планировать запуск контейнеров на таких виртуальных машинах в зависимости от доступных вычислительных ресурсов и потребностей в них каждого контейнера. Контейнеры объединяются в группы, называемые pod (основная единица операций в Kubernetes), которые масштабируются до нужного состояния.

Kubernetes также автоматически управляет обнаружением служб, добавляет балансировку нагрузки, отслеживает выделение ресурсов и масштабирует их в зависимости от использования вычислений. Кроме того, платформа проверяет работоспособность отдельных ресурсов и обеспечивает самостоятельное восстановление приложений за счет автоматического перезапуска или репликации контейнеров.

Смотрите дополнительные видео об основах Kubernetes

Зачем использовать Kubernetes?

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

Переносимость рабочих нагрузок

Так как контейнерные приложения отделены от инфраструктуры, они становятся переносимыми при запуске в Kubernetes. Их можно перемещать с локальных компьютеров в локальные, гибридные или многооблачные рабочие среды, сохраняя согласованность между этими средами.

Простое масштабирование контейнеров

Определяйте комплексные контейнерные приложения и развертывайте их с помощью Kubernetes в кластере серверов и даже в нескольких кластерах. При масштабировании приложений в Kubernetes до нужного состояния мониторинг и поддержание работоспособности контейнеров выполняются автоматически.

Создание приложений с дополнительными возможностями расширения

Многочисленное сообщество, состоящее из разработчиков и компаний, работающих с открытым кодом, активно создает расширения и подключаемые модули, которые позволяют добавлять в Kubernetes такие возможности, как обеспечение безопасности, мониторинг и управление. Кроме того, согласно требованиям программы Certified Kubernetes Conformance Program каждая версия Kubernetes должна поддерживать API-интерфейсы, гарантирующие простое использование этих предложений сообщества.

Начало работы с Kubernetes

Узнайте, как начать развертывание контейнерных приложений и управление ими.

Следуйте схеме обучения

Получите практический опыт работы с компонентами, возможностями и решениями Kubernetes.

Разработка с помощью комплексной платформы Kubernetes

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

  1. Автоматизация инфраструктуры или бессерверная служба Kubernetes для решения таких рутинных задач, как подготовка к работе и установка исправлений и обновлений.

    См. примеры
  2. Средства для разработки, а также непрерывной интеграции и развертывания (CI/CD) контейнерных приложений.

    См. примеры
  3. Службы для контроля безопасности, управления, идентификации и доступа.

    См. примеры

Использование Kubernetes с методиками DevOps

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

Ускорение доставки кода за счет CI/CD

Контейнеры служат единым форматом упаковки приложений и упрощают совместную работу для команд разработчиков и операторов, а CI/CD может ускорить переход от кода к контейнеру и в кластер Kubernetes до считанных минут за счет автоматизации этих задач.

Настройка CI/CD для Kubernetes

Эффективное управление ресурсами за счет инфраструктуры в виде кода

Инфраструктура в виде кода обеспечивает согласованность и улучшает видимость вычислительных ресурсов для всех команд, а значит, уменьшает вероятность человеческой ошибки. Эта практика хорошо сочетается с декларативным характером приложений Kubernetes на платформе Helm. Подобная комбинация позволяет определять приложения, ресурсы и конфигурации надежным, контролируемым и повторяемым образом.

Развертывание кластера Kubernetes с использованием Terraform

Ускорение цикла обратной связи за счет постоянного мониторинга

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

См., как работает аналитика контейнеров в режиме реального времени

Уравновешивание скорости и защиты с помощью DevOps

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

Непрерывное обеспечение безопасности в действии

Пример рабочего процесса DevOps на базе Kubernetes

  1. 1Мгновенная итерация, тестирование и отладка различных частей приложения в одном и том же кластере Kubernetes.
  2. 2Внедрение кода в репозиторий GitHub для непрерывной интеграции и его проверка. Запуск автоматической сборки и тестирования в рамках непрерывной поставки.
  3. 3Проверка источника и целостности образов контейнеров. До прохождения сканирования образы находятся на карантине.
  4. 4Оснащение кластеров Kubernetes такими средствами, как Terraform. Terraform устанавливает чарты Helm, которые определяют желаемое состояние ресурсов и конфигураций приложения.
  5. 5Применение политик для регулирования развертывания к кластеру Kubernetes.
  6. 6Конвейер выпуска автоматически выполнит предустановленную стратегию развертывания для каждого кода.
  7. 7Добавление проверки и автоматического исправления политик в конвейер CI/CD. Например, создавать объекты pod в вашей среде Kubernetes может только конвейер выпуска.
  8. 8Включение телеметрии приложения, мониторинга работоспособности контейнера и анализа журналов в режиме реального времени.
  9. 9Устранение проблем с аналитическими сведениями и планирование следующего спринта.

Используйте возможности Azure Kubernetes

Автоматизируйте подготовку, обновление, мониторинг и масштабирование, используя полностью управляемую службу Microsoft Azure Kubernetes (AKS). Бессерверная служба Kubernetes — это простой переход от разработки к производству, а также защита и управление корпоративного уровня.

Подробнее об AKS

Черпайте вдохновение и инновации в сообществе Kubernetes

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

35,000
Соавторы
180,000
Фиксации
Самый популярный проект
на GitHub

Вклад Майкрософт в Kubernetes

Искусство открытого кода на предприятиях

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

Часто задаваемые вопросы о Kubernetes

  • Начните изучение Kubernetes c этого руководства.

  • Kubernetes пригодится в различных ситуациях, от переноса приложений в облако до упрощения сложностей в машинном обучении и ИИ.

    Основные примеры таких ситуаций:

  • Ознакомьтесь с рекомендациями и шаблонами архитектуры, разработанными тысячами технических специалистов и партнеров, которые используют Kubernetes.

  • Развертывание Kubernetes позволяет описать желаемое состояние развертывания приложения. Планировщик Kubernetes следит за тем, чтобы фактическое состояние соответствовало желаемому, и сохраняет это состояние даже при отказе одного или нескольких объектов pod. Кроме того, развертывания Kubernetes позволяют обновлять приложения без простоев.

    См. "Стратегии развертывания Kubernetes"
  • Обычно для развертывания в Kubernetes с применением DevOps требуется репозиторий для управления версиями, такой как Git. Репозиторий служит стартовой точкой конвейера CI/CD. В зависимости от выбранного вами подхода изменения в репозитории запускают интеграцию, сборку, доставку и развертывание.

    Подробное описание работы AKS с Azure DevOps см. здесь
  • Kubernetes и Docker работают сообща.

    Docker предоставляет открытый стандарт для упаковки и распространения контейнерных приложений. Docker позволяет собирать и выполнять контейнеры, а также хранить образы контейнеров и предоставлять к ним доступ.

    Kubernetes управляет распределенными контейнерными приложениями, созданными в Docker, и предоставляет инфраструктуру, необходимую для развертывания и выполнения таких приложений в кластере машин.

    Подробное сравнение Kubernetes и Docker

Ресурсы

Знакомство с AKS

Просмотрите видео об AKS, а также вебинары Azure по запросу, включающие демонстрации, описание основных функций и технические доклады.

Присоединитесь к другим пользователям AKS на сайте GitHub, на конференции KubeCon или на ближайшем к вам семинаре Kubernetes.

Kubernetes уже к вашим услугам — бесплатно на Azure