Ошибка Kube-state-metrics: не удалось создать клиента: ... тайм-аут ввода-вывода - PullRequest
17 голосов
/ 14 мая 2019

Я запускаю Kubernetes на виртуальных машинах и прохожу базовые учебные пособия, в настоящее время Добавьте ведение журнала и метрики в пример гостевой книги PHP / Redis .Я пытаюсь установить kube-state-metrics:

git clone https://github.com/kubernetes/kube-state-metrics.git kube-state-metrics
kubectl create -f kube-state-metrics/kubernetes

, но это не удается.

kubectl describe pod --namespace kube-system kube-state-metrics-7d84474f4d-d5dg7

...

Предупреждение Нездоровый 28 м (x8 более 30 м) kubelet, kubernetes-node1 Ошибка проверки готовности: Получить http://192.168.129.102:8080/healthz: набрать tcp 192.168.129.102: 8080: соединение: соединение отклонено

kubectl logs --namespace kube-system kube-state-metrics-7d84474f4d-d5dg7 -c kube-state-metrics

I0514 17: 29: 26.980707 1 main.go: 85] Использование коллекторов по умолчанию
I0514 17: 29: 26.980774 1 main.go: 93] Использование всего пространства имен
I0514 17: 29: 26.980780 1 main.go: 129] метрический белый черный список: внесение в черный список следующих элементов:
W0514 17: 29: 26.980800 1 client_config.go: 549] Ни то, ни другое--kubeconfig ни --master был указан.Использование inClusterConfig.Это может не работать.
I0514 17: 29: 26.983504 1 main.go: 169] Тестирование связи с сервером
F0514 17: 29: 56.984025 1 main.go: 137] Не удалось создать клиент: ОШИБКА, взаимодействующая с apiserver: Get https://10.96.0.1:443/version?timeout=32s: dial tcp 10.96.0.1:443: Тайм-аут ввода-вывода

Я не уверен, что этот IP-адрес 10.96.0.1 правильный.Мои виртуальные машины находятся в мостовой сети 10.10.10.0/24 и сети только для хоста 192.168.59.0/24.При инициализации Kubernetes я использовал аргумент --pod-network-cidr=192.168.0.0/16, так что это еще один диапазон IP-адресов, который я ожидал.Но 10.96.0.1 выглядит незнакомым.

Я новичок в Kubernetes, просто занимаюсь базовыми уроками, поэтому не знаю, что делать сейчас.Как это исправить или исследовать дальше?


EDIT - дополнительная информация:

kubectl get nodes -o wide

NAME                STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
kubernetes-master   Ready    master   15d   v1.14.1   10.10.10.11   <none>        Ubuntu 18.04.2 LTS   4.15.0-48-generic   docker://18.9.2
kubernetes-node1    Ready    <none>   15d   v1.14.1   10.10.10.5    <none>        Ubuntu 18.04.2 LTS   4.15.0-48-generic   docker://18.9.2
kubernetes-node2    Ready    <none>   15d   v1.14.1   10.10.10.98   <none>        Ubuntu 18.04.2 LTS   4.15.0-48-generic   docker://18.9.2

Команда, которую я использовал для инициализации кластера:

sudo kubeadm init --apiserver-advertise-address=192.168.59.20 --pod-network-cidr=192.168.0.0/16

1 Ответ

1 голос
/ 11 июня 2019

Причиной этого, вероятно, является наложение сети Pod на сеть Node - вы устанавливаете CIDR сети Pod на 192.168.0.0/16, в которую будет включена ваша сеть только для хоста, так как ее адрес - 192.168.59.0/24.

Чтобы решить эту проблему, вы можете изменить CIDR для сети pod на 192.168.0.0/24 ( не рекомендуется, так как это даст вам только 255 адресов для вашей сети pod )

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

Также другим способом я попытался:

отредактировать Calico манифест в другом диапазоне (например, 10.0.0.0/8) - sudo kubeadm init --apiserver-advertise-address=192.168.59.20 --pod-network-cidr=10.0.0.0/8) и применить его после инициализации.

Другим способом было бы использовать другой CNI, такой как Flannel (который использует 10.244.0.0/16).

Более подробную информацию о диапазонах плагинов CNI можно найти здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...