Tous les produits
Search
Centre de documentation

Elastic Container Instance:Configurer les hôtes pour un pod basé sur une instance Elastic Container

Dernière mise à jour :Aug 11, 2026

L'annotation k8s.aliyun.com/eci-custom-hosts permet d'ajouter des entrées personnalisées au fichier /etc/hosts d'un pod lors de sa création. Cette fonctionnalité est utile lorsque les conteneurs doivent résoudre un nom de domaine vers une adresse IP spécifique, par exemple pour extraire des images depuis un registre géré en interne.

Ne modifiez pas directement le fichier /etc/hosts à l'intérieur d'un conteneur en cours d'exécution, car les modifications manuelles risquent de ne pas être conservées.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un cluster Kubernetes avec la prise en charge des instances Elastic Container (ECI) activée

  • Les autorisations nécessaires pour créer des ressources Deployment

Fonctionnement

Lorsque vous ajoutez l'annotation k8s.aliyun.com/eci-custom-hosts à un pod, l'instance ECI injecte les mappages hôte-IP spécifiés dans le fichier /etc/hosts.

Chaque mappage utilise le format JSON suivant :

{"host":"<domain-name>","ip":"<ip-address>"}

Pour spécifier plusieurs mappages, utilisez un tableau JSON :

[{"host":"example.com","ip":"100.100.XX.XX"},{"host":"aliyundoc.com","ip":"100.100.XX.XX"}]
Important

Chaque objet associe exactement un nom de domaine à une adresse IP. Pour mapper plusieurs domaines vers la même adresse IP, ajoutez un objet distinct pour chaque domaine.

Contraintes :

  • Ajoutez l'annotation lors de la création du pod. L'ajout ou la modification de l'annotation sur un pod existant n'a aucun effet.

  • Pour les déploiements (Deployments), placez l'annotation dans spec.template.metadata.annotations, et non dans la section metadata de niveau supérieur.

Ajouter des entrées d'hôte personnalisées

L'exemple suivant crée un déploiement comportant deux entrées d'hôte personnalisées. Le conteneur nginx extrait son image depuis example.com et le conteneur busybox depuis aliyundoc.com. Les deux noms de domaine sont résolus vers les adresses IP spécifiées dans l'annotation.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      name: test
      labels:
        app: test
        alibabacloud.com/eci: "true"
      annotations:
        k8s.aliyun.com/eci-custom-hosts: "[{\"host\":\"example.com\",\"ip\":\"100.100.XX.XX\"},{\"host\":\"aliyundoc.com\",\"ip\":\"100.100.XX.XX\"}]"
    spec:
      containers:
      - name: nginx
        image: example.com/test/nginx:latest
        ports:
        - containerPort: 80
      - name: busybox
        image: aliyundoc.com/test/busybox:1.30
        command: ["sleep"]
        args: ["999999"]

Remplacez 100.100.XX.XX par les adresses IP réelles de vos registres d'images.

Vérifier la configuration

Une fois le pod en cours d'exécution, vérifiez que les entrées personnalisées figurent bien dans le fichier /etc/hosts :

kubectl exec <pod-name> -- cat /etc/hosts

Si les entrées personnalisées sont absentes, confirmez que l'annotation était présente lors de la création initiale du pod, et non ajoutée ultérieurement.