クラスターにアクセス
KubernetesはVIP(Virtual IP)およびロードバランサーとしてServiceの使用を提供します。Serviceには3つの外部公開モードがあります:ClusterIP、NodePort、LoadBalancerです。
ClusterIP
DorisはKubernetes上でデフォルトでClusterIPアクセスモードを提供します。ClusterIPアクセスモードはKubernetesクラスター内で内部IPアドレスを提供し、この内部IPを通じてサービスを公開します。ClusterIPモードでは、サービスはクラスター内でのみアクセス可能です。
ステップ1:Serviceの取得
クラスターをデプロイした後、以下のコマンドを使用してDoris Operatorによって公開されたサービスを確認できます:
kubectl -n doris get svc
返された結果は以下の通りです:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
doriscluster-sample-be-internal ClusterIP None <none> 9050/TCP 9m
doriscluster-sample-be-service ClusterIP 10.1.68.128 <none> 9060/TCP,8040/TCP,9050/TCP,8060/TCP 9m
doriscluster-sample-fe-internal ClusterIP None <none> 9030/TCP 14m
doriscluster-sample-fe-service ClusterIP 10.1.118.16 <none> 8030/TCP,9020/TCP,9030/TCP,9010/TCP 14m
上記の結果では、FEとBE用に2種類のサービスがあり、それぞれ「internal」と「service」のサフィックスが付いています:
- 「internal」サフィックスが付いたサービスは、ハートビート、データ交換、その他の操作などのDoris内部の通信にのみ使用でき、外部使用向けではありません。
- 「service」サフィックスが付いたサービスは、ユーザーが使用できます。
Step 2: Dorisへのアクセス
以下のコマンドを使用して、現在のKubernetesクラスター内にmysqlクライアントを含むpodを作成できます:
kubectl run mysql-client --image=mysql:5.7 -it --rm --restart=Never --namespace=doris -- /bin/bash
クラスター内のコンテナから、外部に公開されている「service」サフィックス付きのサービス名を使用してDorisクラスターにアクセスできます:
mysql -uroot -P9030 -hdoriscluster-sample-fe-service
NodePort
DorisClusterのアクセス設定セクションに従って、NodePortを使用するようにアクセスモードを設定した後、MySQL protocolを使用してrootパスワードなしモードでFEにアクセスできます。手順は以下の通りです:
Step 1: serviceを取得する
clusterをデプロイした後、以下のコマンドを使用してDoris Operatorによって公開されているserviceを確認できます:
kubectl get service
返される結果は以下の通りです:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 169d
doriscluster-sample-fe-internal ClusterIP None <none> 9030/TCP 2d
doriscluster-sample-fe-service NodePort 10.152.183.58 <none> 8030:31041/TCP,9020:30783/TCP,9030:31545/TCP,9010:31610/TCP 2d
doriscluster-sample-be-internal ClusterIP None <none> 9050/TCP 2d
doriscluster-sample-be-service NodePort 10.152.183.244 <none> 9060:30940/TCP,8040:32713/TCP,9050:30621/TCP,8060:30926/TCP 2d
ステップ 2: Doris へのアクセス
NodePort 経由で Doris にアクセスするには、ノード IP とマップされたポートを知る必要があります。ノード IP は以下を使用して取得できます:
kubectl get nodes -owide
出力例::
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
r60 Ready control-plane 14d v1.28.2 192.168.88.60 <none> CentOS Stream 8 4.18.0-294.el8.x86_64 containerd://1.6.22
r61 Ready <none> 14d v1.28.2 192.168.88.61 <none> CentOS Stream 8 4.18.0-294.el8.x86_64 containerd://1.6.22
r62 Ready <none> 14d v1.28.2 192.168.88.62 <none> CentOS Stream 8 4.18.0-294.el8.x86_64 containerd://1.6.22
r63 Ready <none> 14d v1.28.2 192.168.88.63 <none> CentOS Stream 8 4.18.0-294.el8.x86_64 containerd://1.6.22
その後、任意のノードのIPアドレス(例:192.168.88.61、192.168.88.62、または192.168.88.63)とマッピングされたポートを使用してDorisにアクセスできます。例えば、ノード192.168.88.62とポート31545を使用する場合:
mysql -h 192.168.88.62 -P 31545 -uroot
LoadBalancer
DorisClusterアクセス設定セクションに従って、パブリッククラウドプラットフォームでLoadBalancerを使用するアクセスモードを設定した後、rootパスワードなしモードでMySQLプロトコルを使用してFEにアクセスできます。手順は以下の通りです:
ステップ1:サービスの取得
クラスターをデプロイした後、以下のコマンドを使用してDoris Operatorによって公開されているサービスを確認できます:
kubectl get service
返される結果は以下の通りです:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 169d
doriscluster-sample-fe-internal ClusterIP None <none> 9030/TCP 2d
doriscluster-sample-fe-service LoadBalancer 10.152.183.58 ac4828493dgrftb884g67wg4tb68gyut-1137856348.us-east-1.elb.amazonaws.com 8030:31041/TCP,9020:30783/TCP,9030:31545/TCP,9010:31610/TCP 2d
doriscluster-sample-be-internal ClusterIP None <none> 9050/TCP 2d
doriscluster-sample-be-service LoadBalancer 10.152.183.244 ac4828493dgrftb884g67wg4tb68gyut-1137823345.us-east-1.elb.amazonaws.com 9060:30940/TCP,8040:32713/TCP,9050:30621/TCP,8060:30926/TCP 2d
ステップ2: Dorisへのアクセス
LoadBalancerを通じてDorisにアクセスするには、外部IP(EXTERNAL-IPフィールドで提供される)と対応するポートを使用します。例えば、mysqlコマンドを使用する場合:
mysql -h ac4828493dgrftb884g67wg4tb68gyut-1137856348.us-east-1.elb.amazonaws.com -P 31545 -uroot
Kubernetes上にデプロイされたDorisへのStreamLoadアクセス
DorisはStreamLoad方式を使用したデータインポートをサポートしています。クライアントとDorisクラスタが同じローカルネットワーク内にある場合、クライアントはFrontend(FE)アドレスを直接リクエストエンドポイントとして使用できます。FEサービスはHTTP 301ステータスコードで応答し、Backend(BE)アドレスを提供して、クライアントにリクエストをBEにリダイレクトしてデータインポートを行うよう指示します。
ただし、DorisがKubernetes上にデプロイされている場合、内部通信はKubernetesクラスタ内でのみアクセス可能なアドレスを使用します。301リダイレクトメカニズムによってFEが内部でのみ到達可能なBEアドレスを返す場合、Kubernetesクラスタ外部のクライアントからのデータインポート試行は失敗します。
Kubernetes環境外部に位置するクライアントからStreamLoadを使用してデータをインポートするには、外部からアクセス可能なBEアドレスでインポートアドレスを設定する必要があります。
BEサービスへの外部アクセス設定
KubernetesクラスタからBEサービスへのアクセスを有効にするには、サービスをNodePortまたはLoadBalancerとして設定します。これらの変更を適用するためにDorisClusterリソースを適宜更新してください。
BEプロキシアドレスの設定
NodePortまたはLoadBalancerの説明に従って、外部からアクセス可能なアドレスと対応するweb_serverポートを取得してください。StreamLoad経由でデータをインポートする際は、このアドレスとポートをリクエストエンドポイントとして使用してください。