Ошибка: кластер Kubernetes недоступен: получить "http://localhost: 8080 /version? Timeout=32s": набрать tcp 127.0.0.1:8080: подключиться: в соединении отказано

Я пытаюсь развернуть свое приложение в управляемом Rancher кластере кубернетов RKE. Я создал конвейер в gitlab с помощью auto DevOps. Но когда диаграмма штурвала пытается развернуть, я получаю эту ошибку. Ошибка: кластер Kubernetes недоступен: получить "http://localhost:8080/version? Timeout=32s": набрать tcp 127.0.0.1:8080: подключиться: в соединении отказано

Ниже мой сценарий развертывания:

deploy:
  stage: deploy
  image: cdrx/rancher-gitlab-deploy
  only:
    - master
  script:
    - apk --no-cache add curl
    - curl -L https://get.helm.sh/helm-v3.3.0-rc.1-linux-amd64.tar.gz > helm.tar.gz
    - tar -zxvf helm.tar.gz
    - mv linux-amd64/helm /usr/local/bin/helm
    - helm install mychart ./mychart

Может ли кто-нибудь помочь мне в решении этой проблемы

10 ответов

Я столкнулся с той же проблемой при установке ранчера на K3s, установка KUBECONFIG помогла.

      export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

Этот ответ решил проблему для меня. Если вы не используете microk8s, как я, опустите префикс

      [microk8s] kubectl config view --raw > ~/.kube/config

У меня была такая же проблема. Так что это происходит потому, что вы не являетесь пользователем root,

      sudo su

затем выполните экспорт и все остальные команды

      export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

helm install cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --version v1.7.1

Если следующая команда не работает

      export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

можно попробовать использоватьrootпользователь для установки k3s и helm.

Здесь есть несколько хороших ответов, в которых указано, как решить проблему. Вот отрывок из превосходной книги О'Рейли «Learning Helm», который дает представление о том, почему происходит эта ошибка:

«Работа с кластерами Kubernetes Helm напрямую взаимодействует с сервером Kubernetes API. По этой причине Helm должен иметь возможность подключаться к кластеру Kubernetes. Helm пытается сделать это автоматически, считывая те же файлы конфигурации, которые используются kubectl (основная команда Kubernetes -лайн клиент).

Helm попытается найти эту информацию, прочитав переменную окружения $KUBECONFIG. Если он не установлен, он будет искать в тех же местах по умолчанию, в которых ищет kubectl (например, $ HOME / .kube / config в UNIX, Linux и macOS).

Вы также можете переопределить эти настройки с помощью переменных среды (HELM_KUBECONTEXT) и флагов командной строки (--kube-context). Вы можете увидеть список переменных и флагов окружения, запустив helm help. Сопровождающие Helm рекомендуют использовать kubectl для управления вашими учетными данными Kubernetes и позволить Helm просто определять эти настройки автоматически. Если вы еще не установили kubectl, лучше всего начать с официальной документации по установке Kubernetes ".

-Learning Helm от Мэтта Батчера, Мэтта Фарины и Джоша Долицки (О'Рейли). Авторское право 2021 Мэтт Батчер, Innovating Tomorrow и Blood Orange, 978-1-492-08365-8.

Я нашел эту страницу, когда искал проблему:Kubernetes cluster unreachable. В моем случае я столкнулся с ошибкой:

      Error: INSTALLATION FAILED: Kubernetes cluster unreachable: Get "https://37...

А оказалось, что я просто забыл запустить миникуб-кластер :)

      minikube start

убедитесь, что вы используете последние версии. Я столкнулся с той же проблемой. Я решил это, обновив docker.

У меня была аналогичная ошибка. Немного предыстории: я работал с несколькими кластерами и по ошибке отредактировал.kube/configвручную. Это привело к неправильной конфигурации сcontext.cluster,context.userотсутствуют параметры. Я ввел эти значения вручную, и все снова заработало.

Перед исправлением,configфайл имел такую ​​часть:

      contexts:
- context:
    cluster: ""
    user: ""
  name: ""

Я обновил его как

      contexts:
- context:
    cluster: <NAME-OF-THE-CLUSTER>
    user: <USERNAME>
  name: <CONTEXT-NAME>

Чтобы обновить значения, я использовал значения изkubectl config get-contexts(У меня был вывод вышеуказанной команды в истории терминала, что помогло в обновлении).

Если ваша установка microk8s работает в Windows 11 и вы вызываете Helm из локальной CMD-или Powershell-Console, запустивmicrok8s kubectl config view --raw > %USERPROFILE%/.kube/configсогласно документации , в вашу конфигурацию kube будет добавлена ​​следующая запись:

      clusters:
- cluster:
    certificate-authority-data: ...
    server: https://127.0.0.1:16443
  name: microk8s-cluster

С точки зрения Windows, на локальном хосте нет прослушивателя порта 16443. Вместо этого используйте IP-адрес, возвращаемый следующей командой, в качестве адреса вашего сервера:

      microk8s kubectl describe node | FIND "InternalIP"

После того, как вы обновите файл конфигурации kube таким образом, ваши вызовы Helm также должны работать.

Обновить штурвал

helm repo update

Проверять

kubectl get all

Другие вопросы по тегам