😊
K8sにおけるIP/CIDR
KubernetesにおけるIPアドレスとCIDRの概要
Kubernetes環境でのIPアドレスとCIDRの取り扱いについて、基礎的な概念と設計時のポイントを以下にまとめます。
IPアドレス
概要
- Kubernetesクラスター内では、各リソース(Pod、Service、Nodeなど)にIPアドレスが割り当てられます。
- IPアドレスは以下のように動的または静的に割り当てられます:
- Pod: 動的に割り当てられる(クラスター内で一意のアドレス)。
-
Service:
ClusterIP
(内部用)やLoadBalancer
(外部用)で固定的なアドレスが割り当てられる。 - Node: クラスター外からアクセスするための外部IPまたは内部IP。
種類
- ClusterIP: クラスター内部での通信に使用される仮想IP。
- ExternalIP: クラスター外部からの通信を受け付けるために利用。
- Pod IP: 各Podに動的に割り当てられるユニークなアドレス。
CIDR
概要
- CIDR(Classless Inter-Domain Routing)は、IPアドレスの範囲を表すための標準的な方式。
- フォーマット:
IPアドレス/プレフィックス長
(例:192.168.0.0/24
)。- IPアドレス部分: 範囲の開始アドレス。
- プレフィックス長: ネットワーク部分のビット数(残りがホスト部分)。
KubernetesにおけるCIDR設計
仮想ネットワークのCIDR
- Kubernetesのネットワーク(VNetやPodネットワーク)を定義する際、CIDRを使用してIPアドレス範囲を指定します。
- 例:
10.0.0.0/16
(65,536個のIPアドレスを利用可能)。- ネットワーク部分:
10.0
- ホスト部分:
0.0
-255.255
- ネットワーク部分:
Pod CIDR
- 各NodeがPodに割り当てるためのCIDR範囲。
- 例:
/24
(256アドレス)など。
- 例:
- Podごとに一意のIPが動的に割り当てられ、ネットワーク通信に使用されます。
Service CIDR
- Service(ClusterIP)のIPアドレス範囲を指定。
- 例:
10.96.0.0/12
(デフォルト設定の場合)。
CIDRのサイズとIPアドレス数の計算
- CIDRのプレフィックス長が短いほど範囲が広がり、利用可能なIPアドレス数が増加。
- IPアドレス数 = ( 2^{(32 - プレフィックス長)} )。
-
/16
→ ( 2^{16} = 65,536 ) アドレス -
/24
→ ( 2^{8} = 256 ) アドレス -
/28
→ ( 2^{4} = 16 ) アドレス(予約IPを除くと14アドレス)
-
設計時のポイント
-
Pod CIDRとService CIDRを分離
- Pod CIDRとService CIDRが重複しないように設定。
- 例:
- Pod CIDR:
10.0.0.0/16
- Service CIDR:
10.96.0.0/12
- Pod CIDR:
-
IPアドレス枯渇の防止
- サブネット設計時に十分なIP範囲を確保。
- 特にNode数やPod数が増加する場合を考慮。
-
外部ネットワークとの統合を考慮
- VNetやオンプレミスのネットワークとの統合時、CIDR範囲が重複しないように設計。
-
予約IPの考慮
- 各サブネットでは、以下のIPが予約され利用不可:
-
ネットワークアドレス: 範囲の最初のアドレス(例:
192.168.0.0
)。 -
ブロードキャストアドレス: 範囲の最後のアドレス(例:
192.168.0.255
)。 - クラウドプロバイダ予約IP: 追加で3〜5個のアドレスが予約される(例: Azure)。
-
ネットワークアドレス: 範囲の最初のアドレス(例:
- 各サブネットでは、以下のIPが予約され利用不可:
まとめ表: CIDRとIPアドレス数
CIDR | ネットワーク部分 | ホスト部分 | 利用可能IPアドレス数 |
---|---|---|---|
/16 |
16ビット | 16ビット | 65,534 |
/24 |
24ビット | 8ビット | 254 |
/28 |
28ビット | 4ビット | 14 |
/30 |
30ビット | 2ビット | 2 |
KubernetesにおけるIPアドレスやCIDRは、ネットワーク設計の基盤を形成します。正確な計算とCIDRの割り当てにより、効率的でスケーラブルなネットワークを構築することが可能です。
Discussion