Превышено ограничение на количество сердечников и фланелевых серверов K8s - PullRequest
0 голосов
/ 24 января 2020

Я пытался настроить k8s на одном узле, все было установлено нормально. но когда я проверяю состояние моих модулей системы kube,

CNI -> фланель модуль имеет сбой , причина -> превышены пределы сервера имен, некоторые серверы имен имеют пропущена, строка применяемого сервера имен: xxxx xxxx xxxx

CoreDNS Статус pods: ContainerCreating .

В Моем офисе текущий сервер имеет был настроен на использование c ip, и когда я проверял / etc / resolv.conf

Это вывод

# Generated by NetworkManager
search ORGDOMAIN.BIZ
nameserver 192.168.1.12
nameserver 192.168.2.137
nameserver 192.168.2.136
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 192.168.1.10
nameserver 192.168.1.11

я не могу найти причину root, на что мне смотреть?

1 Ответ

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

Короче, у вас слишком много записей в /etc/resolv.conf.

Это известная проблема :

В некоторых Linux дистрибутивах (например, Ubuntu), используйте локальный DNS-преобразователь по умолчанию (systemd-resolved). Systemd-resolved перемещает и заменяет /etc/resolv.conf заглушкой, которая может привести к фатальной пересылке l oop при разрешении имен на вышестоящих серверах. Это можно исправить вручную, используя флаг --resolv-conf kubelet, чтобы указать на правильный resolv.confsystemd-resolved, это /run/systemd/resolve/resolv.conf). kubeadm (> = 1.11) автоматически обнаруживает systemd-resolved и соответствующим образом настраивает флаги kubelet.

Также

lib c в Linux - это невозможно застрял ( см. эту ошибку 2005 ) с ограничением только 3 DNS nameserver записей и 6 DNS search записей. Kubernetes должен потреблять 1 nameserver запись и 3 search запись. Это означает, что если локальная установка уже использует 3 nameserver с или использует более 3 search с, некоторые из этих настроек будут потеряны. В качестве частичного обходного пути узел может запустить dnsmasq, который предоставит больше nameserver записей, но не больше search записей. Вы также можете использовать флаг --resolv-conf kubelet.

Если в качестве базового образа вы используете Alpine версии 3.3 или более раннюю, DNS может работать некорректно из-за известной проблемы с Alpine. Проверьте здесь для получения дополнительной информации.

Возможно, вы можете изменить это в коде Kubernetes, но я не уверен насчет функциональности. Поскольку для этого задано это значение.

Код может быть расположен здесь

const (
    // Limits on various DNS parameters. These are derived from
    // restrictions in Linux libc name resolution handling.
    // Max number of DNS name servers.
    MaxDNSNameservers = 3
    // Max number of domains in search path.
    MaxDNSSearchPaths = 6
    // Max number of characters in search path.
    MaxDNSSearchListChars = 256
)
...