GKE и NodeLocal DNSCache - PullRequest
       20

GKE и NodeLocal DNSCache

0 голосов
/ 21 октября 2019

У нас есть развертывание Kubernetes в Google Cloud Platform. Недавно мы столкнулись с одной из известных проблем, связанных с проблемой с kube-dns, которая возникает при большом количестве запросов https://github.com/kubernetes/kubernetes/issues/56903 (она больше связана с SNAT / DNAT и контрактом, но окончательный результат не работаетkube-dns).

После нескольких дней поисков по этой теме мы обнаружили, что у k8s уже есть решение, которое в настоящее время находится в альфа-версии (https://kubernetes.io/docs/tasks/administer-cluster/nodelocaldns/)

. Решение заключается в создании кэширования. CoreDNS как набор демонов на каждом узле k8s пока хорош.

Проблема в том, что после создания набора демонов вы должны указать kubelet использовать его с параметром --cluster-dns, и мы не можем найти какой-либо способсделать это в среде GKE. Google загружает кластер с помощью скрипта «configure-sh» в метаданных экземпляра. Существует возможность редактировать шаблон экземпляра и «жестко кодировать» требуемые значения, но это не вариант, если вы обновляете кластер или используетегоризонтальное автоматическое масштабирование всех измененных значений будет потеряно. Последняя идея заключалась в том, чтобы использовать собственный сценарий запуска, который извлекаетнастройте и обновите сервер метаданных, но это слишком сложная задача.

1 Ответ

0 голосов
/ 21 октября 2019

Вы можете ускорить другое развертывание kube-dns, например, в другом пуле узлов и, таким образом, иметь 2-кратный сервер имен в resolv.conf модуля.

Это уменьшит выселения и другие сбои и, как правило, позволит полностьюконтролировать службу kube-dns во всем кластере.

...