我正在尝试将我的应用程序部署到 Rancher 管理的 kubernetes 集群 RKE 中。我已经使用 auto devops 在 gitlab 中创建了管道。但是当舵图尝试部署时,我收到此错误。 错误: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
有人可以帮我解决这个问题吗
我在 K3s 上安装 rancher 时遇到了同样的问题,设置 KUBECONFIG 有所帮助。
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
这个anwser为我解决了这个问题。如果您不像我一样在 microk8s 上运行,请省略前缀
[microk8s] kubectl config view --raw > ~/.kube/config
如果以下命令不起作用
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
您可以尝试使用
root
用户安装k3s & helm。
我刚刚遇到了同样的问题。所以发生这种情况是因为你不是 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
这里有一些很好的答案,详细说明了如何解决问题。以下是 O'Reilly 优秀著作《Learning Helm》中的一段话,它深入了解了为什么会发生这种错误:
“使用 Kubernetes 集群 Helm 直接与 Kubernetes API 服务器交互。因此,Helm 需要能够连接到 Kubernetes 集群。 Helm 尝试通过读取 kubectl(主要 Kubernetes 命令行客户端)使用的相同配置文件来自动执行此操作。
Helm 将尝试通过读取环境变量 $KUBECONFIG 来查找此信息。如果未设置,它将在 kubectl 查找的相同默认位置中查找(例如,UNIX、Linux 和 macOS 上的 $HOME/.kube/config)。
您还可以使用环境变量 (HELM_KUBECONTEXT) 和命令行标志 (--kube-context) 覆盖这些设置。您可以通过运行 helm help 查看环境变量和标志的列表。 Helm 维护者建议使用 kubectl 来管理 Kubernetes 凭证,并让 Helm 仅自动检测这些设置。如果您尚未安装 kubectl,最好的起点是官方 Kubernetes 安装文档。”
-Learning Helm,作者:Matt Butcher、Matt Farina 和 Josh Dolitsky (O’Reilly)。版权所有 2021 Matt Butcher,《创新明天》和《血橙》,978-1-492-08365-8。
我也有类似的错误。一些背景上下文:我正在使用多个集群,并且错误地手动编辑了
.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 上运行,并且您从本地 CMD 或 Powershell 控制台调用 Helm,请运行
microk8s kubectl config view --raw > %USERPROFILE%/.kube/config
根据 documentation,将以下条目添加到您的 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 调用也应该可以正常工作。
我在寻找问题时发现了这个页面:
Kubernetes cluster unreachable
。就我而言,我遇到了错误:
Error: INSTALLATION FAILED: Kubernetes cluster unreachable: Get "https://37...
结果我只是忘了运行 minikube 集群:)
minikube start
更新舵
helm repo update
检查
kubectl get all