はじめに
Kubectlポートフォワード ローカルホストから内部Kubernetesクラスタプロセスにアクセスして操作できるようにします。この方法を使用すると、問題を調査し、事前に公開しなくてもローカルでサービスを調整できます。
Kubectlは、Kubernetesクラスターを管理するための主要なコマンドラインツールです。これは、アプリケーションのデプロイ、クラスターリソースの管理、および複雑なフレームワークの構築に不可欠です。
この簡潔なチュートリアルでは、kubectlを使用してKubernetesクラスタのポッドにポート転送する方法を示します。
前提条件
- Kubernetesクラスター
- 完全に構成されたkubectl コマンドラインツール
Kubernetesポートフォワーディングはどのように機能しますか?
Kubernetesは高度に自動化されたオーケストレーションシステムですが、ポート転送プロセスには直接かつ繰り返しのユーザー入力が必要です。ポッドインスタンスに障害が発生すると接続が終了します。同じコマンドを手動で入力して、新しい転送を確立する必要があります。
kubectl という事実により、プロセス全体が簡素化されます。 すでにポート転送機能が組み込まれています。
- ユーザーはkubectlを使用してKubernetesとやり取りします ローカルマシンのコマンドライン。
port-forward
コマンドは、クラスターリソース名を指定し、ポート転送先のポート番号を定義します。- その結果、Kubernetes APIサーバーは、ローカルホストとクラスタで実行されているリソースの間に単一のHTTP接続を確立します。
- ユーザーは、問題を診断したり、必要に応じてデバッグしたりするために、その特定のポッドを直接操作できるようになりました。
ポートフォワーディングは、作業量の多い方法です。ただし、場合によっては、これが内部クラスタリソースにアクセスする唯一の方法です。
基本的なkubectlport-forwardコマンド
port-forward
コマンドは、ターゲットポッドからローカルホストへのトンネルを確立します。このコマンドでは、リソースのタイプまたは名前、およびローカルポート番号とリモートポート番号を定義する必要があります。
kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT
複数のポッドがタイプ/名前の基準に一致する場合、デフォルトでランダムなポッドが選択されます。このような不整合を回避するには、ポッドをできるだけ正確に定義します。 名前空間内のポッドを手動で一覧表示すると、正確なポッド名を見つけることができます。 次のように入力します:
kubectl -n yournamespace get pods
リストには、その名前空間内のポッドの名前が表示されます。
kubectlポート転送-特定のポッドに転送
たとえば、次のコマンドを使用すると、クラスター内のMongoDBデプロイメントにアクセスできます。ポッドの名前はmongo-db-r3pl1ka3です。 、ポート番号は5762です:
kubectl port-forward pod/mongo-db-r3pl1ka3 8080:5762
Kubernetes APIはローカルポート8080でリッスンし、定義されたポッドのポート5762にデータを転送するようになりました。
ランダムローカルポート
ローカルでランダムなポートでリッスンし、指定されたポッド内のポート5762に転送します:
kubectl port-forward pod/mongo-db-r3pl1ka3 :5762
対応するローカルポートとリモートポート
ローカルと特定のポッド内の両方で同一のポート(8080、5762)を使用してデータをリッスンして転送します:
kubectl port-forward pod/mongo-db-r3pl1ka3 8080 5762
ランダムローカルIPアドレス
任意のローカルアドレスのポート8080でリッスンし、指定されたポッドのポート5762に転送します。
kubectl port-forward --address 0.0.0.0 pod/mongo-db-r3pl1ka3 8888:5762
ポート転送用のローカルIPアドレスを指定する
定義されたIPを使用してローカルホストのポート8080でリッスンし、ポッドのポート5762に転送します。
kubectl port-forward --address localhost,10.153.40.102 pod/mongo-db-r3pl1ka3 8080:5762
Deploymentを使用してポートフォワードポッドを選択
ローカルとポッド内の両方で同じポート(8080 5762)を使用してデータをリッスンして転送します。 導入 使用するポッドを定義します:
kubectl port-forward deployment/mydeployment 8080 5762
サービスによるポート転送ポッドの定義を許可する
ローカルとポッド内の両方で同じポート(8080 5762)を使用してデータをリッスンして転送します。 サービス 使用するポッドを選択します:
kubectl port-forward service/myservice 8080 5762