k8esクラスタ内でkubernetics(k8es)コンテナとしてすべてのスパークジョブを起動しています。また、各ジョブでサービスを作成し、スパークUIのポート転送を行います(コンテナの4040はSvcPortにマップされます、31123)。 ノードの同じセットもYarnクラスタをホストしています。 コンテナのエントリコマンドは、クライアントモードでYarnにスパーク送信するための呼び出しです。スタンバイ名ノードでkuberneticsコンテナとして実行されているsparkのUIにアクセスする
ここで、スパークコンテナは、名前ノード(マスターまたはスタンバイ)のいずれかで起動することがあります。アクティブな名前ノードに割り当てられたVIPがあります。
アクティブな名前ノードでスパークコンテナを起動すると、スパークUIとそのすべてのタブはVIPを使用してどこからでも簡単にアクセスできます:SvcPort しかし、スパークコンテナがスタンバイ名ノードで起動されると、リクエストが500エラーで失敗する(VIPとして:SvcPortはActiveNamenode:8080にリダイレクトされ、ドライバは現在スタンバイネームノード上で実行されているためアクセスできません)
私は複数のサービス構成を試してみましたが、この設定は、コンテナがマスターノードにあるときにアクセス可能なUIを使用しようとしましたが、コンテナがスタンバイノードにあるときはUIにアクセスできません。
apiVersion: v1
kind: Service
metadata:
name: spark-svc
labels:
deployer: sample_app
app: spark-app
spec:
selector:
app: spark-app
ports:
- port: 31123
protocol: TCP
targetPort: 4040
name: ui
externalIPs:
- 192.168.122.22
このシナリオでは、誰でもplsが適切なk8esサービス設定を提案するかもしれません。 k8esクラスター内のジョブの負荷にk8esが対処するので、スパークコンテナーをマスター名ノードに制限したくない。
ご迷惑をおかけして申し訳ありません。