Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Все решения
    • Все решения для Managed Service for Kubernetes
    • Устранение ошибки `Timed out waiting for the condition` при монтировании PVC
    • Устранение ошибки `Timed out waiting for the condition` при монтировании тома с большим количеством файлов
    • Хосты группы узлов Managed Service for Kubernetes долго находятся в статусе `RECONCILING`
    • Под `kube-dns-autoscaler` постоянно перезапускается
    • Не уменьшается количество нод в группе Managed Service for Kubernetes
    • Не увеличивается количество узлов в группе Managed Service for Kubernetes
    • Устранение ошибки `Multi-Attach error for volume`
    • Устранение ошибки `DEADLINE_EXCEEDED`
    • Устранение ошибок с синхронизацией времени на узлах кластера Managed Service for Kubernetes
    • Устранение проблем с разрешением DNS-имен в Managed Service for Kubernetes
    • Устранение ошибки `0/10 nodes are available - node(s) had untolerated taint`
    • Кластер слишком долго находится в состоянии `STARTING`
    • Поды кластера слишком долго находятся в состоянии `PENDING`
    • Устранение проблем с работой HPA в Managed Service for Kubernetes
    • Устранение ошибки `Can't use allocation_policy.locations.subnet_id together with node_template.network_interface_specs`
    • Устранение проблем с монтированием томов к подам кластера Managed Service for Kubernetes средствами Container Storage Interface для S3
    • Кластер Managed Service for Kubernetes слишком долго находится в состоянии `STARTING` после переименования
    • Как добавлять и изменять SSH-ключи пользователей Linux на хостах группы узлов Managed Service for Kubernetes
    • Как назначить статические внешние IP-адреса для узлов кластера Managed Service for Kubernetes
    • Как выдать узлам Kubernetes доступа в интернет
    • Как изменить сеть или подсеть для MDB-кластера
    • Как создать внутренний Ingress-контроллер
    • Как настроить автоматическое удаление старых образов с узлов Managed Service for Kubernetes
    • Как узнать внешний IP-адрес узла Managed Service for Kubernetes
    • Как использовать сертификаты из Certificate Manager в балансировщиках нагрузки или в Managed Service for Kubernetes
    • Как изменить часовой пояс на узлах кластера Managed Service for Kubernetes
    • Как выяснить размер эфемерного хранилища узла Managed Service for Kubernetes

В этой статье:

  • Описание проблемы
  • Решение
  • Если проблема осталась
  1. Managed Service for Kubernetes
  2. Устранение проблем с разрешением DNS-имен в Managed Service for Kubernetes

Устранение проблем с разрешением DNS-имен в Managed Service for Kubernetes

Статья создана
Yandex Cloud
Обновлена 16 августа 2024 г.
  • Описание проблемы
  • Решение
  • Если проблема осталась

Описание проблемыОписание проблемы

Кластер Managed Service for Kubernetes не разрешает FQDN-имена как изнутри самого кластера, так и имена внешних по отношению к кластеру ресурсов.

РешениеРешение

Проверьте используемую версию Kubernetes на мастер-узлах и рабочих узлах. Для этого выполните команды:

yc managed-kubernetes cluster get $CLUSTER_ID | grep vers
yc managed-kubernetes node-group get $NODE_GROUP_ID | grep vers

Внимание

Eсли версия кластера или группы узлов устарела и не входит в список актуальных версий yc managed-kubernetes list-versions, следует выполнить обновление кластера и группы узлов, перед тем как продолжать диагностику.

Если кластер и группа узлов используют актуальную версию Kubernetes, проверьте, корректно ли работает CoreDNS в кластере.
Для диагностики CoreDNS понадобится проанализировать состояние системных DNS-подов кластера командой kubectl get pods -n kube-system -l k8s-app=kube-dns -o wide.

Примерный вывод команды kubectl get pods -n kube-system -l k8s-app=kube-dns -o wide

NAME                       READY   STATUS    RESTARTS   AGE   IP              NODE                        NOMINATED NODE   READINESS GATES
coredns-85fd96f799-2zzvw   1/1     Running   5          21d   10.96.138.252   cl1XXXXXXXXXXXXXXXXX-yxeg   <none>           <none>
coredns-85fd96f799-9lz6b   1/1     Running   3          20d   10.96.140.90    cl1XXXXXXXXXXXXXXXXX-icos   <none>           <none>

Обратите внимание на состояние подов в кластере. Если состояние отличается от RUNNING, системные журналы всех DNS-подов в кластере командой kubectl logs -l k8s-app=kube-dns -n kube-system --all-containers=true и найти причину проблем в этих журналах.

Если проблему с корректностью работы CoreDNS не удалось решить, воспользуйтесь одним из следующих методов:

Увеличьте количество подов CoreDNS
Используйте NodeLocal DNS

Обычно в кластере два пода CoreDNS или один, если кластер одноузловый. Вы можете увеличить число реплик CoreDNS, изменив конфигурацию автомасштабирования деплоймента CoreDNS и задав значение для параметра linear:

Пример деплоймента kube-dns-autoscaler (kubectl -n kube-system edit cm kube-dns-autoscaler)
apiVersion: v1
data:
linear: '{"coresPerReplica":256,"nodesPerReplica":16,"preventSinglePointFailure":true}' # < это настройки масштабирования
kind: ConfigMap
metadata:
name: kube-dns-autoscaler
namespace: kube-system
selfLink: /api/v1/namespaces/kube-system/configmaps/kube-dns-autoscaler

Подробнее про конфигурацию масштабирования можно узнать из материалов разработчиков Kubernetes на GitHub по этой ссылке

Чтобы снизить нагрузку по DNS-запросам в кластере Managed Service for Kubernetes, включите NodeLocal DNS Cache. Если кластер Managed Service for Kubernetes содержит более 50 узлов, используйте автоматическое масштабирование DNS.

При включении NodeLocal DNS Cache в кластере Managed Service for Kubernetes разворачивается DaemonSet. На каждом узле Managed Service for Kubernetes начинает работу кеширующий агент — под node-local-dns. Поды пользователя теперь отправляют запросы к агенту на своем узле Managed Service for Kubernetes.

Если запрос в кеше агента, то он возвращает прямой ответ. В ином случае создается TCP-соединение с kube-dns ClusterIP. По умолчанию кеширующий агент делает cache-miss запросы к kube-dns для DNS-зоны кластера Managed Service for Kubernetes cluster.local.

Установите NodeLocal DNS с помощью Cloud Marketplace, как описано в инструкции или вручную.

Совет

Гарантированный результат при решении проблем с DNS в кластере также даст установка NodeLocal DNS Cache из Yandex Cloud Marketplace по следующим инструкциям:

  • Основы работы с Cloud Marketplace;
  • Установка NodeLocal DNS.

Если проблема осталасьЕсли проблема осталась

Если вышеописанные действия не помогли решить проблему, создайте запрос в техническую поддержку. При создании запроса укажите следующую информацию:

  1. Идентификатор кластера Managed Service for Kubernetes.
  2. Журнал событий кластера Managed Service for Kubernetes: вывод kubectl get events.
  3. Журнал DNS-сервисов кластера: вывод kubectl logs -l k8s-app=kube-dns -n kube-system --all-containers=true.
  4. Примеры ошибок при работе DNS-разрешения в кластере с фиксацией даты и времени проявления проблемы.

Была ли статья полезна?

Предыдущая
Устранение ошибок с синхронизацией времени на узлах кластера Managed Service for Kubernetes
Следующая
Устранение ошибки `0/10 nodes are available - node(s) had untolerated taint`
Проект Яндекса
© 2025 ООО «Яндекс.Облако»