すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ノードプールに基づくNodePortリスニングの設定

最終更新日:Dec 19, 2024

エッジコンピューティングのシナリオでは、サービスの分離が必要です。 たとえば、NodePortサービスを使用する場合、指定されたノードプール内のノードでのみ、NodePortサービスによって公開されるポートをリッスンできます。 これにより、ポートの競合を回避できます。 このトピックでは、ノードプールに基づいてNodePortリスニングを設定する方法について説明します。

建築デザイン

エッジハブコンポーネントは、組み込みのプログラム可能なデータフィルタリングフレームワークを使用して、エッジからリクエストを受信した後にクラウドでkube-apiserverによって返されたレスポンスを変換します。 これらの応答は、クラウドエッジのコラボレーションシナリオの要件を満たすために、透過的かつオンデマンドで変換されます。 次の図は、エッジハブコンポーネントのアーキテクチャ設計を示しています。架构图.png

nodeportisolationという名前のフィルタがエッジハブコンポーネントに導入されます。 このフィルタは、nodeportサービスのNodePort. openyurt.io/listenアノテーションと共に使用して、指定されたノードプール内のノードでNodePortサービスによって公開されるポートをリッスンできます。

使用上の注意

  • edge-hubコンポーネントのバージョンが0.11.0以降であることを確認してください。

  • サービスを作成するときは、nodeport.openyurt.io/listenアノテーションを追加するかどうかを決定する必要があります。 サービスの作成後にこのアノテーションを追加する場合、この機能を有効にするには、すべてのKubernetesネットワークプロキシ (kube-proxy) を再起動する必要があります。

  • ノードプールを追加した後、ノードをノードプールに追加する前に、NodePortサービスのアノテーションで新しく作成されたノードプールを指定する必要があります。 これにより、ノードプールに追加されたすべてのノードに対してNodePortリスニングが有効になります。

  • ノードプール名はカスタマイズ可能です。 そのため、ノードプールのIDで指定することを推奨します。 ノードプールIDは、Container Service for Kubernetes (ACK) コンソールで確認できます。 ノードプールIDはnpxxxx形式です。

手順

nodeport.openyurt.io/listenアノテーションをNodePortおよびLoadBalancerサービスに追加できます。

  • 注釈のキー: nodeport.openyurt.io/listen

  • 注釈の値: コンマ (,) で区切られたノードプール名。

    • foo: fooという名前のノードプール内のノードでNodePortサービスによって公開されたポートをリッスンします。

    • -foo: fooという名前のノードプール内のノードでNodePortサービスによって公開されたポートをリッスンしません。

    • *: すべてのノードプールのノードでNodePortサービスによって公開されたポートをリッスンします。

重要
  • ノードプール名が複数のアノテーションで指定されている場合、最初のアノテーションのノードプール名のみが有効になります。

  • NodePortリスニングは、指定していないノードプール内のノードに対して無効になります。

  • デフォルトでは、システムは、オープンソースのKubernetesと同じ方法で、孤立したノード (ノードプールに属さないノード) でNodePortサービスによって公開されたポートをリッスンします。

注釈の例

注釈

説明

nodeport.openyurt.io/listen=foo,bar

fooおよびbarという名前のノードプール内のノードで、NodePortサービスによって公開されているポートをリッスンします。

nodeport.openyurt.io/listen=foo,*

すべてのノードプール内のノードでNodePortサービスによって公開されたポートでリッスンします。

nodeport.openyurt.io/listen=-foo、-bar

すべてのノードプールのノードでNodePortサービスによって公開されたポートをリッスンしません。

nodeport.openyurt.io/listen=-foo,*

fooという名前のノードプール内のノードでNodePortサービスによって公開されたポートをリッスンしません。

nodeport.openyurt.io/listen=foo,-foo

fooという名前のノードプール内のノードで、NodePortサービスによって公開されたポートをリッスンします。

nodeport.openyurt.io/listen=-foo

fooという名前のノードプールを含む、すべてのノードプールのノードでNodePortサービスによって公開されたポートをリッスンしません。