😊

K8sにおけるIP/CIDR

2024/12/15に公開

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アドレス)

設計時のポイント

  1. Pod CIDRとService CIDRを分離

    • Pod CIDRとService CIDRが重複しないように設定。
    • 例:
      • Pod CIDR: 10.0.0.0/16
      • Service CIDR: 10.96.0.0/12
  2. IPアドレス枯渇の防止

    • サブネット設計時に十分なIP範囲を確保。
    • 特にNode数やPod数が増加する場合を考慮。
  3. 外部ネットワークとの統合を考慮

    • VNetやオンプレミスのネットワークとの統合時、CIDR範囲が重複しないように設計。
  4. 予約IPの考慮

    • 各サブネットでは、以下のIPが予約され利用不可:
      • ネットワークアドレス: 範囲の最初のアドレス(例: 192.168.0.0)。
      • ブロードキャストアドレス: 範囲の最後のアドレス(例: 192.168.0.255)。
      • クラウドプロバイダ予約IP: 追加で3〜5個のアドレスが予約される(例: Azure)。

まとめ表: 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