クラスターにアクセス
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を使用するように設定した後、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 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
Step 2: Dorisへのアクセス
NodePort経由でDorisにアクセスするには、Node IPとマップされたポートを知る必要があります。以下を使用してnode 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クラスター内でのみアクセス可能なアドレスを使用します。FEが301リダイレクトメカニズムを通じて内部でのみ到達可能なBEアドレスを返した場合、Kubernetesクラスター外のクライアントからのデータインポート試行は失敗します。
Kubernetes環境外に配置されたクライアントからStreamLoadを使用してデータをインポートするには、外部からアクセス可能なBEアドレスでインポートアドレスを設定する必要があります。
BEサービスへの外部アクセス設定
Kubernetesクラスター外からBEサービスへのアクセスを有効にするには、サービスをNodePortまたはLoadBalancerのいずれかとして設定します。これらの変更を適用するためにDorisClusterリソースを適切に更新してください。
BEプロキシアドレスの設定
NodePortまたはLoadBalancerの説明に従って外部からアクセス可能なアドレスと対応するweb_serverポートを取得してください。StreamLoad経由でデータをインポートする際は、このアドレスとポートをリクエストエンドポイントとして使用してください。