PodIP、CLUSTERIPとExternalIPのK8S

ポッドIP

これは、展開Kubernetesポッドのための最小単位です。フランネルは、異なる技術のホストとの間のインターワーキングのような容器を使用する場合、etcdフランネルとは、ノード間のルーティングテーブルを維持します。フランネルに設計されている異なるノード上のコンテナは、「ネットワークに属して」取得することができますし、IPアドレスを「重複しない」と、異なるノードに属してみましょうそうすることを、IPアドレスの規則を使用することを計画再クラスタ内のすべてのノードにありますコンテナは、IPネットワーク通信を介して直接することができます。

各ポッドの開始、それはgcr.io/google_containers/pause:0.8.0容器の鏡像を作成し、このエージェントを介して外部容器と連通する内側容器は、容器のIPはまた、ポッドIPを参照することができます。

サービスCLUSTERIP

サービスは、コアコンセプトKubernetesであり、サービスを作成することにより、同一の機能を有するコンテナのグループ、およびコンテナアプリケーションの後端部のそれぞれに負荷分散要求の単一のエントリのアドレスを提供することができます。

ポッドIPアドレスは、上(仮想デバイスとすることができる)ネットワークカードに実際に存在しているが、ないネットワークデバイスは、サービスクラスタIPの責任ではありません。

そのローカルポートをリダイレクトするKUBEプロキシiptablesルールによって使用され、その後、ポッドの後端にバランスされています。このアドレスはアドレスプールは、我々はそのような= 10.0.0.0 / 16 -service-クラスタ-IP-範囲として、API(旧バージョンportal_netパラメータ)を起動し、サービスのクラスタ-IP-範囲パラメータで指定されています。サービスポートが1234であると仮定すると。すべてのKUBE-プロキシは、このサービスを認識し、クラスタ内であろう。プロキシが新しいサービスを発見した場合、それは、ローカル・ノード上のランダムなポートを開き、適切なiptablesのルールを構築します、この新しいポートのIPとポートのリダイレクトサービスは、サービス接続の到着を受け入れるようになりました。

このサービスへのクライアントアクセスは、これらのルールのiptableが遊びに来たとき、クライアントのトラフィックがランダムに顧客にサービスを提供するために、バックエンドのポッドを選択し、このサービス、KUBE-プロキシのKUBE-プロキシ開いているポートにリダイレクトされます。このプロセスを以下に示します。

すべてのプロキシノードに配置することができるサービスクラスタのIPとポートアクセスサービスクライアントを使用してKubernetesネットワークモデルによると、内部クラスタにのみアクセスすることができます。外部サービスにアクセスするために、我々は、サービスIPへの外部アクセスを必要とします。

外部IP

外部アクセスサービスの2つの方法があります。

1)nodePortを提供することにより、物理マシンにマッピングされ、そしてサービスNodePortの種類を設定します。

2)ロードバランサは、ロードバランサを提供することで、クラウドサービス上で提供されたアドレスにマッピングされました。この使用法は、パブリッククラウドサービスプロバイダーのクラウドプラットフォームは、シーン・サービスを設定するだけです。サービスが負荷分散の実装は、クラウドサービスプロバイダのロードバランサの実装メカニズムに依存して、ロードバランサポッドを通じてバックエンドにリクエストを転送します。

例:

nginxのに基づいて展開を作成します。

kubectl実行nginxの--image = nginxの:MAXLINE

(クラスタIPおよび外部IPを含む)サービス外のサービスを提供するExternalIP方法

展開nginxの--type =ロードバランサ--port = 80 --target-ポート= 80を露出させkubectl

ターゲットポート= 80、このポートは、サービスを提供するためにnginxのドッカー容器内ポッドである - ロードバランサとして選択されたタイプのタイプは、--portポート80は、外部のサービスポートにさらされるサービスは、80であることを意味し、指定されていますポートの作業、デフォルトは80です。

ポート外部アクセスサービス:外部通じkubectl GET SVC GET外部IPとポート、。

サービス外のサービスを提供するNodePortの方法

展開nginxの--type = NodePort --port = 80 --target-ポート= 80を露出させkubectl

kubectl GET SVC GET nodePortポートは、単にいずれかのノードアクセスサービスのIPアドレス+ nodePort外部外部ポートを使用します。

附属書:ポッドのポートフォワーディング機能

時には、テスト目的のために、私たちは、ポッドは通常のサービスを提供できるかどうかを確認するための簡単な方法が必要です。すべてのサービスがkubectlあまりにも多くのトラブルによって作成された場合。

ポッドポート転送(ポートフォワード):ここでは簡単な方法があります。

例えば、我々は、名前のnginxの-6f754dd4b9-74jdn、最初のポッドポッドが返される関数を取得、次のチャートをテストしたかったです:

 実行ラインkubectlポートフォワードポッド/ nginxの-6f754dd4b9-74jdn 8080:80

127.0.0.1:8080からのメッセージの転送を参照してください - > 80、80作業のポートnginxのポッドに現在のホストポート8080をマッピングした手段: 

最後に、ローカルホストを通じて:8080直接アクセスnginxのポッドにサービスを提供しています。

参考:

1.  PodIP、CLUSTERIPおよび外部IPでKubernetes

2.  簡単な例は、IPアドレス型Kubernetesの三種類が理解されます

おすすめ

転載: www.cnblogs.com/embedded-linux/p/12657128.html