一部のビジネスシナリオでは、ワーカーPodは固定IPアドレスを使用する必要があります。このトピックでは、Elastic Container InstanceベースのPodを作成するときに、PodのプライベートIPアドレスを指定する方法について説明します。
機能の説明
デフォルトでは、システムは、Podの作成時にeci-profileで指定したvSwitch CIDRブロックから、Elastic Container InstanceベースのPodにプライベートIPアドレスをランダムに割り当てます。一部のビジネスシナリオでは、PodのプライベートIPアドレスを指定したい場合があります。たとえば、サービスを移行する場合、古いPodを削除した後、新しいPodに古いPodのIPアドレスを指定できます。これにより、サービスの継続性が確保されます。
クラスターまたはPodのvSwitchを構成する方法の詳細については、複数ゾーンにまたがるPodの作成を参照してください。
制限事項
Podに指定するプライベートIPアドレスは、IPv4アドレスである必要があります。
構成の説明
Podのメタデータにk8s.aliyun.com/eci-private-ip-addressアノテーションを追加して、PodのプライベートIPアドレスを指定できます。以下の点に注意してください。
指定するIPアドレスは、eci-profileの
vSwitchIdsパラメーターで指定したvSwitchのCIDRブロックに属している必要があります。IPアドレスがアイドル状態であることを確認してください。複数のIPアドレスを指定することはできません。Deploymentなどのリソースを作成するときにアノテーションを追加する場合、Podには1つのレプリカのみ構成できます。複数のレプリカを構成すると、1つのPodのみが作成されます。他の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-containerPodのプライベートIPアドレスを確認します。
kubectl get pod -o wide次の図は出力例を示しています。システムは、指定されたプライベートIPアドレスをPodに割り当てています。
