Рейтинг:0

`kubectl` в соединении с сервером было отказано

флаг cn

Я следил за Келси Хайтауэр. Kubernetes: трудный путь который проведет вас через ручную настройку кластера k8s.

Это нет работает на миникубе - работает на удаленном VPS.

Я нахожусь на этапе настройки плоскости управления k8s.

Однако при попытке запустить проверку работоспособности на kube-apiserver Я получаю следующее:

$ kubectl cluster-info --kubeconfig admin.kubeconfig

Для дальнейшей отладки и диагностики проблем с кластером используйте «дамп информации о кластере kubectl».
В соединении с сервером 127.0.0.1:6443 было отказано - вы указали правильный хост или порт?

Я не совсем уверен, с чего начать отладку отсюда.

Конфигурация

Все 3 сервиса k8s работают:

статус systemctl kube-apiserver kube-controller-manager kube-scheduler etcd

# => Все 4 возвращают: "активен (работает)"

kube-apiserver настроен на начало с системад:

 $ cat /etc/systemd/system/kube-apiserver.service
[Ед. изм]
Описание=Сервер API Kubernetes
Документация=https://github.com/kubernetes/kubernetes

[Оказание услуг]
ExecStart=/usr/local/bin/kube-apiserver \
  --advertise-address=$INTERNAL_IP_REDACTED \
  --allow-привилегированный = истина \
  --apiserver-count=3 \
  --audit-log-maxage=30 \
  --audit-log-maxbackup=3 \
  --audit-log-maxsize=100 \
  --audit-log-path=/var/log/audit.log \
  --authorization-mode=Узел,RBAC\
  --bind-адрес=0.0.0.0 \
  --client-ca-file=/var/lib/kubernetes/ca.pem \
  --enable-admission-plugins=NamespaceLifecycle,NodeRestriction,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota \
  --etcd-cafile=/var/lib/kubernetes/ca.pem \
  --etcd-certfile=/var/lib/kubernetes/kubernetes.pem \
  --etcd-keyfile=/var/lib/kubernetes/kubernetes-key.pem \
  --etcd-servers=https://10.240.0.10:2379,https://10.240.0.11:2379,https://10.240.0.12:2379 \
  --event-ttl=1ч \
  --encryption-provider-config=/var/lib/kubernetes/encryption-config.yaml \
  --kubelet-certificate-authority=/var/lib/kubernetes/ca.pem \
  --kubelet-client-certificate=/var/lib/kubernetes/kubernetes.pem \
  --kubelet-client-key=/var/lib/kubernetes/kubernetes-key.pem \
  --runtime-config='api/all=true' \
  --service-account-key-file=/var/lib/kubernetes/service-account.pem \
  --service-account-signing-key-file=/var/lib/kubernetes/service-account-key.pem \
  --service-account-issuer=https://$EXTERNAL_IP_REDACTED:6443 \
  --service-cluster-ip-range=10.32.0.0/24 \
  --service-node-port-range=30000-32767 \
  --tls-cert-file=/var/lib/kubernetes/kubernetes.pem \
  --tls-private-key-file=/var/lib/kubernetes/kubernetes-key.pem \
  --v=2
Перезапуск = при сбое
Рестартсек=5

[Установить]
WantedBy=многопользовательская.цель

kube-apiserver определенно работает и слушает порт :6443

 $ lsof -iTCP -sTCP:LISTEN -n -P | группа 6443
kube-apis 989442 root 7u IPv6 9345693 0t0 TCP *:6443 (СЛУШАТЬ)

Здесь admin.kubeconfig файл, настроенный для поиска кластера в 127.0.0.1:6443

апиВерсия: v1
кластеры:
- кластер:
    данные центра сертификации: LS0tL...
    сервер: https://127.0.0.1:6443
  имя: kubernetes-жесткий-путь
контексты:
- контекст:
    кластер: kubernetes-жесткий путь
    пользователь: админ
  имя: по умолчанию
текущий контекст: по умолчанию
вид: Конфигурация
предпочтения: {}
пользователи:
- имя: админ
  пользователь:
    данные сертификата клиента: LS0tLS1CRU...
    клиент-ключ-данные: LS0tLS1C....

Подготовлен SSL-сертификат (создан ранее в руководстве по Kubernetes).

$ ls -hlt /var/lib/kubernetes/ca*
-rw------- 1 root root 1.7K 18 дек 00:56 /var/lib/kubernetes/ca-key.pem
-rw-r--r-- 1 root root 1.3K 18 дек 00:56 /var/lib/kubernetes/ca.pem

Наконец, NGINX также настроен на перенаправление порт 80 трафик к конечной точке проверки работоспособности

$ cat /etc/nginx/sites-available/kubernetes.default.svc.cluster.local
сервер {
  слушать 80;
  имя_сервера kubernetes.default.svc.cluster.local;

  местоположение/здоровье {
     proxy_pass https://127.0.0.1:6443/healthz;
     proxy_ssl_trusted_certificate /var/lib/kubernetes/ca.pem;
  }
}

Как упоминалось выше, я действительно не вижу, что не так, и Я понятия не имею, с чего еще начать расследование.

Спасибо!

флаг jp
Вы запускаете `kubectl` на том же хосте, где работает `kube-apiserver`?
abhchand avatar
флаг cn
@AlexD - правильно, я запускаю его на том же хосте.
флаг jp
проверьте вывод `env |grep -i proxy`.
Rajesh Dutta avatar
флаг br
Каково значение INTERNAL_IP_REDACTED? Я спрашиваю об этом, потому что хочу убедиться, что вы отправляете запрос правильной цели, которая также занесена в белый список в сертификате сервера.
abhchand avatar
флаг cn
@RajeshDutta, эта отредактированная строка `--advertise-address=10.132.0.5`. Внутренний IP был определен из `ifconfig`. Спасибо!
abhchand avatar
флаг cn
@AlexD нет вывода, возвращаемого из `env | grep -я прокси`. Спасибо!
Rajesh Dutta avatar
флаг br
@abhchand 10.132.0.5 — это внутренний IP-адрес, и я думаю, что он получен из сетевого диапазона POD. Попробуйте пропинговать этот IP-адрес с узла, на котором вы пытаетесь выполнить команду kubectl. Сомневаюсь, что вы получите ответ. Если вы хотите получить доступ к этому за пределами главного узла, вам понадобится внешний балансировщик нагрузки или вам нужно объявить сервер kube-api, используя IP-адрес узла (при условии, что IP-адрес должен быть указан в сертификате сервера).
Рейтинг:0
флаг cn

Я следовал тому же руководству шаг за шагом, чтобы воссоздать развертывание.

Я обнаружил, что вы можете запускать команду вне контроллера vm.

Пожалуйста, введите следующую команду для входа в виртуальную машину контроллера:

gcloud вычисляет ssh-контроллер-0

Затем повторите команду cluster-info

информация о кластере kubectl --kubeconfig admin.kubeconfig

Вот мой вывод при выполнении теста.

Пример из контроллера-1 VM

ЗАПУСК КОМАНДЫ ВНУТРИ КОНТРОЛЛЕРА-1 VM

xxxxxxx_ayadeltoro@controller-1:~$ kubectl cluster-info --kubeconfig admin.kubeconfig
Плоскость управления Kubernetes работает по адресу https://127.0.0.1:6443.
 
Для дальнейшей отладки и диагностики проблем с кластером используйте «дамп информации о кластере kubectl».
infosys_ayaladeltoro@controller-1:~$ curl -H "Хост: kubernetes.default.svc.cluster.local" -i http://127.0.0.1/healthz
HTTP/1.1 200 ОК
Сервер: nginx/1.18.0 (Ubuntu)
Дата: пятница, 24 декабря 2021 г., 18:57:54 по Гринвичу
Content-Type: текстовый/обычный; кодировка = utf-8
Длина содержимого: 2
Соединение: Keep-alive
Cache-Control: без кэша, приватный
X-Content-Type-Options: nosniff
X-Kubernetes-Pf-Flowschema-Uid: 88df1f3d-a43f-4f2d-b2b6-661e0cd190f2
X-Kubernetes-Pf-Prioritylevel-Uid: cd1dd298-6e5e-4091-aac6-baf7c816ba6b

ВЫХОД КОНТРОЛЛЕРА-1 ВМ

xxxxxxx_ayadeltoro@controller-1:~$ выход
logoutСоединение с 34.83.87.134 закрыто.

ЗАПУСК КОМАНДЫ ИЗ CLOUD SHELL VM

xxxxxxx_ayadeltoro@cloudshell:~ (ayadeltoro-training-project)$ kubectl cluster-info --kubeconfig admin.kubeconfig
Для дальнейшей отладки и диагностики проблем с кластером используйте «kubectl cluster-info dump». В подключении к серверу 127.0.0.1:6443 было отказано — вы указали правильный хост или порт?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.