понедельник, 18 декабря 2017 г.

Kubernetes. Часть 4

Другие компоненты Kubernetes

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

воскресенье, 17 декабря 2017 г.

Kubernetes. часть 3

Архитектура Kubernetes

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

среда, 13 декабря 2017 г.

Kubernetes. часть 2

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

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

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

Узел (node) — это отдельная физическая или виртуальная машина, на которой развёрнуты и выполняются контейнеры приложений. Каждый узел в кластере содержит сервисы для запуска приложений в контейнерах (например Docker), а также компоненты, предназначенные для централизованного управления узлом.

Под (pod, с англ. — «стручок, кокон», также модуль) — базовая единица для запуска и управления приложениями: один или несколько контейнеров, которым гарантирован запуск на одном узле, обеспечивается разделение ресурсов и межпроцессное взаимодействие и предоставляется уникальный в пределах кластера IP-адрес. Последнее позволяет приложениям, развёрнутым на поде, использовать фиксированные и предопределённые номера портов без риска конфликта. Поды могут напрямую управляться с использованием API Kubernetes или управление ими может быть передано контроллеру.

Том (volume) — общий ресурс хранения для совместного использования из контейнеров, развёрнутых в пределах одного пода.

Все объекты управления (узлы, поды, контейнеры) в Kubernetes помечаются метками (label), селекторы меток (label selector) — это запросы, которые позволяют получить ссылку на объекты, соответствующие какой-то из меток. Метки и селекторы — это главный механизм Kubernetes, который позволяет выбрать, какой из объектов следует использовать для запрашиваемой операции.

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

Kubernetes обеспечивает функции обнаружения сервисов и маршрутизации по запросу. В частности, система умеет переназначать необходимые для обращения к сервису IP-адрес и доменное имя сервиса различным подам, входящим в его состав. При этом обеспечивается балансировка нагрузки в стиле Round robin DNS между подами, чьи метки соответствуют сервису, а также корректная работа в том случае, если один из узлов кластера вышел из строя и размещённые на нём поды автоматически были перемещены на другие узлы. По умолчанию сервис доступен внутри управляемого Kubernetes кластера — например, поды бэкенда группируются для обеспечения балансировки нагрузки и в таком виде предоставляются фронтенду. Также кластер может быть настроен и для предоставления доступа к входящим в его состав подам извне как к единому фронтенду.

Контроллер (controller) — это процесс, который управляет состоянием кластера, пытаясь привести его от фактического состояния к желаемому; он делает это, оперируя набором подов, определяемых с помощью селекторов меток и являющихся частью определения контроллера. Выполнение контроллеров обеспечивается компонентом Kubernetes Controller Manager. Один из типов контроллеров, самый известный — это контроллер репликации (Replication Controller), который обеспечивает масштабирование, запуская указанное количество копий пода в кластере. Он также обеспечивает запуск новых экземпляров пода в том случае, если узел, на котором работает управляемый этим контроллером под, выходит из строя. Другие контроллеры, входящие в основную систему Kubernetes, включают в себя «DaemonSet Controller», который обеспечивает запуск пода на каждой машине (или подмножеством машин), и «Job Controller» для запуска подов, которые выполняются до завершения, например, как часть пакетного задания.

Операторы (operators) — специализированный вид программного обеспечения Kubernetes, предназначенный для включения в кластер сервисов, сохраняющих своё состояние между выполнениями (stateful), таких как СУБД, системы мониторинга или кэширования. Назначение операторов — предоставить возможность управления stateful-приложениями в кластере Kubernetes прозрачным способом и скрыть подробности их настроек от основного процесса управления кластером Kubernetes.

вторник, 12 декабря 2017 г.

Kubernetes. Часть 1

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