Doris Kubernetes Operator
Kubernetes Operator(Doris Operatorと呼ばれる)は、KubernetesプラットフォームでDorisを効率的にデプロイし、運用したいというユーザーの需要に応えるために生まれました。 これは、Kubernetesネイティブリソースの複雑な管理機能を統合し、Dorisコンポーネント間の分散協調、ユーザークラスター形式のオンデマンドカスタマイズなどの体験を統合して、より簡潔で効率的かつ使いやすいコンテナ化されたデプロイメントソリューションをユーザーに提供します。 これは、Kubernetes上でDorisの効率的な管理と制御を実現し、強力な機能と柔軟な構成機能を提供しながら、ユーザーが運用保守管理と学習コストを削減できるよう支援することを目指しています。
Doris Operatorは、Kubernetes CustomResourceDefinitions(CRD)に基づいて、KubernetesプラットフォームでのDorisの構成、管理、スケジューリングを実装します。Doris Operatorは、ユーザー定義の希望する状態に従って、Podやその他のリソースを自動的に作成してサービスを開始できます。自動登録メカニズムにより、開始されたすべてのサービスを完全なDorisクラスターに統合できます。この実装により、本番環境で必要不可欠な操作である、Dorisクラスターでの構成情報の処理、ノードの発見と登録、アクセス通信、ヘルスチェックの複雑さと学習コストが大幅に削減されます。
Doris Operatorアーキテクチャ
Doris Operatorの設計は、2層スケジューラーの原則に基づいています。各コンポーネントの第1層スケジューリングは、ネイティブのStatefulSetとServiceリソースを使用して、対応するPodサービスを直接管理します。これにより、パブリッククラウド、プライベートクラウド、自作のKubernetesプラットフォームを含む、オープンソースのKubernetesクラスターと完全に互換性があります。
Doris Operatorが提供するデプロイメント定義に基づいて、ユーザーはDorisデプロイメントの状態をカスタマイズし、Kubernetesのkubectlマネジメントコマンドを通じてKubernetesクラスターに送信できます。Doris Operatorは、カスタマイズされた状態に従って、各サービスのデプロイメントをStatefulSetとその関連リソース(Serviceなど)に変換し、StatefulSetを通じて希望するPodをスケジュールします。Dorisクラスターの最終状態を抽象化することで、StatefulSet仕様の不要な構成を簡素化し、ユーザーの学習コストを削減します。
主要機能
-
最終状態デプロイメント:
Kubernetesはサービスを管理するために最終状態運用保守モードを使用し、Doris OperatorはDorisクラスターを記述できるリソースタイプ - DorisClusterを定義します。ユーザーは関連ドキュメントと使用例を参照して、必要なクラスターを簡単に構成できます。 ユーザーは、Kubernetesのコマンドラインツールkubectlを通じて構成をKubernetesクラスターに送信できます。Doris Operatorは必要なクラスターを自動的に構築し、対応するリソースにクラスターステータスをリアルタイムで更新します。このプロセスは、クラスターの効率的な管理と監視を確保し、運用保守操作を大幅に簡素化します。
-
拡張が容易:
Doris Operatorは、クラウドディスクベース環境での同時リアルタイム水平拡張をサポートします。Dorisのすべてのコンポーネントサービスは、KubernetesのStatefulSetを通じてデプロイおよび管理されます。デプロイまたは拡張時に、PodはStatefulSetのParallelモードを使用して作成されるため、理論的にはすべてのレプリカがノード起動にかかる時間内に開始できます。各レプリカの起動は相互に干渉せず、あるサービスの起動に失敗しても、他のサービスの起動は影響を受けません。 Doris Operatorは並行モードを使用してサービスを開始し、分散アーキテクチャを内蔵しているため、サービス拡張プロセスが大幅に簡素化されます。ユーザーはレプリカ数を設定するだけで拡張を簡単に完了でき、運用保守操作の複雑さから完全に解放されます。
-
気づかない変更:
分散環境では、サービスの再起動によってサービスの一時的な不安定性が引き起こされる可能性があります。特に、安定性に対する要求が極めて高いデータベースなどのサービスにとって、再起動プロセス中にサービスの安定性を確保する方法は非常に重要なトピックです。DorisはKubernetes上で以下の3つのメカニズムを使用して、サービス再起動プロセスの安定性を確保し、再起動およびアップグレードプロセス中にビジネスが気づかない体験を実現します。
- グレースフルな終了
- ローリング再起動
- クエリ割り当ての能動的停止
-
ホストシステム構成:
一部のシナリオでは、Apache Dorisの理想的なパフォーマンスを実現するためにホストシステムパラメーターを構成する必要があります。コンテナ化シナリオでは、ホストデプロイメントの不確実性とパラメーター変更の困難さがユーザーに課題をもたらします。この問題を解決するために、Doris OperatorはKubernetesの初期化コンテナを使用してホストパラメーターを構成可能にします。 Doris Operatorは、ユーザーがホストで実行されるコマンドを構成し、初期化コンテナで有効にできます。可用性を向上させるために、Doris OperatorはKubernetes初期化コンテナの構成方法を抽象化し、ホストコマンドの設定をより簡単かつ直感的にします。
-
永続的構成:
Doris OperatorはKubernetes StorageClassモードを使用して、各サービスにストレージ構成を提供します。ユーザーがマウントディレクトリをカスタマイズできます。起動構成をカスタマイズする際、ストレージディレクトリが変更された場合、ディレクトリをカスタムリソースで永続的な場所として設定できるため、サービスはコンテナ内の指定されたディレクトリを使用してデータを保存します。
-
ランタイムデバッグ:
コンテナ化されたサービスのTrouble Shootingにおける最大の課題の1つは、ランタイムでのデバッグ方法です。可用性と使いやすさを追求しながら、Doris Operatorは問題の特定により便利な条件も提供します。Dorisの基本イメージには、問題の特定のための様々なツールが事前設定されています。リアルタイムでステータスを表示する必要がある場合、kubectlが提供するexecコマンドを通じてコンテナに入り、内蔵ツールを使用してトラブルシューティングできます。 不明な理由でサービスを開始できない場合、Doris OperatorはDebug実行モードを提供します。PodがDebug起動モードに設定されると、コンテナは自動的に実行状態に入ります。この時、
execコマンドを通じてコンテナに入り、手動でサービスを開始して問題を特定できます。詳細については、このドキュメントを参照してください。
互換性
Doris Operatorは標準K8s仕様に従って開発されており、主要クラウドベンダーが提供するもの、標準に基づく自作K8sプラットフォーム、ユーザー構築プラットフォームを含む、すべての標準K8sプラットフォームと互換性があります。
クラウドベンダー互換性
主要クラウドベンダーのコンテナ化サービスプラットフォームと完全に互換性があります。Doris Operatorの環境準備と使用推奨事項については、以下のドキュメントを参照してください:
インストールと管理
前提条件
デプロイメント前に、ホストシステムを確認する必要があります。オペレーティングシステムチェックを参照してください。
Doris Operatorのデプロイ
詳細については、Compute-Storage CoupledまたはCompute-Storage DecoupledのDoris Operatorインストールドキュメントを参照してください。