--- lang: ja-jp tags: Kubernetes title: Load Balancing and Reverse Proxying for Kubernetes Services --- # 【翻訳】 Load Balancing and Reverse Proxying for Kubernetes Services > Different load balancing and reverse proxying strategies to use in Production K8s Deployments to expose services to outside traffic ![Morning sunlight on Horton Plains National Park](https://miro.medium.com/max/9216/1*284iEw3uXSbCqV_7YcDuIQ.jpeg) この記事では、K8sの基本的な概念については心得のある初心者が次に扱うことになるであろうトピックについて紹介していきたいと思う:**K8sクラスタ内部にデプロイされたサービスを、外部トラフィックにどのように公開すれば良いのか**という問題である。内容やダイアグラムのいくつかは、私がWSO2で紹介した内容を使い回している。 ## 用語を定義する 実際の議論に移っていく前に、まずはいくつかの紛らわしい用語について定義をおこなっていこう。サンプルとなるDeploymentを定義し、後の議論で取り扱うことにする。 > Pods, Serviceの概念とService Typesの利用方法についての基本的な理解があることを前提にして解説を進めていく。 - **K8s Cluster** : PodやService、そしてそのほかのK8sの構成物が作成され、管理される「境界線」であり、K8sマスターノードと実際にPodがスケジューリングされるノードが含まれる。 - **Node** : すべてのPodやVolume、計算構成物が生成されるK8s上のノードのこと。K8sにより直接的に管理されるのではなく、IaaSプロバイダによりアサインされるプライベートネットワーク上で存在する。より物理的な意味合いで利用される用語。 - **Node private network** : クラウドのサービスプロバイダの内部のプライベートネットワークに存在するK8sのノードのこと。サンプルDeploymentでは、プライベートネットワークのCIDRを`10.128.0.0/24`としよう。トラフィックがこのプライベートネットワークを介して正しく出入りできるようにルーティングが設定されるだろう(クラスではCクラスに相当するホスト数を想定している)。 - **Container Networking** : K8sの構成物が生成されるネットワークの「境界線」のこと。 ## Appdendix ### CIDR > クラスを使わないIPアドレスの割り当てと、経路情報の集成を行う技術です。クラスとは、IPアドレスのネットワーク部とホスト部で決められたブロック単位で区切る方法で、簡単ですがアドレス空間の利用に無駄が生じてしまいます。これに対しクラスを使わないCIDRでは、任意のブロック単位で区切ることができるため、IPアドレス空間を効率的に利用することができます。 ``` [クラスフル] 接続可能なホスト数 ┌────┬──────────────┐ クラスA │network │ host │ 約16,700,000 └────┴──────────────┘ ← 8 →← 24 → ┌─────────┬─────────┐ クラスB │ network │ host │ 約65,000 └─────────┴─────────┘ ← 16 →← 16 → ┌──────────────┬────┐ クラスC │ network │ host │ 約250 └──────────────┴────┘ ← 24 →← 8 → [クラスレス] ┌─────────────┬─────┐ (例1) │ network │ host │ どの位置でも自由に └─────────────┴─────┘ 区切ることができる ← 23 →← 9 → ┌────────────────┬──┐ (例2) │ network │host│ └────────────────┴──┘ ← 27 →← 5→ ```