[解決済み] KubernetesのClusterIP、NodePort、LoadBalancerのサービスタイプの違いとは?
質問
質問1 - ドキュメントを読んでいて、表現に少し戸惑うことがあります。こう書いてあります。
クラスターIP : クラスタ内部のIPでサービスを公開します。この値を選択すると、サービスはクラスタ内からのみ到達可能になります。これはデフォルトのServiceType
ノードポート : 各NodeのIP上のサービスを静的なポート(NodePort)で公開します。NodePortサービスがルーティングされるClusterIPサービスが自動的に作成されます。クラスタの外から NodePort サービスに連絡するには、次のようにリクエストします。
<NodeIP>:<NodePort>
.ロードバランサー : クラウド事業者のロードバランサーを利用してサービスを外部に公開する。外部ロードバランサーのルーティング先となるNodePortとClusterIPサービスが自動的に作成される。
NodePort サービスタイプでは、やはり
ClusterIP
が、異なるポートで、外部クライアントに開放されているだけなのでしょうか?つまり、この場合
<NodeIP>:<NodePort>
と同じです。
<ClusterIP>:<NodePort>
?
それとも
NodeIP
を実行したときに見つかったIPを、実際に
kubectl get nodes
であり、ClusterIPサービスタイプに使用される仮想IPではないのですか?
質問2 - 下記リンクの図にもあります。
を使用する特別な理由があるのでしょうか?
Client
の中に入っています。
Node
? の中でないといけないと思い込んでいました。
Cluster
の場合、ClusterIPサービスタイプ?
同じダイアグラムをNodePort用に描いた場合、クライアントを完全に
Node
と
Cluster
それとも、私が完全にポイントを外しているのでしょうか?
どのように解決するのですか?
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アドレスからこのサービスにアクセスすることができます。ロードバランサーはリクエストをnodePortにルーティングし、nodePortはリクエストをclusterIPポートにルーティングします。NodePortやClusterIPサービスと同様に、このサービスにアクセスすることができます。
関連
-
[解決済み] Kubernetesです。kubectl configからクラスタとコンテキストを削除するにはどうすればいいですか?
-
[解決済み] WaitForFirstConsumer PersistentVolumeClaim バインドする前に最初のコンシューマが作成されるのを待つ。
-
[解決済み] Istio Ingressで "no healthy upstream "が発生する。
-
Kubernetesジョブコントローラーのソースコード解析
-
[解決済み] kubernetesのdeployment yamlを変更せずにPodをローリング再起動する方法は?
-
[解決済み] Docker ComposeとKubernetesの違いとは?
-
[解決済み] ApacheのMesosとGoogleのKubernetesの違いとは?
-
[解決済み】gcloudとminikubeの間でkubectlのクラスタを切り替える方法
-
[解決済み] KubernetesのデプロイメントとStatefulSetsの比較
-
[解決済み】kubectl apply vs kubectl create?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Kubernetes: kubectl run: コマンドが見つかりません。
-
[解決済み] kubectlのポートフォワードはどのように動作しますか?
-
[解決済み] kubernetesのdeployment yamlを変更せずにPodをローリング再起動する方法は?
-
[解決済み] KubernetesのClusterIP、NodePort、LoadBalancerのサービスタイプの違いとは?
-
[解決済み】"ImagePullBackOff "をデバッグするにはどうしたらいいですか?
-
[解決済み】gcloudとminikubeの間でkubectlのクラスタを切り替える方法
-
[解決済み] 別のネームスペースにあるサービス
-
[解決済み] Kubernetesでconfigmapが更新されたらPodを再起動する?
-
[解決済み] KubernetesのデプロイメントとStatefulSetsの比較
-
[解決済み] PodコンテナからKubernetes apiにアクセスするには?