Развертывание Selena с помощью Operator
В этой теме рассказывается, как использовать Selena Operator для автоматизации развертывания и управления кластером Selena в кластере Kubernetes.
Selena k8s operator был разработан как оператор уровня 2. См. https://sdk.operatorframework.io/docs/overview/operator-capabilities/ для понимания возможностей оператора уровня 2.
Как это работает

Перед началом работы
Создание кластера Kubernetes
Вы можете использовать облачный управляемый сервис Kubernetes, такой как Amazon Elastic Kubernetes Service (EKS) или кластер Google Kubernetes Engine (GKE), или самоуправляемый кластер Kubernetes.
-
Создание кластера Amazon EKS
- Убедитесь, что следующие инструменты командной строки установлены в вашей среде:
- Установите и настройте инструмент командной строки AWS CLI.
- Установите инструмент командной строки для кластера EKS eksctl.
- Установите инструмент командной строки для кластера Kubernetes kubectl.
- Используйте один из следующих методов для создания кластера EKS:
- Убедитесь, что следующие инструменты командной строки установлены в вашей среде:
-
Создание кластера GKE
Перед началом создания кластера GKE убедитесь, что вы выполнили все пред варительные требования. Затем следуйте инструкциям в Создание кластера GKE для создания кластера GKE.
-
Создание самоуправляемого кластера Kubernetes
Следуйте инструкциям в Начальная загрузка кластеров с kubeadm для создания самоуправляемого кластера Kubernetes. Вы можете использовать Minikube и Docker Desktop для создания одноузлового частного кластера Kubernetes с минимальными шагами.
Развертывание Selena Operator
-
Добавьте пользовательский ресурс StarRocksCluster.
kubectl apply -f https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/starrocks.com_starrocksclusters.yaml -
Разверните Selena Operator. Вы можете выбрать развертывание Selena Operator, используя файл конфигурации по умолчанию или пользовательский файл конфигурации.
-
Разверните Selena Operator, используя файл конфигурации по умолчанию.
kubectl apply -f https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/operator.yamlSelena Operator развертывается в пространстве имен
starrocksи управляет всеми кластерами Selena во всех пространствах имен. -
Разверните Selena Operator, используя пользовательский файл конфигурации.
-
Загрузите файл конфигурации operator.yaml, который используется для развертывания Selena Operator.
curl -O https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/operator.yaml -
Измените файл конфигурации operator.yaml в соответствии с вашими потребностями.
-
Разверните Selena Operator.
kubectl apply -f operator.yaml
-
-
-
Проверьте статус работы Selena Operator. Если pod находится в состоянии
Runningи все контейнеры внутри pod имеют статусREADY, Selena Operator работает как ожидается.$ kubectl -n starrocks get pods
NAME READY STATUS RESTARTS AGE
starrocks-controller-65bb8679-jkbtg 1/1 Running 0 5m6s
ПРИМЕЧАНИЕ
Если вы настраиваете пространство имен, в котором находится Selena Operator, вам нужно заменить
starrocksна имя вашего настроенного пространства имен.
Развертывание кластера Selena
Вы можете напрямую использовать примеры файлов конфигурации, предоставленные Selena, для развертывания кластера Selena (объекта, созданного с использован ием пользовательского ресурса StarRocks Cluster). Например, вы можете использовать starrocks-fe-and-be.yaml для развертывания кластера Selena, который содержит три узла FE и три узла BE.
kubectl apply -f https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/examples/starrocks/starrocks-fe-and-be.yaml
В следующей таблице описаны несколько важных полей в файле starrocks-fe-and-be.yaml.
| Поле | Описание |
|---|---|
| Kind | Тип ресурса объекта. Значение должно быть StarRocksCluster. |
| Metadata | Метаданные, в которых вложены следующие подполя:
|
| Spec | Ожидаемый статус объекта. Допустимые значения: starRocksFeSpec, starRocksBeSpec и starRocksCnSpec. |
Вы также можете развернуть кластер Selena, используя измененный файл конфигурации. Для поддерживаемых полей и подробных описаний см. api.md.
Развертывание кластера Selena занимает некоторое время. В течение этого периода вы можете использовать команду kubectl -n starrocks get pods для проверки статуса запуска кластера Selena. Если все pod находятся в состоянии Running и все контейнеры внутри pod имеют статус READY, кластер Selena работает как ожидается.
ПРИМЕЧАНИЕ
Если вы настраиваете пространство имен, в котором находится кластер Selena, вам нужно заменить
starrocksна имя вашего настроенного пространства имен.
$ kubectl -n starrocks get pods
NAME READY STATUS RESTARTS AGE
starrocks-controller-65bb8679-jkbtg 1/1 Running 0 22h
starrockscluster-sample-be-0 1/1 Running 0 23h
starrockscluster-sample-be-1 1/1 Running 0 23h
starrockscluster-sample-be-2 1/1 Running 0 22h
starrockscluster-sample-fe-0 1/1 Running 0 21h
starrockscluster-sample-fe-1 1/1 Running 0 21h
starrockscluster-sample-fe-2 1/1 Running 0 22h
Примечание
Если некоторые pod не могут запуститься после длительного периода времени, вы можете использовать
kubectl logs -n starrocks <pod_name>для просмотра информации журнала илиkubectl -n starrocks describe pod <pod_name>для просмотра информации о событиях для локализации проблемы.
Управление кластером Selena
Доступ к кластеру Selena
К компонентам кластера Selena можно получить доступ через связанные с ними Services, такие как FE Service. Для подробных описаний Services и их адресов доступа см. api.md и Services.
ПРИМЕЧАНИЕ
- По умолчанию развертывается только FE Service. Если вам нужно развернуть BE Service и CN Service, вам нужно настроить
starRocksBeSpecиstarRocksCnSpecв файле конфигурации кластера Selena.- Имя Service по умолчанию
<имя кластера>-<имя компонента>-service, например,starrockscluster-sample-fe-service. Вы также можете указать имя Service в спецификации каждого компонента.
Доступ к кластеру Selena изнутри кластера Kubernetes
Изнутри кластера Kubernetes к кластеру Selena можно получить доступ через ClusterIP FE Service.
-
Получите внутренний виртуальный IP-адрес
CLUSTER-IPи портPORT(S)FE Service.$ kubectl -n starrocks get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
be-domain-search ClusterIP None <none> 9050/TCP 23m
fe-domain-search ClusterIP None <none> 9030/TCP 25m
starrockscluster-sample-fe-service ClusterIP 10.100.162.xxx <none> 8030/TCP,9020/TCP,9030/TCP,9010/TCP 25m -
Получите доступ к кластеру Selena, используя клиент MySQL изнутри кластера Kubernetes.
mysql -h 10.100.162.xxx -P 9030 -uroot
Доступ к кластеру Selena извне кластера Kubernetes
Извне кластера Kubernetes вы можете получить доступ к кластеру Selena через LoadBalancer или NodePort FE Service. В этой теме используется LoadBalancer в качестве примера:
-
Выполните команду
kubectl -n starrocks edit src starrockscluster-sampleдля обновления файла конфигурации кластера Selena и измените тип ServicestarRocksFeSpecнаLoadBalancer.starRocksFeSpec:
image: starrocks/fe-ubuntu:3.0-latest
replicas: 3
requests:
cpu: 4
memory: 16Gi
service:
type: LoadBalancer # указан как LoadBalancer -
Получите IP-адрес
EXTERNAL-IPи портPORT(S), которые FE Service предоставляет наружу.$ kubectl -n starrocks get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
be-domain-search ClusterIP None <none> 9050/TCP 127m
fe-domain-search ClusterIP None <none> 9030/TCP 129m
starrockscluster-sample-fe-service LoadBalancer 10.100.162.xxx a7509284bf3784983a596c6eec7fc212-618xxxxxx.us-west-2.elb.amazonaws.com 8030:30629/TCP,9020:32544/TCP,9030:32244/TCP,9010:32024/TCP 129m ClusterIP None <none> 9030/TCP 23h -
Войдите на хост вашей машины и получите доступ к кластеру Selena, используя клиент MySQL.
mysql -h a7509284bf3784983a596c6eec7fc212-618xxxxxx.us-west-2.elb.amazonaws.com -P9030 -uroot
Обновление кластера Selena
Обновление узлов BE
Выполните следующую команду для указания нового файла образа BE, например starrocks/be-ubuntu:latest:
kubectl -n starrocks patch starrockscluster starrockscluster-sample --type='merge' -p '{"spec":{"starRocksBeSpec":{"image":"starrocks/be-ubuntu:latest"}}}'
Обновление узлов FE
Выполните следующую команду для указания нового файла образа FE, например starrocks/fe-ubuntu:latest:
kubectl -n starrocks patch starrockscluster starrockscluster-sample --type='merge' -p '{"spec":{"starRocksFeSpec":{"image":"starrocks/fe-ubuntu:latest"}}}'
Процесс обновления длится некоторое время. Вы можете выполнить команду kubectl -n starrocks get pods для просмотра прогресса обновления.
Масштабирование кластера Selena
Горизонтальное расширение кластера BE
Выполните следующую команду для масштабирования кластера BE до 9 узлов:
kubectl -n starrocks patch starrockscluster starrockscluster-sample --type='merge' -p '{"spec":{"starRocksBeSpec":{"replicas":9}}}'