Кубернетс. Нет, не так… Rancher, «встроенный» CI/CD.
Метка: kubernetes
Kubernetes и DNS, часть 2
Продолжение темы DNS.
00:30 — имя системы внутри контейнера.
05:02 — файл /etc/hosts в контейнере
07:32 — файл /etc/resolv.conf в контейнере
09:56 — поиск ошибки
16:05 — ошибка dial tcp 10.233.0.3:53: i/o timeout
20:42 — логическая ошибка в /etc/resolv.conf
Файлы, используемые в видео: https://github.com/BigKAA/kubernetes-dns
Kubernetes и DNS
DNS в kubernetes. Как устроено, особенности установки DNS при помощи kubespray.
01:09 — теория
07:46 — домен кластера
09:08 — конфигурация coredns
12:43 — конфигурация nodelocaldns
20:27 — правила именования сервисов и подов
Kubernetes, Persistent volume provisioner
Автоматическое создание PV.
Алгоритм работы provisioner.
Изменяем хранилище для метрик и логов Rancher.
Файлы, используемые в видео: https://github.com/BigKAA/kubernetes-pvc-pv/tree/master/02-dynamic-pv
Kubernetes, Persistent Volume
Persistent Volume, Persistent Volume Claim.
Немного теории.
Статическое создание PV.
Файлы, используемые в видео: https://github.com/BigKAA/kubernetes-pvc-pv/tree/master/01-static-pv
Установка кластера kubernetes при помощи Rancher.
Установка кластера kubernetes при помощи Rancher. (видео перезалито, добавлено немного плюшек.)
Иногда надо быстро.
Спонтанное видео, совсем без подготовки. На работе потребовалось разобраться с установкой кластера при помощи Rancher. Сделал тестовую среду и заодно записал видео.
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, secrets
Видео о secrets, которые совсем не секреты.
Файлы, используемые в видео: https://github.com/BigKAA/kubernetes-volumes/tree/master/04-secrets
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/