Развертывание кластера Doris в Alibaba Cloud Container Service
Обзор Alibaba Cloud Container Service
Alibaba Cloud предоставляет два контейнерных сервиса:
| Сервис | Описание | Сценарий использования |
|---|---|---|
| ACK (Container Service for Kubernetes) | Управляемый контейнерный сервис на приобретенных экземплярах ECS с полным контролем доступа | Сценарии, требующие управления базовыми экземплярами ECS или развертывания узлов BE в привилегированном режиме |
| ACS (Container Service ACS) | Сервис облачных вычислений с интерфейсом K8s и оплатой по потреблению, не требующий управления базовыми экземплярами ECS | Эластичные вычислительные ресурсы с оплатой по мере использования |
В этом документе описано развертывание кластера с помощью Doris Operator в каждом из этих сервисов.
Развертывание в ACK
ACK предоставляет управляемый контейнерный сервис на приобретенных экземплярах ECS с полным контролем доступа для настройки системных параметров. При использовании образа Alibaba Cloud Linux 3 текущие значения системных параметров полностью соответствуют требованиям для работы Doris. Для других образов параметры можно скорректировать внутри контейнера с помощью привилегированного режима K8s.
При развертывании с ACK + Doris Operator большинство стандартных настроек ECS соответствуют требованиям, а параметры, которые им не соответствуют, корректирует Operator.
Сценарий 1: существующий кластер
Если кластер контейнерного сервиса уже создан, выполните следующие действия для проверки и корректировки параметров:
Шаг 1: проверка состояния swap
swapon --show
Ожидаемый результат: вывод отсутствует (swap отключен). Если вывод указывает на то, что swap включен, выполните swapoff -a и перезагрузите систему.
Шаг 2: проверка максимального количества файловых дескрипторов
ulimit -n
Ожидаемый результат: не менее 65535. Если значение ниже, добавьте следующие строки в /etc/security/limits.conf:
* soft nofile 1000000
* hard nofile 1000000
Шаг 3: проверка количества областей виртуальной памяти
sysctl vm.max_map_count
Ожидаемый результат: не менее 262144. Если требуется изменить значение, выполните sysctl -w vm.max_map_count=2000000.
Шаг 4: проверка прозрачных огромных страниц
cat /sys/kernel/mm/transparent_hugepage/enabled
Ожидаемый результат: вывод содержит [never]. Если значение равно [always], выполните:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
Подробнее см. в разделе Проверка операционной системы.
Сценарий 2: новый кластер
Чтобы создать новый кластер, нажмите «Создать кластер» в консоли Alibaba Cloud Container Service ACK. На шаге Настройка пула узлов добавьте следующий скрипт в поле «Предварительные пользовательские данные экземпляра»:
#!/bin/bash
chmod +x /etc/rc.d/rc.local
# Disable firewall
echo "sudo systemctl stop firewalld.service" >> /etc/rc.d/rc.local
echo "sudo systemctl disable firewalld.service" >> /etc/rc.d/rc.local
# Set virtual memory area count
echo "sysctl -w vm.max_map_count=2000000" >> /etc/rc.d/rc.local
# Disable swap
echo "swapoff -a" >> /etc/rc.d/rc.local
# Set file handle limit
current_limit=$(ulimit -n)
desired_limit=1000000
config_file="/etc/security/limits.conf"
if [ "$current_limit" -ne "$desired_limit" ]; then
echo "* soft nofile 1000000" >> "$config_file"
echo "* hard nofile 1000000" >> "$config_file"
fi
После запуска кластера перезагрузите узлы, чтобы изменения вступили в силу.
Развертывание в ACS
ACS предоставляет сервис облачных вычислений с интерфейсом K8s и эластичными вычислительными ресурсами с оплатой по мере использования. Управлять базовыми экземплярами ECS не требуется, однако для запуска узлов BE необходим привилегированный режим, позволяющий изменять системные параметры, например vm.max_map_count.
Если в текущем кластере нельзя использовать привилегированный режим, запустить узлы BE не удастся. В этом случае рассмотрите вариант развертывания с ACK и хостами.
Шаг 1: настройка реестра образов
Для ACS рекомендуется использовать соответствующий реестр образов Alibaba Cloud Container Registry (ACR), доступный в редакциях Personal Edition и Enterprise Edition.
После переноса официальных образов Doris в реестр образов Alibaba Cloud создайте секрет, если используются приватные образы:
kubectl create secret docker-registry image-hub-secret \
--docker-server={your-server} \
--docker-username={your-username} \
--docker-password={your-pwd}
Шаг 2: настройка DCR для использования приватных образов
Настройте imagePullSecrets в DorisCluster CR:
spec:
feSpec:
replicas: 1
image: <your-acr-registry>/selectdb-test/doris.fe-ubuntu:3.0.3
imagePullSecrets:
- name: image-hub-secret
beSpec:
replicas: 3
image: <your-acr-registry>/selectdb-test/doris.be-ubuntu:3.0.3
imagePullSecrets:
- name: image-hub-secret
systemInitialization:
initImage: <your-acr-registry>/selectdb-test/alpine:latest
Шаг 3: настройка Service
В ACS нет привычного понятия Node, поэтому для Service нельзя использовать режим NodePort. Доступны следующие режимы:
Режим ClusterIP (по умолчанию)
Сетевой режим Operator по умолчанию. См. документацию Kubernetes Service.
Режим Load Balancer
Способ 1: настройка аннотаций через DCR
feSpec:
replicas: 3
image: <your-image>
service:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
Способ 2: управление через консоль ACS
- Задайте для serviceType значение ClusterIP (по умолчанию) в DCR.
- В консоли ACS перейдите: Container Compute Service ACS → Список кластеров → Кластер → Сервисы → Создать.
- Выберите только что созданный LB для привязки. Этот Service управляется параллельно с Doris Operator, но не контролируется Operator.
Часто задаваемые вопросы
Вопрос: что делать, если узлы BE не запускаются?
Проверьте следующее:
- Привилегированный режим не включен: в ACS для изменения
vm.max_map_countтребуется привилегированный режим. Если включить его невозможно, используйте ACK. - Ошибка загрузки образа: проверьте правильность настройки
imagePullSecrets. - Недостаточное количество областей виртуальной памяти: выполните
sysctl vm.max_map_countи убедитесь, что значение не ниже 262144.
Вопрос: нормально ли, что узлы кластера отображаются как virtual-kubelet?
Да. ACS использует виртуальные узлы для планирования размещения контейнеров. Имена узлов вида virtual-kubelet-cn-hongkong-d нормальны для ACS.
Вопрос: что делать, если привилегированный режим недоступен в регионе Alibaba Cloud?
Создайте обращение в службу поддержки с просьбой добавить возможность использования привилегированного режима ACS в список разрешенных для вашей учетной записи.
Вопрос: как выбрать между ACK и ACS?
| Сценарий | Рекомендация |
|---|---|
| Требуется полный контроль над базовыми экземплярами ECS | ACK |
| Нужны эластичные ресурсы с оплатой по мере использования без управления базовой инфраструктурой | ACS |
| Узлам BE требуется привилегированный режим | ACK |