Самостоятельное сопровождение или IT-аутсорсинг: как эффективно управлять Kubernetes?

Возможности Kubernetes
Kubernetes позволяет эффективно управлять контейнерными приложениями и микросервисами. Например, можно разделить на отдельные элементы платформу видеохостинга или интернет-магазин. И каждому микросервису поручить определенный функционал: обработку транзакций, доставку, авторизацию, вывод контента.
Так, Kubernetes объединяет контейнеры в единый микросервис и автоматизирует их развертывание, масштабирование и мониторинг. За счет этого можно централизованно управлять всей системой, контролировать нагрузку и эффективно распределять ресурсы.
Подробнее о Kubernetes мы рассказывали в статьях о K8s и его оптимизированной версии K3s. Напомним: K3s проще в управлении и больше подходит для самостоятельного обслуживания. И даже поддерживает запуск кластеров всего из одной ноды — например, для управления небольшой сетью умных устройств.
Однако развернуть кластер — только начало пути. Если не обеспечить ему компетентное обслуживание, то можно столкнуться с различными ошибками в работе оркестратора и поставить под угрозу доступность сервисов.
Например, некорректная конфигурация ресурсов приведет к ошибкам в работе подов. А неправильная настройка хранилищ или сетевых интерфейсов — к различным сбоям в кластере. При этом обновление кластера — достаточно сложная задача, которая требует высоких компетенций.
Чтобы оркестратор и все его сервисы корректно работали, нужно продумать инфраструктуру и поручить сопровождение системы компетентным специалистам.
Где развернуть оркестратор и как его администрировать?
Разворачивать и обслуживать Kubernetes можно самостоятельно или с подключением сторонних специалистов. Для оптимизации расходов на IT-инфраструктуру можно арендовать мощности у провайдера, например виртуальные или выделенные серверы.
Для размещения и сопровождения кластера Kubernetes необходимо учесть множество нюансов. Например, высоконагруженным проектам нужен как большой объем вычислительных ресурсов, так и компетентные специалисты для администрирования системы.
Однако размещение системы в офисах компании и ее обслуживание собственными силами потребует существенных финансовых и временных расходов. Локальную инфраструктуру нужно создавать, модернизировать и сопровождать. А компетентных DevOps-инженеров — искать и обеспечивать конкурентной зарплатой. Надежнее и дешевле — подключить опытных специалистов в рамках IT-аутсорсинга.
Где разместить инфраструктуру и какую выбрать?
При размещении узлов оркестратора и самого кластера Kubernetes необходимо предусмотреть стартовые мощности, отказоустойчивость и возможность для масштабирования.
В архитектуре K8s кластером и рабочими узлами управляет мастер-нода. Чтобы вся система не вышла из строя при сбое на главном узле, его необходимо продублировать на трех отдельных физических или виртуальных серверах. При этом Kubernetes обладает функцией самовосстановления и сможет реанимировать вышедшую из строя ноду на других машинах. Но для этого оркестратору понадобится соответствующий запас ресурсов.
Архитектура Kubernetes подразумевает гибкое использование ресурсов и элементов. Такую систему корректнее запускать на множестве небольших нод, оставляя в запасе резервные мощности и возможность для оперативного масштабирования. А так как облака обычно строятся на нескольких физических серверах, виртуальная инфраструктура более устойчива к сбоям, чем традиционная.
Kubernetes можно запустить на любой инфраструктуре: полностью развернуть всю систему в облаке или по гибридному сценарию. И разместить, например, мастер-ноду на виртуальной машине, а рабочие узлы — на физических серверах. Виртуализация съедает часть ресурсов, которые могут играть важную роль в работе сервисов. Поэтому приложения или системы, которым нужна высокая производительность или скорость ответа, можно размещать на физических машинах.
В локальной системе можно, например, при помощи сертифицированной платформы виртуализации создать частное облако и объединить его с физическими серверами, на которых будут размещены рабочие ноды с контейнерами или приложениями.
Однако локальное размещение подразумевает создание условий дата-центра: работы сети 24/7, стабильной доступности проекта, наличия системы охлаждения и учета множества других нюансов. При этом критические элементы необходимо продублировать, а нагрузки и занимаемое место — постепенно масштабировать.
Чтобы не тратиться на покупку серверов и создание инфраструктуры, целесообразно разворачивать Kubernetes у провайдера: полностью в облаке или в гибридной системе. В таком случае арендуется необходимый объем мощностей или количество машин. При этом в облаке оплачиваются только используемые ресурсы: ядра CPU, оперативная память и дисковое пространство.
Подробнее о разных типах инфраструктур рассказали в материалах по ссылкам ниже:
- Облако или выделенный сервер — что выбрать?
- IT-инфраструктура онлайн-проекта: каких типов бывает и как ее эффективно администрировать?
Самостоятельное обслуживание или IT-аутсорсинг?
Архитектура Kubernetes включает множество модулей. В зависимости от количества сервисов и сложности системы для ее сопровождения понадобится отдельный специалист или целая команда. Игнорирование настройки модулей и отсутствие мониторинга за системой может привести к различным сбоям.
Со временем появляются новые элементы, которые необходимо интегрировать в Kubernetes. Например, подключить и настроить хранилище или сбор логов. И для этого тоже понадобятся компетенции и рабочие часы. При этом большинство используемых решений — это opensource, и открытый исходный код также нужно будет адаптировать для работы в конкретной системе.
Базовая конфигурация оркестратора включает основные элементы и многие необходимые модули нужно подключить и настраивать вручную. Например, при запуске кластера нужно:
- Настроить доступы, мониторинг и логирование.
- Подключить хранилища.
- Обеспечить отказоустойчивость узлов.
- Организовать доставку и балансировку клиентского трафика.
- И учесть множество других нюансов.
Масштабирование Kubernetes и инфраструктуры
По мере роста числа рабочих нод и накопления данных систему нужно масштабировать.
Для добавления узлов в физическую инфраструктуру, которую также называют Bare Metal, нужно подключать дополнительные серверы. При размещении у провайдера они арендуются, при локальном сопровождении — покупаются компанией самостоятельно.
Виртуальную инфраструктуру масштабировать проще. При размещении на нашем облачном хостинге можно расширить конфигурацию: зарезервировать больше мощности или запустить дополнительные серверы. При необходимости наши технические специалисты помогут провести все настройки для интеграции новых машин в систему.
Возможность автомасштабирования приложений в зависимости от нагрузки настраивается средствами Kubernetes и не связана с типом инфраструктуры.
Подключение хранилищ
Kubernetes поддерживает подключение различных типов хранилищ. И их настройка — еще одна задача для системных администраторов или DevOps-инженеров.
Например, можно использовать объектное хранилище S3 — экономичный облачный сервис, в котором можно размещать сотни гигабайт и терабайты неструктурированных данных. Сервис подключается при помощи Container Storage Interface (CSI). А чтобы настроить доступ к файлам с подов можно использовать драйвер Ctrox/csi-s3. Это позволит эффективно работать с данными без их предварительного скачивания.
Также в S3 можно хранить резервные копии баз данных. При корректной настройке под будет создавать копии БД и отправлять их в контейнеры. С этим, а также с интеграцией других систем хранения вам всегда помогут наши технические специалисты в рамках администрирования или разовых работ.