Кластеры Kubernetes
In this article:
Кластеры Kubernetes#
Общая информация#
Kubernetes был задуман корпорацией Google, как платформа контейнерной оркестрации с открытым исходным кодом для развёртывания, масштабирования и управления контейнерными приложениями. Платформа стала общепринятым стандартом контейнерной оркестрации и флагманским проектом Фонда развития облачных вычислений, который поддержали Google, AWS, Microsoft, IBM, Intel, Cisco и Red Hat.
Создавая уровень абстракции поверх группы экземпляров в К2 Облаке, Kubernetes позволяет легко внедрять и использовать приложения, построенные с использованием микросервисной архитектуры. Более подробно познакомиться с Kubernetes можно в нашем блоге и на официальном сайте.
Глоссарий#
Кластер — основной элемент Kubernetes. В К2 Облаке поддерживаются две версии кластеров Kubernetes с различной архитектурой: EKS-кластеры с новой архитектурой включают мастер-узлы и Ingress-контроллеры, группы рабочих узлов создаются отдельно; в случае же предыдущей версии кластеров Kubernetes рабочие узлы являются частью кластера.
Мастер-узел — управляющий (control-plane) узел кластера, на котором размещаются служебные приложения, необходимые для работы кластера.
Рабочий узел — вычислительный узел, на котором выполняются пользовательские задачи.
Группа рабочих узлов — группа вычислительных узлов, которыми управляет EKS-кластер. Число узлов в группе может динамически меняться в зависимости от нагрузки. Для создания групп рабочих узлов используется сервис Auto Scaling.
Под (Pod) — совокупность контейнеров с общей сетью, одним IP-адресом и другими общими характеристиками (общие хранилища данных, метки).
Метки рабочих узлов — пары ключ-значение, которые присваиваются рабочим узлам. Они аналогичны тегам, но определяются в парадигме Kubernetes API. С помощью меток, например, можно указать, как используются узлы (среда, релиз и т.п.).
Taint-политики — политики ограничений (taints) применяются ко всем рабочим узлам в группе и запрещают планировщику размещать на этих узлах поды, если у них нет соответствующих разрешений.
Кластеры Kubernetes в К2 Облаке#
Эффективно распределяя трафик и масштабируя кластеры в безопасной и устойчивой инфраструктуре облака, вы можете быстро запускать контейнеризованные приложения, интегрированные с сервисами К2 Облака, а также управлять группами безопасности, связывать кластеры Kubernetes с существующими экземплярами, использовать объектное хранилище и настраивать VPN-соединения между вашей инфраструктурой и кластерами Kubernetes.
Вы можете управлять сервисом через веб-интерфейс или с помощью API.
Примечание
Подготовка и обслуживание необходимых ресурсов для кластеров Kubernetes осуществляются с помощью системного пользователя. В Журнале действий регистрируются все вызовы API при работе с кластерами Kubernetes, в том числе системные запросы на создание, изменение и удаление ресурсов, необходимых для работы сервиса.
В К2 Облаке поддерживаются следующие версии Kubernetes:
1.30.2;
1.29.4;
1.28.9;
1.27.3;
1.26.6;
1.25.11.
Сервис Кластеры Kubernetes предоставляет возможность установки в кластере дополнительных сервисов:
Ingress-контроллер можно использовать для маршрутизации запросов, поступающих извне к сервисам, развёрнутым в Kubernetes.
EBS-провайдер позволяет Kubernetes управлять дисками в К2 Облаке и использовать их в качестве Persistent Volumes.
Docker Registry настроен для использования в кластере Kubernetes. В Docker Registry можно хранить образы контейнеров для последующего развёртывания в Kubernetes.
Для чего подойдет сервис Кластеры Kubernetes?
Для быстро развёртываемых и масштабируемых стендов для разработчиков.
Для сред с большим количеством изменений и релизов.
При плавающей нагрузке в зависимости от количества пользователей.
Если важен Time to market.
Для приложений с микросервисной архитектурой.
Перед началом работы#
Для работы с сервисом Кластеры Kubernetes пользователь должен иметь проектные привилегии EKSFullAccess. Такие привилегии есть, например, у администраторов в группе CloudAdministrators. При необходимости вы можете создать отдельного пользователя, добавить его в проект и назначить ему политику EKSFullAccess или включить в группу администраторов облака в этом проекте.
Кроме того, в проекте должны иметься следующие ресурсы:
Если вам нужен EBS-провайдер, в разделе IAM создайте пользователя, добавьте его в проект и назначьте ему политику EKSCSIPolicy.
Управление кластером Kubernetes#
Для работы с кластером Kubernetes вы можете использовать любые привычные инструменты: командную строку kubectl или Draft, Helm, Terraform и т.д. В официальной документации Kubernetes вы можете ознакомиться со всеми возможностями, доступными для управления кластерами.
Чтобы начать работу с кластером напрямую из мастер-узла, вручную подключитесь к нему через SSH и выполните следующие действия:
Установите переменную окружения
KUBECONFIG
:export KUBECONFIG=/root/.kube/config
Запустите прокси-сервер:
kubectl proxy &
Управление кластером Kubernetes с помощью kubectl#
Важно
Для предоставления доступа к API-серверу кластера необходимо открыть доступ через порт 6443
.
Для управления кластером установите kubectl на свой локальный компьютер, выполнив следующие команды:
Скачайте и установите клиент kubectl:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.25.0/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl kubectl version --client #команда для проверки установки
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.25.0/bin/windows/amd64/kubectl.exe Переместите исполняемый файл в директорию из переменной окружения PATH и проверьте результат установки kubectl: kubectl version --client Docker Desktop for Windows добавляет собственную версию kubectl в переменную окружения PATH. Проверьте наличие Docker Desktop на локальном компьютере. Если он установлен, вам необходимо поместить путь к установленному двоичному файлу перед записью, добавленной установщиком Docker Desktop, или удалить kubectl, который устанавливается вместе с Docker Desktop.
Загрузите его конфигурацию из облачной консоли на локальный компьютер.
Установите переменную локального окружения:
export KUBECONFIG=<config-file>
set KUBECONFIG=<config-file>
Запустите прокси-сервер:
kubectl proxy &
Режим «Отказоустойчивый кластер»#
В данном режиме кластер запускается в конфигурации с тремя мастер-узлами. Мастер-узлы кластера Kubernetes могут быть развёрнуты в трёх зонах доступности или группе размещения в рамках одной зоны доступности. Распределение между несколькими физическими вычислительными узлами позволяет сохранить работоспособность кластера при отказе одного мастер-узла.
Если к отказавшему узлу был привязан Elastic IP, он будет переназначен на работоспособный мастер-узел.
Ограничения на использование#
По умолчанию для кластеров Kubernetes выделяются следующие квоты:
5 кластеров Kubernetes суммарно в одном проекте независимо от типа;
5 групп рабочих узлов для EKS-кластеров в одном проекте (квота на группы рабочих узлов выделяется в рамках квоты на Auto Scaling).
Квоты на остальные ресурсы выделяются в рамках общих квот на облачные ресурсы (экземпляры, диски и т.п.). При необходимости вы можете расширить квоты — для этого обратитесь в службу поддержки.