一部のビジネスシナリオでは、ワーカー Pod で固定 IP アドレスを使用する必要があります。このトピックでは、Pod の作成時に Elastic Container Instance (ECI) ベースの Pod にプライベート IP アドレスを指定する方法について説明します。
機能説明
デフォルトでは、Pod の作成時に、システムは eci-profile で指定した vSwitch の CIDR ブロックからプライベート IP アドレスを ECI ベースの Pod にランダムに割り当てます。一部のビジネスシナリオでは、Pod のプライベート IP アドレスを指定することが望ましい場合があります。たとえば、サービスを移行する場合、古い Pod を削除した後、新しい Pod に古い Pod の IP アドレスを指定できます。これにより、サービス継続性を確保できます。
クラスターまたは Pod の vSwitch の設定方法の詳細については、「複数ゾーンにまたがる Pod の作成」をご参照ください。
使用制限
Pod に指定するプライベート IP アドレスは IPv4 アドレスである必要があります。
設定
Pod の metadata に k8s.aliyun.com/eci-private-ip-address annotation を追加して、Pod のプライベート IP アドレスを指定できます。次の点にご注意ください:
指定された IP アドレスは、eci-profile の
vSwitchIdsパラメーターで指定された vSwitch の CIDR ブロックに属している必要があります。IP アドレスがアイドル状態であることを確認してください。複数の IP アドレスは指定できません。Deployment などのリソースを作成するときに annotation を追加する場合、Pod に設定できるレプリカは 1 つだけです。複数のレプリカを設定すると、作成される Pod は 1 つだけになります。他の Pod は IP アドレスを割り当てることができないため、作成に失敗します。
設定例
プライベート IP アドレスを指定して Pod を作成します。
kubectl create -f private-ip-test.yamlprivate-ip-test.yaml のサンプル内容は次のとおりです:
apiVersion: v1 kind: Pod metadata: name: private-ip-test labels: alibabacloud.com/eci: "true" annotations: k8s.aliyun.com/eci-private-ip-address: "172.16.0.11" # Pod にプライベート IP アドレスを指定します。 spec: containers: - image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2 name: test-container-
Pod のプライベート IP アドレスを確認します。
kubectl get pod private-ip-test -o wide以下に出力例を示します。システムは、指定されたプライベート IP アドレスを Pod に割り当てています。
:~$ kubectl get pod private-ip-test -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES private-ip-test 1/1 Running 0 3m41s 172.16.0.11 virtual-kubelet-cn-beijing-h <none> <none>