Быстрый старт
В этом документе описывается процесс создания нового кластера Kubernetes с использованием архитектуры Hosted Control Plane.
Содержание
Предварительные требования
Перед созданием кластера с hosted control plane убедитесь, что выполнены следующие условия:
Готовность управляющего кластера
Выберите кластер нагрузки Alauda Container Platform в качестве управляющего кластера. Управляющий кластер должен быть готов до создания нового HCP-кластера, так как компоненты hosted control plane будут запускаться внутри него.
Если вы выбираете кластер нагрузки в качестве управляющего, выполните следующую команду в глобальной консоли CLI:
Требования к окружению
В управляющем кластере должны быть установлены следующие плагины кластера:
- Alauda Container Platform Kubeadm Provider
- Alauda Container Platform Hosted Control Plane
- Alauda Container Platform SSH Infrastructure Provider
Требования к LoadBalancer
Управляющий кластер должен поддерживать сервис типа LoadBalancer, например MetalLB (предоставляемый Alauda Container Platform) или облачные балансировщики нагрузки.
Готовность рабочих хостов
Рабочие хосты должны быть подготовлены до создания нового кластера. Рабочие хосты могут быть физическими или виртуальными машинами.
Подробные требования к рабочим хостам см. в Требования к рабочим хостам.
Готовность etcd кластера
Каждому HCP-кластеру требуется etcd кластер в качестве хранилища для kube-apiserver. Необходимо развернуть etcd кластер до создания нового HCP-кластера. Если etcd кластер ещё не подготовлен, обратитесь к документу Deploy Etcd Cluster для инструкций по развертыванию etcd.
Обзор процесса
Создание кластера с hosted control plane включает следующие основные шаги:
- Объявление backend-хранилища — создание ресурса DataStore для настройки etcd backend
- Создание Hosted Control Plane — развертывание ресурсов control plane
- Добавление рабочих узлов — развертывание ресурсов рабочих узлов
- Доступ из Alauda Container Platform — интеграция с консолью управления ACP
Ниже приведены подробные инструкции для каждого шага.
Шаг 1: Объявление backend-хранилища
Создайте ресурс DataStore, который объявляет backend-хранилище для kube-apiserver. Один ресурс DataStore может использоваться несколькими HCP-кластерами.
Параметры DataStore
Важные замечания:
- Все файлы сертификатов и ключей должны быть сохранены в Kubernetes Secrets до создания ресурса DataStore.
- etcd кластер должен быть доступен из управляющего кластера, в котором запускаются hosted control plane.
- Для производственных сред настоятельно рекомендуется использовать аутентификацию TLS.
- Один DataStore может обслуживать несколько HCP-кластеров, что позволяет эффективно использовать ресурсы.
Шаг 2: Создание Hosted Control Plane
Для развертывания control plane необходимо последовательно создать следующие ресурсы Kubernetes.
Рекомендуемая практика: Для централизованного управления и единообразия операций рекомендуется развертывать все ресурсы hosted control plane в namespace cpaas-system.
2.1 Создание ресурса Cluster
Создайте ресурс Cluster API Cluster для объявления кластера и настройки CIDR сетей.
Важно: podCIDR и serviceCIDR не должны пересекаться с сетевыми диапазонами управляющего кластера.
Описание параметров:
{CLUSTER_NAME}: Имя вашего кластера (например,my-hcp-cluster){NAMESPACE}: Namespace для ресурсов кластера (обычноcpaas-system){POD_CIDR}: CIDR сети для подов (например,10.7.0.0/16){SERVICE_CIDR}: CIDR сети для сервисов (например,10.8.0.0/16)
2.2 Создание секрета с учётными данными реестра (опционально)
Создайте Secret для аутентификации в контейнерном реестре. Пропустите этот шаг, если аутентификация не требуется.
Описание параметров:
{REGISTRY_CREDENTIAL_NAME}: Имя секрета с учётными данными реестра (например,registry-credentials){BASE64_ENCODED_USERNAME}: Имя пользователя реестра в base64{BASE64_ENCODED_PASSWORD}: Пароль реестра в base64
2.3 Создание ресурса SSHCluster
Настройте инфраструктурный кластер на основе SSH.
Описание параметров:
{REGISTRY_ADDRESS}: Адрес контейнерного реестра (например,harbor.example.com){REGISTRY_CREDENTIAL_NAME}: Имя секрета с учётными данными реестра (если аутентификация не нужна, блокauthопустите)
2.4 Создание ресурса KamajiControlPlane
Перед созданием ресурса KamajiControlPlane получите теги образов CoreDNS и kube-proxy из управляющего кластера:
Создайте ресурс KamajiControlPlane:
Описание параметров:
{DATASTORE_NAME}: Имя ресурса DataStore, созданного на Шаге 1{REGISTRY_ADDRESS}: Адрес контейнерного реестра{COREDNS_IMAGE_TAG}: Тег образа CoreDNS (полученный выше){KUBE_PROXY_IMAGE_TAG}: Тег образа kube-proxy (обычно совпадает с версией Kubernetes){CONTROL_PLANE_REPLICAS}: Количество реплик control plane (рекомендуется3для высокой доступности){KUBERNETES_VERSION}: Версия Kubernetes (например,v1.32.7, проверьте поддерживаемые версии в глобальном кластере)
2.5 Проверка статуса control plane
После развертывания ресурсов control plane проверьте, что все компоненты работают корректно:
Проверка статуса KamajiControlPlane
Ожидаемый вывод:
Проверка статуса TenantControlPlane
Ожидаемый вывод:
Проверка подов control plane
Ожидаемый вывод (все поды должны быть в состоянии Running):
Если все три проверки показывают здоровый статус, развертывание control plane прошло успешно.
Шаг 3: Добавление рабочих узлов
После запуска control plane добавьте рабочие узлы в кластер.
3.1 Создание SSHHost и учётных данных
Создайте SSH-учётные данные и определения хостов для каждого рабочего узла:
Описание параметров:
{HOST_CREDENTIAL_NAME}: Имя секрета с SSH-учётными данными (например,worker-node-credentials){BASE64_ENCODED_SSH_USERNAME}: SSH имя пользователя в base64{BASE64_ENCODED_SSH_PASSWORD}: SSH пароль в base64{HOST_NAME}: Имя рабочего хоста (например,worker-node-1){HOST_IP_ADDRESS}: IP-адрес рабочего хоста (например,192.168.143.64){SSH_PORT}: SSH порт (по умолчанию22){REUSE_HOST}: Флаг повторного использования хоста после удаления Machine (trueилиfalse). Еслиtrue, хост будет очищен и повторно использован при удалении соответствующего ресурса Machine.
3.2 Создание SSHMachineTemplate
Определите шаблон машины с конфигурацией контейнерного рантайма.
Примечание: В настоящее время поддерживается только containerd. Плагин включает containerd версии 1.7.27-4 по умолчанию. Если используется другая версия, убедитесь, что соответствующий образ доступен в вашем реестре.
Описание параметров:
{MACHINE_TEMPLATE_NAME}: Имя шаблона машины (например,worker-template){CONTAINERD_VERSION}: Версия контейнерного рантайма (например,1.7.27-4)
3.3 Создание KubeadmConfigTemplate
Настройте параметры kubelet. Если специальных требований нет, используйте конфигурацию по умолчанию.
Описание параметров:
{CONFIG_TEMPLATE_NAME}: Имя шаблона конфигурации (например,worker-config-template)
3.4 Создание MachineDeployment
Разверните рабочие узлы с помощью MachineDeployment:
Описание параметров:
{MACHINE_DEPLOYMENT_NAME}: Имя MachineDeployment (например,worker-deployment){CLUSTER_NAME}: Имя вашего кластера (должно совпадать с именем ресурса Cluster){WORKER_NODE_REPLICAS}: Количество реплик рабочих узлов (не должно превышать количество доступных SSHHost){CONFIG_TEMPLATE_NAME}: Имя созданного выше KubeadmConfigTemplate{MACHINE_TEMPLATE_NAME}: Имя созданного выше SSHMachineTemplate{KUBERNETES_VERSION}: Версия Kubernetes (например,v1.32.7, должна совпадать с версией control plane)
3.5 Проверка статуса рабочих узлов
После развертывания проверьте статус MachineDeployment:
Ожидаемый вывод:
Если статус показывает здоровье, рабочие узлы успешно добавлены в кластер.
Шаг 4: Доступ из Alauda Container Platform
После полного развертывания кластера интегрируйте его с Alauda Container Platform.
Получение kubeconfig кластера
Выполните следующую команду в управляющем кластере для получения kubeconfig кластера:
Импорт в ACP
Используйте полученный kubeconfig для импорта кластера в Alauda Container Platform через интерфейс консоли ACP.
Устранение неполадок
Если при развертывании возникают проблемы, проверьте следующее:
-
Проблемы с control plane:
- Проверьте доступность DataStore к etcd кластеру
- Просмотрите логи подов control plane:
kubectl logs -n {NAMESPACE} {POD_NAME} - Убедитесь, что сервис LoadBalancer получил внешний IP
-
Проблемы с рабочими узлами:
- Проверьте SSH-соединение с рабочими хостами
- Проверьте статус SSHHost:
kubectl get sshhost -n {NAMESPACE} - Просмотрите логи создания машин:
kubectl describe machine -n {NAMESPACE}
-
Проблемы с сетью:
- Убедитесь, что Pod CIDR и Service CIDR не конфликтуют с управляющим кластером
- Проверьте корректную работу сетевого плагина (Calico)
- Проверьте соединение агента konnectivity
Для дополнительной поддержки обратитесь к документации Alauda Container Platform или в службу поддержки.