Примеры подготовки кластера Kubernetes#

При отсутствии кластера Kubernetes приведенные далее примеры помогут в его подготовке.

Подготовка кластера в Yandex Cloud Managed Service for Kubernetes#

Yandex Cloud предоставляет услуги по созданию кластеров Kubernetes в облаке, которые обеспечены всеми необходимыми сервисами, включая управление узлами master и группами рабочих узлов, автоматическое масштабирование, автоматические обновления, резервное копирование. Также предоставлены услуги по сбору метрик, служба DNS, постоянные тома.

Предварительная подготовка#

Необходимо предварительно подготовить следующие ресурсы:

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

  • Поскольку запросы будут направляться через Yandex Cloud API, необходима сервисная учетная запись (SA, Service Account), которой назначены роли, достаточные для создания ресурсов в каталоге и управления ими. Для создания ресурсов в каталоге и управления ими достаточно назначить роль editor. Однако можно использовать более гранулярный подход согласно документации Yandex Cloud. Сервисной учетной записи, назначенной ресурсам кластера, дополнительно необходима роль k8s.tunnelClusters.agent, поскольку кластер создается с туннельным режимом сети. Эту роль, как и остальные, назначают сервисной учетной записи на каталог (см. назначение ролей). Перечень ролей приведен в документации Yandex Cloud.

  • Если по каким-либо причинам необходимо использовать сеть, привязанную к другому каталогу, необходимо назначить роли для SA на этот каталог:

    • vpc.privateAdmin;

    • vpc.user;

    • vpc.bridgeAdmin (если надо создавать публичные IP-адреса);

    • vpc.publicAdmin (если надо создавать публичные IP-адреса).

  • Для хранения контента приватного реестра потребуется объектное хранилище в виде S3 bucket, объемом минимум 3 ГБ. Его можно также создать в Yandex Cloud. Назначьте роль editor для SA на S3 bucket.

  • Для управления кластером со своей локальной рабочей станции используйте утилиту командного интерфейса Yandex Cloud CLI (Command Line Interface).

Создание кластера#

Создание кластера происходит в два этапа:

  1. В группе ресурсов Yandex Cloud Managed Service for Kubernetes создайте кластер:

    • Назначьте созданную ранее учетную запись SA для ресурсов и узлов кластера.

    • Выберите автоматическое или статическое назначение публичного IP-адреса, если необходим доступ через интернет.

    • Выберите тип мастера Базовый (Base) для базовой топологии или Высокодоступный (Highly available) для топологии уровня предприятия.

    • Выберите сеть, обеспечивающую требуемые коммуникации, например сеть, связанную с управляемым сегментом по VPN.

    • В группе параметров Сетевые настройки кластера (Cluster network settings) установите флажок Cilium CNI. Этот флажок включает туннельный режим для сети кластера, при котором задействуется сетевой контроллер Cilium.

  2. Добавьте группу рабочих узлов для кластера:

    • Задайте необходимые ресурсы согласно рекомендациям:

      • для базовой топологии достаточно одного рабочего узла Kubernetes;

      • для топологии уровня предприятия необходимо не менее трех узлов с автоматическим масштабированием.

    • Выберите тип диска SSD.

    • Если необходимо назначить публичные IP-адреса, выберите автоматическое или статическое назначение публичного IP-адреса.

Управление кластером Kubernetes#

Убедитесь, что кластером можно управлять со своей рабочей станции. Следуйте инструкциям в документации провайдера для настройки. Например, для Yandex Cloud Managed Service for Kubernetes настройте это через Yandex Cloud CLI (Command Line Interface), как описано в инструкции:

  1. Убедитесь, что установлена утилита kubectl, и установите соединение с кластером, следуя указаниям в описании свойств кластера. Например:

    yc managed-kubernetes cluster get-credentials --id cat8...i7d --external
    
  2. Проверьте доступность кластера:

    kubectl get pods -A
    

    Команда выводит список служебных подов.

Общие настройки#

Для повышения производительности настройте класс хранилища по умолчанию на использование дисков SSD:

  1. Проверьте список классов:

    kubectl get storageclass
    
  2. Если настроено на использование по умолчанию yc-network-hdd, измените это следующими командами:

    kubectl patch storageclass yc-network-hdd \
    -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
    
    kubectl patch storageclass yc-network-ssd \
    -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'