nodelocaldns dial tcp 10.233.0.3:53: i/o timeout

Чудесная ошибка nodelocaldns

dial tcp 10.233.0.3:53: i/o timeout

Исходные данные

10.233.0.3, как наверное понятно из контекста — это DNS сервер кластера. Обычно этот IP используется при установке кластера кубернетес при помощи kubespray. На самом деле — это сервис типа ClusterIP, который перекидывает данные на два пода coredns. В системе это выглядит как то так:

# ipvsadm -Ln | grep -A2 10.233.0.3
TCP 10.233.0.3:53 rr
  -> 10.233.65.9:53 Masq 1 0 32
  -> 10.233.66.210:53 Masq 1 0 32

nodelocaldns, установленные на нодах кластера, пытаются до него достучаться по протоколу tcp.

Когда появляется ошибка

После добавления новой ноды в кластер при помощи kubespray. Что то типа такого:

 # ansible-playbook -i inventory/my-cluster/inventory.ini scale.yml

После этого все поды на новой ноде перестанут резолвить DNS имена. При этом прямое обращение по IP к coredns будет работать.

# telnet 10.233.65.9 53
Trying 10.233.65.9...
Connected to 10.233.65.9.
Escape character is '^]'.
Connection closed by foreign host.

А вот обращение на IP сервиса уже нет.

Как лечить

При добавлении ноды в кластер никогда не используйте scale.yml. Пользуйтесь только cluster.yml, Т.е. добавили новую ноду в инвентори файл и сразу cluster.yml.

Если всё же сначала сделали scale и получили ошибку, просто перезапустите плейбук cluster.yml. И все станет хорошо.

Kubernetes, volumes, configMap

Рассматриваем использование configMap для подключения конфигурационных файлов и переменных среды окружения.

Файлы, используемые в видео: https://github.com/BigKAA/kubernetes-volumes/tree/master/03-config

Kubernetes, volumes [02], hostPath

Тома типа hostPath

Запуск пода с правами определенного пользователя и группы.

Файлы, используемые в видео: https://github.com/BigKAA/kubernetes-volumes/tree/master/02-hostPath

Страница на моем web сайте: https://www.kryukov.biz/kubernetes/lokalnye-volumes/hostpath/

Kubernetes, volumes, emptyDir

Начинаем знакомство с Volumes в kubernetes.

Тома типа emptyDir.

initContainers, два и более контейнера в одном под. Взаимодействие между контейнерами.

Файлы, используемые в видео: https://github.com/BigKAA/kubernetes-volumes/tree/master/01-emptyDir

Новый раздел kubernetes на моем сайте

Последнее время снимал много видео, посвященных kubernetes. Практически перестал добавлять статьи на сайт. Решил исправиться и открыть раздел Кубернетес, в котором планирую писать свои заметки по этой теме.

Заметки будут появляться в произвольном порядке. В итоге, надеюсь, получится материал для обучения с нуля до как получится.

Многие материалы дублируют или дополняют мои видео на канале в youtube.

Начал с темы volumes. Скоро сниму видео на эту тему, с более подробным рассказом.

Kubernetes, ingress controller 4, metrics & update

Сбор метрик Ingress controller в Prometheus. Дашборды в Grafana.

Обновление ingress controller — некоторые нюансы.

Файлы, используемые в видео: https://github.com/BigKAA/kubernetes-ingresscontroller

Kubernetes, ingress controller 3, установка второго контроллера, вариант HostNetwork

Продолжение темы ingress controller.Деплой второго ingress controller в варианте HostNetwork.В итоге получаем два разных контроллера в кластере. Деплоим Ingress, выбирая необходимый контроллер.

Файлы, используемые в видео: https://github.com/BigKAA/kubernetes-ingresscontroller

Kubernetes, Ingress controller, установка и настройка, вариант с NodePort

Установка и настройка Ingress controller, вариант NodePort с дополнениями и улучшениями. Подробно рассматриваем установку контроллера используя руки, мозги и yaml файлы. Никаких helm-чартов.

Файлы, используемые в видео: https://github.com/BigKAA/kubernetes-ingresscontroller

Следующее видео в серии Ingress controller:
3. Kubernetes, ingress controller [3], установка второго контроллера, вариант HostNetwork: https://youtu.be/k26hETfmRzc

Kebernetes, Ingress controller — теория

Первое видео в серии «Ingress controller». Теоретическое.

Полезные ссылки:
Ingress — https://kubernetes.io/docs/concepts/services-networking/ingress/
Ingress Controllers — https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/
NGINX Ingress Controller — https://kubernetes.github.io/ingress-nginx/

В следующем видео будет показана установка и настройка ingress controller с использованием NodePort.