Kubernetes Port、TargetPort、および NodePort の使用

Kubernetes Port、TargetPort、および NodePort の使用

  • ITOps・DevOps
6分で読めます 更新日 Jul 2, 2025

ポイント: Kubernetes は、Port、TargetPort、および NodePort 構成を使用してコンテナ化されたアプリケーションを管理します。Port はクラスター内でサービスを公開し、TargetPort は特定のポッドポートにリクエストを向け、NodePort はノードの IP アドレスを介して外部アクセスを提供します。

  • Kubernetes はコンテナ管理、スケーリング、およびモニタリングを自動化します。
  • ポート構成を理解することは、効果的なアプリケーションデプロイメントと管理にとって重要です。

Kubernetes とポート

Kubernetes は、コンテナ化されたアプリケーションをオーケストレーションするオープンソースツールです。Kubernetes ツールは、異なるサーバーまたはノードにわたってポッドを監視することによって、コンテナが正しく実行されていることを確認します。 それは、コンテナの失敗に対する応答を自動的に管理し、必要に応じてポッドを再起動または置き換えます。需要に応じてそれらをスケールアップまたはスケールダウンし、ワークをバランスさせるためにコンテナ間でコンピューティング負荷を分散します。大規模で複雑なアプリケーションの管理、スケーリング、および維持の手動作業を排除します。 Kubernetes は、ポッドと他のリソース間の通信を促進するために、ポートやサービスを含むネットワーキングを使用します。

Kubernetes サービスポートの構成:ポート vs ターゲットポート vs ノードポート

Kubernetes には、Kubernetes サービス のためのいくつかの異なるポート構成があります:

  • ポート は、クラスター内の指定されたポートで Kubernetes サービスを公開します。クラスター内の他のポッドは、このサーバーと指定されたポートで通信できます。
  • ターゲットポート は、サービスがリクエストを送信するポートであり、お使いのポッドがリッスンするポートです。コンテナ内のアプリケーションもこのポートでリッスンしている必要があります。
  • ノードポート は、ターゲットノードの IP アドレスとノードポートを介して、クラスター外部にサービスを公開します。ポートフィールドが指定されていない場合、ノードポートがデフォルト設定です。

これらのポートを Kubernetes マニフェストでどのように使用するかを見てみましょう。

Kubernetes での Port、TargetPort、および NodePort の使用

    apiVersion: v1
kind: Service
metadata:
name: hello-world
spec:
type: NodePort
selector:
app: hello-world
ports:
- protocol: TCP
port: 8080
targetPort: 80
nodePort: 30036

上記の例から、hello-world サービスは、ポート 8080 でクラスターアプリケーションに内部的に公開され、ノードの IP アドレスでポート 30036 でクラスターに外部的に公開されます。また、ポッドにラベル「app: hello-world」のリクエストをポート 80 で転送します。上記の設定の構成は、次のコマンドで確認できます:

    $ kubectl describe service hello-world
Kubernetes NodePort サービスの説明

リクエストを転送するポッドを実行している nginx を作成します:

    apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: hello-world
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80

上記の構成をテストし、デモするために、接続性を確認するためにいくつかの curl コマンドを実行するために、ubuntu コンテナを実行しているポッドを作成できます。

    $ kubectl run -i --tty ubuntu --image=ubuntu --restart=Never -- sh 

このポッドから次のコマンドを実行します:Kubernetes マニフェストで定義されたサービスの「ポート」に対してCurlします。

    $ curl hello-world:8080

これは、Kubernetes サービスのポート 80 での curl が、ポート 80 でリッスンしている nginx ポッドにリクエストを転送することを証明します。お使いのマシンでNodePortをテストするには(ubuntu ポッド内ではなく)、ポッドが実行されているノードの IP アドレスを見つける必要があります。

    $ kubectl describe pod nginx
Kubernetes NodePort IP アドレス

これで、ノード IP アドレスとノードポートに curl し、Kubernetes サービスの背後で実行されている nginx コンテナに到達するはずです。

結論

Kubernetes をマスターすること、特にポッドとポートの使用は、スケールでコンテナ化されたアプリケーションを効率的に管理するために不可欠です。Kubernetes が進化し続け、業界全体での採用が進む中で、プラットフォーム内のネットワーキングを構成および最適化する方法を理解することで、アプリケーションをより正確かつ信頼性高くデプロイ、管理、およびスケールできるようになります。

これらの投稿は私自身の意見であり、BMC の立場、戦略、または意見を必ずしも表すものではありません。

ITOps・DevOpsの関連記事

The Briefを購読する

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ありがとう

あなたはThe Briefに登録されました
The Briefはメインフレームとエンタープライズオーケストレーション—BMC AMIとControl-M—および、両者に関するアナリストの研究、顧客の展開、イベントをカバーしています。