ポッド ネットワークの IP アドレス管理の構成
概要 クラウドネイティブの Contrail® Networking™ は、ポッドとサービスの IP アドレス管理(IPAM)をサポートします。IPアドレスの割り当てを容易にするために、 Subnet
リソースを設定します。
クラウドネイティブなContrail NetworkingのIPAM
Cloud-Native Contrail Networking では、ポッドとサービスの IPAM を目的とした Subnet
リソースと SubnetPool
リソースが導入されています。各 Subnet
には SubnetPool
が関連付けられています。これらのリソースを使用すると、クラスターで IPv4 および IPv6 アドレス割り当てを設定できます。 VirtualNetwork
は Subnet
リソースを参照して、新しいポッドとサービスに使用できるサブネットを決定します。複数の VirtualNetworks
が同じ Subnet
を参照できます。 Subnet
リソースはIPAMに変換され、制御ノードとvRouterエージェントによって消費されます。
サブネットプールの概要
SubnetPool
は、Subnets
が割り当てられるアドレスのプールを管理します。IP アドレスの要求が発生すると、その IP アドレスは仮想ネットワークに関連付けられているSubnetPool
から割り当てられます。IPアドレス割り当てのCIDRパラメータ(プレフィックス長、容量、範囲)は、SubnetPool
作成時に決定されます。SubnetPool
を使い果たした場合は、追加のプレフィックスを割り当てることができます。
次の SubnetPool
例を考えてみます。
kparmar-mbp:cn2 kparmar$ kubectl get pool subnet-id-pool-Subnet-contrail-k8s-kubemanager-ocp-rdang-q8roaw-contrail-default-podnetwork-pod-v4-subnet -oyaml apiVersion: idallocator.contrail.juniper.net/v1alpha1 capacity: 262144 count: 157 kind: Pool max: 262143 metadata: creationTimestamp: null name: subnet-id-pool-Subnet-contrail-k8s-kubemanager-ocp-rdang-q8roaw-contrail-default-podnetwork-pod-v4-subnet reserved: - 0 - 262143 - 1
capacity
パラメータは、プール内で使用可能な ID の合計数を示します。count
パラメータは、プール内で使用されている ID の数を示します。max
パラメーターは、プールから割り振ることができる ID の最大数を示します。特定の ID は、Subnet
プール内の IP アドレスにマッピングされます。
サブネットの概要
Subnet
は、IP アドレスと、それらのアドレスに関連付けられた設定のブロックです。Subnet
は、一度に1つのアドレスファミリー(IPv4、IPv6)に基づいています。IPv4 と IPv6 のSubnets
を別々に作成する必要があります。SubnetPool
を指定しない場合、Subnet
は Contrail Classic IPAM として機能します。これは、Subnet
が 1 つの名前空間に分離されていることを意味します。
次の Subnet
仕様の例を考えてみましょう。
apiVersion: core.contrail.juniper.net/v1alpha1 kind: Subnet metadata: name: default-servicenetwork-pod-v4-subnet namespace: contrail-k8s-kubemanager-ocp-kparmar-4yu0qk-contrail spec: cidr: 10.128.0.0/16 defaultGateway: 10.128.0.1 ranges: - ipRanges: - from: 10.128.0.0 to: 10.128.0.255 key: contrail-k8s-kubemanager-ocp-kparmar-4yu0qk-ocp-kparmar-4yu0qk-ctrl-1
cidr
パラメーターと defaultGateway
パラメーターは、Subnet
リソースを定義する主要なパラメーターです。cidr
パラメータは、そのSubnet
で割り当て可能なIPの範囲を決定します。defaultGateway
パラメータは、Subnet
のdefaultGateway
のIPアドレスを定義します。defaultGateway
アドレスの指定はオプションです。defaultGateway
アドレスを指定しない場合は、Subnet
の最初の IP アドレスとして自動的に設定されます。
Kubernetes ノード構成には、podCIDR
構成パラメーターを含めることができます。podCIDR
はdefault-podnetwork-subnet
のサブセットです。podCIDR
が存在する場合、そのノードで作成されたポッドの IP アドレスには、podCIDR
から割り当てられた IP アドレスが含まれます。podCIDR
が存在しない場合は、Subnet
の CIDR 内のすべての IP アドレスをノードに割り当てることができます。podCIDR
は、ワイルドカードキーを参照することもできます。この例では、IP アドレス割り当てリクエストは、キーcontrail-k8s-kubemanager-ocp-kparmar-4yu0qk-ocp-kparmar-4yu0qk-ctrl-1
を持つノードに要求元の Pod が作成されている限り、IP 10.128.0.0
から 10.128.0.255
を選択します。
または、 ranges
パラメータを定義することもできます。 ranges
パラメーターは、割り当てに使用できる IP のリストを定義します。 ranges
パラメータは、CIDRパラメータが仕様に存在する場合、そのパラメータを上書きします。 ranges
パラメーターは、 podCIDR
パラメーターをオーバーライドしません。
仮想ネットワークの概要
Cloud-Native Contrail Networking は、IPAM 実装と互換性があるように VirtualNetwork
リソースを更新します。次の例について考えてみます。
apiVersion: core.contrail.juniper.net/v1alpha1 kind: VirtualNetwork metadata: namespace: contrail name: virtualnetwork-sample spec: v4SubnetReference: apiVersion: core.contrail.juniper.net/v1alpha1 kind: Subnet namespace: contrail name: v4subnet v6SubnetReference: apiVersion: core.contrail.juniper.net/v1alpha1 kind: Subnet namespace: contrail name: v6subnet
IPv4 アドレス ファミリーと IPv6 アドレス ファミリーの個別のSubnet
参照に注意してください。そのVirtualNetwork
のライフサイクル全体を通じて、VirtualNetwork
のSubnet
参照を更新することはできません。
サービスとしてのBGP セッションIPアドレスの概要
BGP as a Service(BGPaaS)を使用すると、制御ノードとワークロードまたはポッドのIPアドレスとの間でBGPセッションを確立できます。DisableBGPaaSIPAutoAllocation
フラグをfalseまたはtrueに設定してSubnet
を作成できます。DisableBGPaaSIPAutoAllocation
を false に設定すると、次のようになります。
-
すぐに
BGPaaSPrimaryIP
またはBGPaaSSecondaryIP
にIPアドレスは割り当てられません。これらのIPは、このSubnet
ネットワーク内で最初のBGPAsAService
が構成されている場合にのみ(CIDR範囲内Subnet
)割り当てられます。 -
Subnet
に関連付けられているBGPAsAService
リソースをすべて削除すると、BGPaaSPrimaryIP
とBGPaaSSecondaryIP
に割り当てられたIPアドレスがプールから解放され、空の値に設定されます。これらのアドレスは、BGPAsAService
が再設定されたときにプールから再割り当てされます。
DisableBGPaaSIPAutoAllocation
フラグを true に設定すると、次のようになります。
-
BGPaaSPrimaryIP
フィールドとBGPaaSSecondaryIP
フィールドにユーザー定義値を使用できます。これらの IP フィールドは必須であり、空のままにすることはできません。これらのフィールドのユーザー定義値も、Subnet
プールで予約されています。 -
BGPaaSPrimaryIP
とBGPaaSSecondaryIP
に使用されるIPアドレスは、BGPAsAService
が設定されていない場合や、BGPAsAService
リソースがすべて削除された場合でも、Subnet
プールに予約されたままです。
DisableBGPaaSIPAutoAllocation
フィールドを false から true に変更すると、BGPaaSPrimaryIP
と BGPaaSSecondaryIP
は必須フィールドになります。このフラグを false から true に変更する前に IP が自動的に割り当てられた場合、それらの IP はプールから解放され、新しいユーザー指定の IP がプールに予約されます。
DisableBGPaaSIPAutoAllocation
を true から false に変更すると、次のようになります。
.Subnet
内でBGPAsAService
が設定されていない場合、BGPaaSPrimaryIP
とBGPaaSSecondaryIP
値はプールから解放され、これらのフィールドは空になります。-
少なくとも 1 つの
BGPAsAService
が設定されている場合、BGPaaSPrimaryIP
とBGPaaSSecondaryIP
の既存の値は変更されません。
サービスとしての BGP(BGPaaS)の詳細については、「 サービスとしての BGP を有効にする 」セクションを参照してください。