无法连接到服务器:dial tcp [::1]:8080: connectex: No connection could be because the target machine actively refused
Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it
我正在研究 Azure Kubernates,我们可以在 Azure 中存储 Docker 图像。我正在尝试检查我的 kubectl 版本,然后得到
Unable to connect to the server: dial tcp [::1]:8080: connectex: No
connection could be made because the target machine actively refused
it.
为此我关注了MSDN:uilding Microservices with AKS and VSTS – Part 2 and MSDOCS:Kubernetes on windows
那么,你能建议我“如何解决这个问题吗?”
我认为您可能错过了配置集群的机会,为此您需要在命令提示符下 运行 下面的命令。
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
上述 CLI 命令会在您的本地计算机中创建包含完整集群和节点详细信息的 .config 文件。
之后,您在命令提示符下 运行 kubectl get nodes
命令,然后您可以获取集群内的节点列表,如下图所示。
我在执行命令时遇到了同样的错误 "kubectl get pods"
问题已通过以下步骤解决:
a) 先找出current-context
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
b) 如果未设置上下文,则使用
手动设置它
kubectl config set-context <Your context>
希望对您有所帮助。
对我来说,这似乎是由于 Windows 没有设置 HOME 环境变量。根据文档 kubectl
将使用配置文件 $(HOME)/.kube/config
。但由于此变量未在 Window 上设置,因此无法找到该文件。
我创建了一个与 USERPROFILE 具有相同值的 HOME 变量,它开始工作了。
如果您可以通过转至 $HOME/.kube/config
- Linux 或 %UserProfile%/.kube/config
- [=17 来查看配置文件是否已正确配置=]Windows 但您仍然收到错误消息 - 请以管理员身份尝试 运行 命令行。
可以在此处找到有关配置文件的更多信息:https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
我在本地 Windows 上使用 Hyper-V,我遇到了这个错误,因为我没有配置 minikube。
(我知道问题是关于 Azure,而不是 minikube。但是这篇文章在错误消息的顶部。所以,我把解决方案放在这里。)
1.启用 Hyper-V。
在您的终端上输入 systeminfo
。如果你能找到下面这行,
Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed.
Hyper-V 工作正常。
如果你不能,enable it from settings.
2。创建 Hyper-V 网络交换机
打开 Hyper-V 管理器。 (搜索是最快的方法。)
接下来,单击左侧的 PC 名称。
然后,您可以在右侧找到Virtual Switch Manager 菜单。
点击它并选择名称为外部虚拟交换机:"Minikube Switch"
点击应用创建它。
3。启动 minikube
返回终端并输入:
minikube start --vm-driver hyperv --hyperv-virtual-switch "Minikube Switch"
有关详细信息,check the steps in this article。
即使配置正确(通过 运行 azure cli 命令),我也遇到了完全相同的问题。
kubectl 似乎需要 HOME env.variable 设置,但它对我来说不存在。但是有一个解决方案:
如果您添加指向配置的 KUBECONFIG 环境变量,它将开始工作。
示例:
setx KUBECONFIG %UserProfile%\.kube\config
当变量存在时,kubectl 从文件读取没有问题。
P.S。它是另一个答案中建议的设置 HOME 变量的替代方法。
就我而言,我在 az aks k8s
集群和本地 docker-desktop
之间摇摆不定。
因此,每次我更改集群上下文时,我都需要重新启动 docker,否则我会得到相同的描述错误。
Unable to connect to the server: dial tcp 127.0.0.1:6443: connectex: No connection could be made because the target machine actively refused it.
PS:确保您的集群已启动,如图所示(停止本地集群)
检查 docker 是 运行 并且您启动了 minikube 或您使用的任何云 kube。
我的问题在 运行“minikube start --driver=docker”
后解决
我遇到了类似的问题:
> kubectl cluster-info
"To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Unable to connect to the server: dial tcp xxx.x.x.x:8080: connectex: No connection could be made because the target machine actively refused it."
> kubectl cluster-info dump
Unable to connect to the server: dial tcp xxx.0.0.x:8080: connectex: No connection could be made because the target machine actively refused it.
此设置运行良好,直到 Docker for Desktop 购买了它自己的 kubectl 副本。有两种方法可以克服这种情况:
1 - 在使用集群时退出/停止桌面 Docker
2 - 设置 KUBECONFIG 文件路径
我尝试了这两个选项,它们都有效。
找到了 .kube/config 的良好来源,将其发送到此处以供快速参考:
apiVersion: v1
clusters:
- cluster:
certificate-authority: fake-ca-file
server: https://1.2.3.4
name: development
- cluster:
insecure-skip-tls-verify: true
server: https://5.6.7.8
name: scratch
contexts:
- context:
cluster: development
namespace: frontend
user: developer
name: dev-frontend
- context:
cluster: development
namespace: storage
user: developer
name: dev-storage
- context:
cluster: scratch
namespace: default
user: experimenter
name: exp-scratch
current-context: ""
kind: Config
preferences: {}
users:
- name: developer
user:
client-certificate: fake-cert-file
client-key: fake-key-file
- name: experimenter
user:
password: some-password
username: exp
Reference: https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
关注@ilya-chernomordik,
我通过
将我的配置路径添加到系统变量
setx KUBECONFIG "D:\Minikube\Minikube.minikube\config"
我已将默认位置从 C: 驱动器更改为 D: 驱动器,因为我在 C 中的 space 较少。
现在问题已解决。
编辑:5 分钟后,api 服务器再次停止。我试图解决这个问题已经超过 5-6 个小时了。我不确定为什么会出现这个问题,即使在添加了 coreect 路径之后也是如此。
Azure 自托管代理没有访问 Kubernetes 集群的权限:
Remove Azure self-hosted agent - .\config.cmd Remove
configure again ( .\config.cmd) with a user have permission to access Kubernates cluster
如果您的 minikube 或 kind 未配置,则基本上会出现此问题。只需尝试重新启动您的 minikube 或 kind。如果这不能解决您的问题,请尝试重新启动 minikube 使用的管理程序。
minikube start
这个命令解决了我的问题。
我在 windows 10,我没有启用 kubernetes。
如您所见,没有可用的上下文。
所以进入 docker 桌面的设置并按如下方式启用它。
现在运行命令如下。
kubectl config get-contexts
确保你看到这样的东西。
您也可以尝试如下列出节点。
kubectl get nodes
如果您在 windows 上遇到此错误,可能是您的 docker 实例不是 运行。
这些是我复制上述错误所遵循的步骤;
- 已停止 docker,然后尝试启动 nginx 部署。这样做会导致上述错误发生。
我是怎么解决的?
检查 minikube 是否 运行 在我的例子中这不是 运行
启动minikube
重试应用上面的配置。就我而言,请参见下面的屏幕截图
- 当您看到您的部署已创建时,一切都应该没问题。
我正在研究 Azure Kubernates,我们可以在 Azure 中存储 Docker 图像。我正在尝试检查我的 kubectl 版本,然后得到
Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it.
为此我关注了MSDN:uilding Microservices with AKS and VSTS – Part 2 and MSDOCS:Kubernetes on windows
那么,你能建议我“如何解决这个问题吗?”
我认为您可能错过了配置集群的机会,为此您需要在命令提示符下 运行 下面的命令。
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
上述 CLI 命令会在您的本地计算机中创建包含完整集群和节点详细信息的 .config 文件。
之后,您在命令提示符下 运行 kubectl get nodes
命令,然后您可以获取集群内的节点列表,如下图所示。
我在执行命令时遇到了同样的错误 "kubectl get pods"
问题已通过以下步骤解决:
a) 先找出current-context
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
b) 如果未设置上下文,则使用
手动设置它kubectl config set-context <Your context>
希望对您有所帮助。
对我来说,这似乎是由于 Windows 没有设置 HOME 环境变量。根据文档 kubectl
将使用配置文件 $(HOME)/.kube/config
。但由于此变量未在 Window 上设置,因此无法找到该文件。
我创建了一个与 USERPROFILE 具有相同值的 HOME 变量,它开始工作了。
如果您可以通过转至 $HOME/.kube/config
- Linux 或 %UserProfile%/.kube/config
- [=17 来查看配置文件是否已正确配置=]Windows 但您仍然收到错误消息 - 请以管理员身份尝试 运行 命令行。
可以在此处找到有关配置文件的更多信息:https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
我在本地 Windows 上使用 Hyper-V,我遇到了这个错误,因为我没有配置 minikube。
(我知道问题是关于 Azure,而不是 minikube。但是这篇文章在错误消息的顶部。所以,我把解决方案放在这里。)
1.启用 Hyper-V。
在您的终端上输入 systeminfo
。如果你能找到下面这行,
Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed.
Hyper-V 工作正常。
如果你不能,enable it from settings.
2。创建 Hyper-V 网络交换机
打开 Hyper-V 管理器。 (搜索是最快的方法。)
接下来,单击左侧的 PC 名称。
然后,您可以在右侧找到Virtual Switch Manager 菜单。
点击它并选择名称为外部虚拟交换机:"Minikube Switch"
点击应用创建它。
3。启动 minikube
返回终端并输入:
minikube start --vm-driver hyperv --hyperv-virtual-switch "Minikube Switch"
有关详细信息,check the steps in this article。
即使配置正确(通过 运行 azure cli 命令),我也遇到了完全相同的问题。
kubectl 似乎需要 HOME env.variable 设置,但它对我来说不存在。但是有一个解决方案:
如果您添加指向配置的 KUBECONFIG 环境变量,它将开始工作。
示例:
setx KUBECONFIG %UserProfile%\.kube\config
当变量存在时,kubectl 从文件读取没有问题。
P.S。它是另一个答案中建议的设置 HOME 变量的替代方法。
就我而言,我在 az aks k8s
集群和本地 docker-desktop
之间摇摆不定。
因此,每次我更改集群上下文时,我都需要重新启动 docker,否则我会得到相同的描述错误。
Unable to connect to the server: dial tcp 127.0.0.1:6443: connectex: No connection could be made because the target machine actively refused it.
PS:确保您的集群已启动,如图所示(停止本地集群)
检查 docker 是 运行 并且您启动了 minikube 或您使用的任何云 kube。 我的问题在 运行“minikube start --driver=docker”
后解决我遇到了类似的问题:
> kubectl cluster-info
"To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Unable to connect to the server: dial tcp xxx.x.x.x:8080: connectex: No connection could be made because the target machine actively refused it."
> kubectl cluster-info dump
Unable to connect to the server: dial tcp xxx.0.0.x:8080: connectex: No connection could be made because the target machine actively refused it.
此设置运行良好,直到 Docker for Desktop 购买了它自己的 kubectl 副本。有两种方法可以克服这种情况:
1 - 在使用集群时退出/停止桌面 Docker
2 - 设置 KUBECONFIG 文件路径
我尝试了这两个选项,它们都有效。
找到了 .kube/config 的良好来源,将其发送到此处以供快速参考:
apiVersion: v1
clusters:
- cluster:
certificate-authority: fake-ca-file
server: https://1.2.3.4
name: development
- cluster:
insecure-skip-tls-verify: true
server: https://5.6.7.8
name: scratch
contexts:
- context:
cluster: development
namespace: frontend
user: developer
name: dev-frontend
- context:
cluster: development
namespace: storage
user: developer
name: dev-storage
- context:
cluster: scratch
namespace: default
user: experimenter
name: exp-scratch
current-context: ""
kind: Config
preferences: {}
users:
- name: developer
user:
client-certificate: fake-cert-file
client-key: fake-key-file
- name: experimenter
user:
password: some-password
username: exp
Reference: https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
关注@ilya-chernomordik, 我通过
将我的配置路径添加到系统变量setx KUBECONFIG "D:\Minikube\Minikube.minikube\config"
我已将默认位置从 C: 驱动器更改为 D: 驱动器,因为我在 C 中的 space 较少。
现在问题已解决。
编辑:5 分钟后,api 服务器再次停止。我试图解决这个问题已经超过 5-6 个小时了。我不确定为什么会出现这个问题,即使在添加了 coreect 路径之后也是如此。
Azure 自托管代理没有访问 Kubernetes 集群的权限:
Remove Azure self-hosted agent - .\config.cmd Remove
configure again ( .\config.cmd) with a user have permission to access Kubernates cluster
如果您的 minikube 或 kind 未配置,则基本上会出现此问题。只需尝试重新启动您的 minikube 或 kind。如果这不能解决您的问题,请尝试重新启动 minikube 使用的管理程序。
minikube start
这个命令解决了我的问题。
我在 windows 10,我没有启用 kubernetes。
如您所见,没有可用的上下文。
所以进入 docker 桌面的设置并按如下方式启用它。
现在运行命令如下。
kubectl config get-contexts
确保你看到这样的东西。
您也可以尝试如下列出节点。
kubectl get nodes
如果您在 windows 上遇到此错误,可能是您的 docker 实例不是 运行。
这些是我复制上述错误所遵循的步骤;
- 已停止 docker,然后尝试启动 nginx 部署。这样做会导致上述错误发生。
我是怎么解决的?
检查 minikube 是否 运行 在我的例子中这不是 运行
启动minikube
重试应用上面的配置。就我而言,请参见下面的屏幕截图
- 当您看到您的部署已创建时,一切都应该没问题。