web-dev-qa-db-fra.com

Problème DNS sur AWS EKS lors de l'exécution dans des sous-réseaux privés

J'ai une configuration de cluster EKS dans un VPC. Les nœuds de travail sont lancés dans des sous-réseaux privés. Je peux déployer avec succès des pods et des services.

Cependant, je ne peux pas effectuer de résolution DNS à partir des pods. (Cela fonctionne bien sur les nœuds de travail, en dehors du conteneur.)

Le dépannage avec https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/ donne les résultats suivants à partir de nslookup (délai d’expiration après une minute ou deux):

Serveur: 172.20.0.10 Adresse 1: 172.20.0.10

nslookup: impossible de résoudre 'kubernetes.default'

Lorsque je lance le cluster dans un VPC tout public, je n'ai pas ce problème. Me manque-t-il des étapes nécessaires à la résolution DNS à partir d'un sous-réseau privé?

Merci beaucoup, Daniel

4
Daniel

J'ai le sentiment que je dois donner une réponse appropriée à cette question car aborder cette question était la réponse à 10 heures consécutives de débogage pour moi. Comme @Daniel l'a dit dans son commentaire, le problème que j'ai découvert concernait le blocage du trafic sortant sur le port UDP 53 par ma liste de contrôle d'accès, ce que Kubernetes utilise apparemment pour résoudre les enregistrements DNS. 

Le processus était particulièrement déroutant pour moi car l'un de mes modules fonctionnait en fait depuis le début (je pense?), Il se trouvait dans la même zone que le résolveur DNS de Kubernetes.

6
apdm

Cela fait donc quelques heures que je me bats, avec ce problème aussi, à perdre du temps.

Puisque j'utilise le VPC par défaut, mais avec les nœuds de travail du sous-réseau privé, cela ne fonctionnait pas.

Je suis passé par Amazon-vpc-cni-k8s et j'ai trouvé la solution.

Nous devons sff la variable d'environnement du daemonset aws-node AWS_VPC_K8S_CNI_EXTERNALSNAT=true.

Vous pouvez soit obtenir le nouveau yaml et l'appliquer, soit simplement le corriger via le tableau de bord. Toutefois, pour que cela fonctionne, vous devez redémarrer l'instance du nœud de travail afin que les tables de routage ip soient actualisées.

le lien de publication est ici

merci

0
WickStargazer