ポイント: 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
リクエストを転送するポッドを実行している 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
これで、ノード IP アドレスとノードポートに curl し、Kubernetes サービスの背後で実行されている nginx コンテナに到達するはずです。
結論
Kubernetes をマスターすること、特にポッドとポートの使用は、スケールでコンテナ化されたアプリケーションを効率的に管理するために不可欠です。Kubernetes が進化し続け、業界全体での採用が進む中で、プラットフォーム内のネットワーキングを構成および最適化する方法を理解することで、アプリケーションをより正確かつ信頼性高くデプロイ、管理、およびスケールできるようになります。
Kubernetes ガイド
- Kubernetes とは (K8s)?Kubernetes 基礎チュートリアル
- クラスタ効率を向上させるための Kubernetes ベストプラクティス
- ベストプラクティス:Kubernetes 用にアプリケーションを設計する方法
- Kubernetes Pods:イントロダクション
- Kubernetes ReplicaSets:簡単な紹介
- Kubernetes Deployments の完全な説明
- Kubernetes DaemonSets の使用と管理
- Kubernetes サービスの仕組み
- Kubernetes Port、TargetPort、および NodePort の使用
- Kubernetes における ConfigMaps の作成と使用
- Kubernetes Secrets の紹介
- Kubernetes ネットワーキングの基本
- Kubernetes Ingress の説明
- Kubernetes Helm Charts の紹介
- Kubernetes Operator パターンとは?
- PostgreSQL を Kubernetes の StatefulSet としてデプロイする
- Kubernetes カスタムリソース定義 (CRDs) の説明
- クラウドネイティブアプリケーションのための 3 つの Kubernetes パターン
- Kubernetes のコンピュートリソースの説明
- DevOps パイプラインのための Kubernetes セキュリティ
- 継続的デリバリーのために Kubernetes と Spinnaker を使用する
- Kubernetes マルチクラスター:使用方法と理由
- Kubernetes モニタリング:包括的ガイド
- Kubernetes 対 Docker:簡単な比較
- Kubernetes 対 Docker Swarm:コンテナオーケストレーションツールの比較
- Kubernetes 対 OpenShift:違いは何ですか?
- Kubernetes 認定:取得方法と理由
これらの投稿は私自身の意見であり、BMC の立場、戦略、または意見を必ずしも表すものではありません。