Ошибка: кластер 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 также должны работать.