JEG ポッドのノードグループへのデプロイ - Amazon EMR

JEG ポッドのノードグループへのデプロイ

JEG (Jupyter Enterprise Gateway) ポッド配置は、特定のノードグループにインタラクティブエンドポイントをデプロイできるようにする機能です。この機能により、インタラクティブエンドポイントの instance type などの設定を行うことができます。

マネージドノードグループに JEG ポッドを関連付ける

次の設定プロパティでは、JEG ポッドをデプロイする Amazon EKS クラスター上のマネージドノードグループの名前を指定できます。

//payload --configuration-overrides '{ "applicationConfiguration": [ { "classification": "endpoint-configuration", "properties": { "managed-nodegroup-name": NodeGroupName } } ] }'

ノードグループには、ノードグループに含まれるすべてのノードに Kubernetes ラベル for-use-with-emr-containers-managed-endpoint-ng=NodeGroupName がアタッチされている必要があります。このタグを持つノードグループのすべてのノードをリストするには、次のコマンドを使用します。

kubectl get nodes --show-labels | grep for-use-with-emr-containers-managed-endpoint-ng=NodeGroupName

上記のコマンドの出力でマネージドノードグループの一部であるノードが返されない場合は、for-use-with-emr-containers-managed-endpoint-ng=NodeGroupName Kubernetes ラベルがアタッチされたノードがノードグループにありません。この場合、以下の手順に従って、そのラベルをノードグループ内のノードにアタッチします。

  1. 次のコマンドを使用して、マネージドノードグループ NodeGroupName のすべてのノードに for-use-with-emr-containers-managed-endpoint-ng=NodeGroupName Kubernetes ラベルを追加します。

    kubectl label nodes --selector eks:nodegroup-name=NodeGroupName for-use-with-emr-containers-managed-endpoint-ng=NodeGroupName
  2. 次のコマンドを使用して、ノードが正しくラベル付けされていることを確認します。

    kubectl get nodes --show-labels | grep for-use-with-emr-containers-managed-endpoint-ng=NodeGroupName

マネージドノードグループは Amazon EKS クラスターのセキュリティグループに関連付ける必要があります。通常、eksctl を使用してクラスターとマネージドノードグループを作成した場合にこれが当てはまります。次の手順を使用して、AWS コンソールでこれを確認できます。

  1. Amazon EKS コンソールでクラスターに移動します。

  2. クラスターの [ネットワーキング] タブに移動し、クラスターセキュリティグループを書き留めます。

  3. クラスターの [コンピューティング] タブに移動し、マネージドノードグループ名をクリックします。

  4. マネージドノードグループの [詳細] タブで、前にメモしたクラスターセキュリティグループが [セキュリティグループ] に表示されていることを確認します。

マネージドノードグループが Amazon EKS クラスターセキュリティグループにアタッチされていない場合は、for-use-with-emr-containers-managed-endpoint-sg=ClusterName/NodeGroupName タグをノードグループのセキュリティグループにアタッチする必要があります。このタグをアタッチするには、次の手順を使用します。

  1. Amazon EC2 コンソールに移動し、左側のナビゲーションペインで [セキュリティグループ] をクリックします。

  2. チェックボックスをクリックして、マネージドノードグループのセキュリティグループを選択します。

  3. [タグ] タブの [タグの管理] ボタンを使用してタグ for-use-with-emr-containers-managed-endpoint-sg=ClusterName/NodeGroupName を追加します。

セルフマネージドノードグループに JEG ポッドを関連付ける

次の設定プロパティでは、JEG ポッドがデプロイされる Amazon EKS クラスター上のセルフマネージドノードグループまたはアンマネージドノードグループの名前を指定できます。

//payload --configuration-overrides '{ "applicationConfiguration": [ { "classification": "endpoint-configuration", "properties": { "self-managed-nodegroup-name": NodeGroupName } } ] }'

ノードグループには、ノードグループに含まれるすべてのノードに for-use-with-emr-containers-managed-endpoint-ng=NodeGroupName Kubernetes ラベルがアタッチされている必要があります。このタグを持つノードグループのすべてのノードをリストするには、次のコマンドを使用します。

kubectl get nodes --show-labels | grep for-use-with-emr-containers-managed-endpoint-ng=NodeGroupName

上記のコマンドの出力でセルフマネージドノードグループの一部であるノードが返されない場合は、for-use-with-emr-containers-managed-endpoint-ng=NodeGroupName Kubernetes ラベルがアタッチされたノードがノードグループにありません。この場合、以下の手順に従って、そのラベルをノードグループ内のノードにアタッチします。

  1. eksctl を使用してセルフマネージドノードグループを作成した場合は、以下のコマンドを使用して、セルフマネージドノードグループ NodeGroupName のすべてのノードに for-use-with-emr-containers-managed-endpoint-ng=NodeGroupName Kubernetes ラベルを一度に追加します。

    kubectl label nodes --selector alpha.eksctl.io/nodegroup-name=NodeGroupName for-use-with-emr-containers-managed-endpoint-ng=NodeGroupName

    セルフマネージドノードグループの作成に eksctl を使用しなかった場合は、上記のコマンドのセレクターを、ノードグループのすべてのノードにアタッチされている別の Kubernetes ラベルに置き換える必要があります。

  2. 次のコマンドを使用して、ノードが正しくラベル付けされていることを確認します。

    kubectl get nodes --show-labels | grep for-use-with-emr-containers-managed-endpoint-ng=NodeGroupName

セルフマネージドノードグループのセキュリティグループには for-use-with-emr-containers-managed-endpoint-sg=ClusterName/NodeGroupName タグがアタッチされている必要があります。次の手順に従って、AWS Management Consoleからセキュリティグループにタグをアタッチします。

  1. Amazon EC2 コンソールに移動します。左側のナビゲーションペインで [セキュリティグループ] を選択します。

  2. セルフマネージドノードグループのセキュリティグループの横にあるチェックボックスをオンにします。

  3. [タグ] タブの [タグの管理] ボタンを使用してタグ for-use-with-emr-containers-managed-endpoint-sg=ClusterName/NodeGroupName を追加します。ClusterNameNodeGroupName を適切な値に置き換えます。

オンデマンドインスタンスがあるマネージドノードグループに JEG ポッドを関連付ける

Kubernetes ラベルセレクターと呼ばれる追加のラベルを定義して、特定のノードまたはノードグループでインタラクティブエンドポイントを実行するための追加の制約や制限を指定することもできます。次の例は、JEG ポッドにオンデマンド Amazon EC2 インスタンスを使用する方法を示しています。

--configuration-overrides '{ "applicationConfiguration": [ { "classification": "endpoint-configuration", "properties": { "managed-nodegroup-name": NodeGroupName, "node-labels": "eks.amazonaws.com/capacityType:ON_DEMAND" } } ] }'
注記

node-labels プロパティは、managed-nodegroup-name または self-managed-nodegroup-name プロパティでのみ使用できます。