Модули в EKS: не удается разрешить DNS (но может пропинговать IP) - PullRequest
0 голосов
/ 09 января 2020

У меня есть 2 кластера EKS, в 2 разных учетных записях AWS и с, я бы предположил, разными брандмауэрами (к которым у меня нет доступа). С первым (Dev) все в порядке, однако при одинаковой конфигурации модули кластера UAT пытаются разрешить DNS. Узлы могут разрешаться и, кажется, все в порядке.

1) ping 8.8.8.8 работает

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms

2) Я могу пинговать IP-адреса Google (и других), но не фактические имена DNS.

Наша конфигурация:

  1. настроена с помощью Terraform.
  2. Рабочие узлы и плоскость управления SG такие же, как у dev. Я считаю, что это нормально.
  3. Добавлено 53 TCP и 53 UDP на входящий + исходящий NACl (просто чтобы убедиться, что 53 действительно был открыт ...). Добавлено 53 TCP и 53 UDP, исходящих с рабочих узлов.
  4. Мы используем ami-059c6874350e63ca9 с версией 1.14 kubernetes.

Я не уверен, что проблема заключается в брандмауэре где-то, cornns, моя конфигурация, которая должна быть обновлена ​​или "глупая ошибка". Любая помощь будет оценена.

1 Ответ

0 голосов
/ 17 января 2020

После нескольких дней отладки вот в чем проблема: я разрешил весь трафик c между узлами, но all traffic - это TCP, а не UDP.

Это была в основном одна строка в AWS: В рабочих узлах SG добавьте правило входящих из / в рабочие узлы порта 53 протокола DNS (UDP).

Если вы используете terraform, оно должно выглядеть следующим образом:

resource "aws_security_group_rule" "eks-node-ingress-cluster-dns" {
  description = "Allow pods DNS"
  from_port                = 53
  protocol                 = 17
  security_group_id        = "${aws_security_group.SG-eks-WorkerNodes.id}"
  source_security_group_id = "${aws_security_group.SG-eks-WorkerNodes.id}"  
  to_port                  = 53
  type                     = "ingress"
}
...