Tous les produits
Search
Centre de documentation

Elastic Container Instance:Configurer un pod ECI pour utiliser une adresse IP fixe

Dernière mise à jour :Aug 11, 2026

Certaines applications nécessitent qu'un pod conserve la même adresse IP. Cette rubrique explique comment configurer un pod Elastic Container Instance (ECI) afin d'utiliser une adresse IP fixe.

Fonctionnement

Par défaut, lors de la création d'un pod ECI, le système attribue au pod une adresse IP aléatoire issue du bloc CIDR du vSwitch spécifié dans le profil eci-profile. Lorsqu'un pod est supprimé suite à une défaillance, le système libère son adresse IP et en attribue une nouvelle au pod de remplacement. Dans certains scénarios, par exemple lorsqu'un service est exposé directement via son adresse IP, un pod peut nécessiter une adresse IP fixe pour garantir la continuité des activités.

Pour répondre à ces besoins, ECI propose la fonctionnalité d'adresse IP fixe. Lorsque vous créez un pod ECI avec cette fonctionnalité activée, le système alloue deux adresses IP depuis le vSwitch configuré : une adresse IP dynamique, invisible au sein du cluster, et une adresse IP fixe. Après la suppression du pod, le système conserve son adresse IP fixe pendant une période déterminée, qui est de 48 heures par défaut. Si un nouveau pod est créé durant cette période de conservation et présente le même ID de cluster, le même namespace et le même nom de pod que le pod supprimé, tout en ayant également la fonctionnalité d'adresse IP fixe activée, le système attribue l'adresse IP conservée au nouveau pod. Cela garantit la stabilité de l'adresse IP du pod.

Remarque

Dans ce scénario, utilisez un StatefulSet pour déployer votre application. Lorsqu'un pod d'un StatefulSet est supprimé, le système crée automatiquement un nouveau pod avec le même namespace et le même nom de pod.

Configuration

Ajoutez des annotations aux métadonnées du pod pour activer la fonctionnalité d'adresse IP fixe et configurer la durée de conservation de cette adresse. Le tableau suivant décrit ces annotations.

Annotation

Exemple

Description

k8s.aliyun.com/eci-fixed-ip

"true"

Définissez sur "true" pour activer la fonctionnalité d'adresse IP fixe.

k8s.aliyun.com/eci-fixed-ip-retain-hour

"24"

Nombre d'heures pendant lesquelles l'adresse IP fixe est conservée après la suppression du pod.

Si omis, la valeur par défaut est de 48 heures.

Procédure

  1. Créez un Service et un StatefulSet.

    kubectl apply -f fixedIp.yaml

    Le fichier fixedIp.yaml suivant définit un Service et un StatefulSet. Le StatefulSet inclut un pod ECI avec l'annotation qui active la fonctionnalité d'adresse IP fixe.

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      selector:
        matchLabels:
          app: nginx
      serviceName: "nginx"
      minReadySeconds: 10
      template:
        metadata:
          annotations:
            k8s.aliyun.com/eci-fixed-ip: "true"  # Enable the fixed IP address feature.
          labels:
            app: nginx
            alibabacloud.com/eci: "true"
        spec:
          containers:
          - name: nginx
            image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2
            ports:
            - containerPort: 80
              name: web
  2. Exécutez la commande suivante pour surveiller les changements d'état des pods.

    kubectl get pod -o wide -w

    La sortie indique que le StatefulSet a créé un pod nommé web-0 avec l'adresse IP 172.16.0.129.

    d:~$ kubectl get pod -o wide -w
    NAME    READY   STATUS              RESTARTS   AGE   IP              NODE                         NOMINATED NODE   READINESS GATES
    web-0   0/1     Pending             0                9s    <none>          <none>                       <none>           <none>
    web-0   0/1     Pending             0               20s    <none>          <none>                       <none>           <none>
    web-0   0/1     Pending             0               20s    <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Pending             0               20s    <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     ContainerCreating   0               69s    172.16.0.129   virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   1/1     Running             0               76s    172.16.0.129   virtual-kubelet-cn-beijing-h   <none>           <none>
  3. Ouvrez un nouveau terminal pour vous connecter au cluster et exécutez la commande suivante afin de supprimer le pod du StatefulSet.

    kubectl delete pod web-0
  4. Revenez au premier terminal et continuez d'observer les changements d'état du pod.

    La sortie montre qu'après la suppression du pod initial, le StatefulSet crée automatiquement un nouveau pod qui réutilise l'adresse IP d'origine.

    Remarque

    La création du nouveau pod peut être retardée car l'adresse IP reste occupée jusqu'à la suppression complète du pod précédent.

    1:~$ kubectl get pod -o wide -w
    NAME    READY   STATUS              RESTARTS   AGE     IP              NODE                          NOMINATED NODE   READINESS GATES
    web-0   0/1     Pending             0          9s      <none>          <none>                        <none>           <none>
    web-0   0/1     Pending             0          20s     <none>          <none>                        <none>           <none>
    web-0   0/1     Pending             0          20s     <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Pending             0          20s     <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     ContainerCreating   0          69s     172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   1/1     Running             0          76s     172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   1/1     Terminating         0          2m37s   172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Terminating         0          2m39s   172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Terminating         0          2m55s   172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Terminating         0          2m55s   172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Pending             0          0s      <none>                                        <none>           <none>
    web-0   0/1     Pending             0          0s      <none>                                        <none>           <none>
    web-0   0/1     Pending             0          1s      <none>                                        <none>           <none>
    web-0   0/1     Pending             0          1s      <none>                                        <none>           <none>
    web-0   0/1     Pending             0          17s     <none>                                        <none>           <none>
    web-0   0/1     Pending             0          17s     <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Pending             0          17s     <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     ContainerCreating   0          69s     172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   1/1     Running             0          76s     172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>