Operator を使用して StarRocks をデプロイする
このトピックでは、StarRocks Operator を使用して Kubernetes クラスター上で StarRocks クラスターのデプロイと管理を自動化する方法を紹介します。
StarRocks k8s operator はレベル 2 オペレーターとして設計されています。レベル 2 オペレーターの機能について詳しくは、https://sdk.operatorframework.io/docs/overview/operator-capabilities/ を参照してください。
動作の仕組み

始める前に
Kubernetes クラスターを作成する
Amazon Elastic Kubernetes Service (EKS) や Google Kubernetes Engine (GKE) クラスターなどのクラウド管理 Kubernetes サービス、または自己管理の Kubernetes クラスターを使用できます。
-
Amazon EKS クラスターを作成する
- 以下のコマンドラインツールが環境にインストールされていることを確認します:
- AWS コマンドラインツール AWS CLI をインストールして設定します。
- EKS クラスターコマンドラインツール eksctl をインストールします。
- Kubernetes クラスターコマンドラインツール kubectl をインストールします。
- 次のいずれかの方法を使用して EKS クラスターを作成します:
- 以下のコマンドラインツールが環境にインストールされていることを確認します:
-
GKE クラスターを作成する
GKE クラスターを作成する前に、すべての前提条件を完了してください。その後、Create a GKE cluster に記載された手順に従って GKE クラスターを作成します。
-
自己管理の Kubernetes クラスターを作成する
kubeadm を使用したクラスターのブートストラップ に記載された手順に従って、自己管理の Kubernetes クラスターを作成します。Minikube と Docker Desktop を使用して、最小限の手順でシングルノードのプライベート Kubernetes クラスターを作成できます。
StarRocks Operator をデプロイする
-
カスタムリソース StarRocksCluster を追加します。
kubectl apply -f https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/starrocks.com_starrocksclusters.yaml -
StarRocks Operator をデプロイします。デフォルトの設定ファイルまたはカスタム設定ファイルを使用して StarRocks Operator をデプロイすることができます。
-
デフォルトの設定ファイルを使用して StarRocks Operator をデプロイします。
kubectl apply -f https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/operator.yamlStarRocks Operator は
starrocks名前空間にデプロイされ、すべての名前空間の下のすべての StarRocks クラスターを管理します。 -
カスタム設定ファイルを使用して StarRocks Operator をデプロイします。
-
StarRocks Operator をデプロイするために使用される設定ファイル operator.yaml をダウンロードします。
curl -O https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/operator.yaml -
設定ファイル operator.yaml をニーズに合わせて修正します。
-
StarRocks Operator をデプロイします。
kubectl apply -f operator.yaml
-
-
-
StarRocks Operator の稼働状況を確認します。ポッドが
Running状態であり、ポッド内のすべてのコンテナがREADYであれば、StarRocks Operator は期待通りに稼働しています。$ kubectl -n starrocks get pods
NAME READY STATUS RESTARTS AGE
starrocks-controller-65bb8679-jkbtg 1/1 Running 0 5m6s
NOTE
StarRocks Operator が配置されている名前空間をカスタマイズする場合は、
starrocksをカスタマイズした名前空間の名前に置き換える必要があります。
StarRocks クラスターをデプロイする
StarRocks が提供する サンプル設定ファイル を直接使用して、StarRocks クラスター(カスタムリソース StarRocks Cluster を使用してインスタンス化されたオブジェクト)をデプロイできます。たとえば、starrocks-fe-and-be.yaml を使用して、3 つの FE ノードと 3 つの BE ノードを含む StarRocks クラスターをデプロイできます。
kubectl apply -f https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/examples/starrocks/starrocks-fe-and-be.yaml
以下の表は、starrocks-fe-and-be.yaml ファイルのいくつかの重要なフィールドを説明しています。
| Field | Description |
|---|---|
| Kind | オブジェクトのリソースタイプ。値は StarRocksCluster でなけれ ばなりません。 |
| Metadata | メタデータで、以下のサブフィールドがネストされています:
|
| Spec | オブジェクトの期待される状態。有効な値は starRocksFeSpec、starRocksBeSpec、starRocksCnSpec です。 |
修正された設定ファイルを使用して StarRocks クラスターをデプロイすることもできます。サポートされているフィールドと詳細な説明については、api.md を参照してください。
StarRocks クラスターのデプロイには時間がかかります。この期間中、kubectl -n starrocks get pods コマンドを使用して StarRocks クラスターの起動状態を確認できます。すべてのポッドが Running 状態であり、ポッド内のすべてのコンテナが READY であれば、StarRocks クラスターは期待通りに稼働しています。
NOTE
StarRocks クラスターが配置されている名前空間をカスタマイズする場合は、
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
Note
長時間経過しても一部のポッドが起動しない場合は、
kubectl logs -n starrocks <pod_name>を使用してログ情報を確認するか、kubectl -n starrocks describe pod <pod_name>を使用してイベント情報を確認し、問題を特定してください。
StarRocks クラスターを管理する
StarRocks クラスターにアクセスする
StarRocks クラスターのコンポーネントは、FE サービスなどの関連するサービスを通じてアクセスできます。サービスとそのアクセスアドレスの詳細については、api.md および Services を参照してください。
NOTE
- デフォルトでは FE サービスのみがデプロイされます。BE サービスと CN サービスをデプロイする必要がある場合は、StarRocks クラスター設定ファイルで
starRocksBeSpecとstarRocksCnSpecを設定する必要があります。- サービスの名前はデフォルトで
<cluster name>-<component name>-serviceです。たとえば、starrockscluster-sample-fe-serviceです。各コンポーネントの spec でサービス名を指定することもできます。
Kubernetes クラスター内から StarRocks クラスターにアクセスする
Kubernetes クラスター内からは、FE サービスの ClusterIP を通じて StarRocks クラスターにアクセスできます。
-
FE サービスの内部仮想 IP アドレス
CLUSTER-IPとポートPORT(S)を取得します。$ 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 -
Kubernetes クラスター内から MySQL クライアントを使用して StarRocks クラスターにアクセスします。
mysql -h 10.100.162.xxx -P 9030 -uroot