質問 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
Node
NodePort に対して同じ図を描いた場合、クライアントをと の両方の外側に完全に描画することは有効でしょうか、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 サービスと同様にアクセスできます。