Kubernetes の ClusterIP、NodePort、LoadBalancer サービス タイプの違いは何ですか? 質問する

Kubernetes の ClusterIP、NodePort、LoadBalancer サービス タイプの違いは何ですか? 質問する

質問 1 - ドキュメントを読んでいるのですが、文言が少しわかりにくいです。次のように書かれています。

ClusterIP : サービスをクラスター内部のIPで公開します。この値を選択すると、サービスはクラスター内からのみアクセス可能になります。これがデフォルトのServiceTypeです。

NodePort : 各ノードの IP 上のサービスを静的ポート (NodePort) で公開します。NodePort サービスがルーティングする ClusterIP サービスが自動的に作成されます。 を要求することで、クラスターの外部から NodePort サービスに接続できるようになります<NodeIP>:<NodePort>

LoadBalancer : クラウド プロバイダーのロード バランサーを使用してサービスを外部に公開します。外部ロード バランサーがルーティングする NodePort および ClusterIP サービスが自動的に作成されます。

NodePort サービス タイプはClusterIP、外部クライアントに開かれている別のポートでのみ を引き続き使用しますか? この場合は<NodeIP>:<NodePort>と同じですか<ClusterIP>:<NodePort>?

それとも、NodeIP実際に実行時に見つかった IPでkubectl get nodesあり、ClusterIP サービス タイプに使用される仮想 IP ではないのでしょうか?

質問 2 - 以下のリンクの図にもあります:

ここに画像の説明を入力してください

Clientが内にあるのには何か特別な理由があるのでしょうか? ClusterIP サービス タイプの場合はNode内にある必要があると考えていましたが?Cluster

NodeNodePort に対して同じ図を描いた場合、クライアントをと の両方の外側に完全に描画することは有効でしょうか、Clusterそれとも要点を完全に見逃しているのでしょうか?

ベストアンサー1

ClusterIP は以下を公開します。

  • spec.clusterIp:spec.ports[*].port

このサービスにアクセスできるのは、クラスター内からのみです。spec.clusterIpポートからアクセスできます。がspec.ports[*].targetPort設定されている場合は、ポートから targetPort にルーティングされます。呼び出し時に取得する CLUSTER-IP は、kubectl get servicesクラスター内でこのサービスに内部的に割り当てられた IP です。

NodePort は以下を公開します。

  • <NodeIP>:spec.ports[*].nodePort
  • spec.clusterIp:spec.ports[*].port

ノードの外部 IP から nodePort でこのサービスにアクセスすると、リクエストは にルーティングされ、spec.clusterIp:spec.ports[*].portが設定されている場合は にルーティングされますspec.ports[*].targetPort。このサービスには、ClusterIP と同じ方法でアクセスすることもできます。

NodeIP はノードの外部 IP アドレスです。 からサービスにアクセスすることはできませんspec.clusterIp:spec.ports[*].nodePort

LoadBalancer は以下を公開します。

  • spec.loadBalancerIp:spec.ports[*].port
  • <NodeIP>:spec.ports[*].nodePort
  • spec.clusterIp:spec.ports[*].port

このサービスには、ロード バランサの IP アドレスからアクセスできます。ロード バランサの IP アドレスは、リクエストを nodePort にルーティングし、次にそのリクエストを clusterIP ポートにルーティングします。このサービスには、NodePort サービスや ClusterIP サービスと同様にアクセスできます。

おすすめ記事