Ошибка Kube-state-metrics: не удалось создать клиента:... тайм-аут ввода-вывода

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

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: dial tcp 192.168.129.102:8080: connect: соединение отклонено

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: Получить https://10.96.0.1:443/version?timeout=32s: набрать tcp 10.96.0.1:443: i/время ожидания

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

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


РЕДАКТИРОВАТЬ - дополнительная информация:

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

Причиной этого, вероятно, является наложение сети 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 здесь.