minikube服务网址连接被拒绝

时间:2019-11-07 16:21:46

标签: kubernetes virtualbox kubectl minikube

我是kubernetes的初学者。我正在尝试安装minikube,希望在kubernetes中运行我的应用程序。我正在使用ubuntu 16.04

我已按照此处提供的安装说明进行操作 https://kubernetes.io/docs/setup/learning-environment/minikube/#using-minikube-with-an-http-proxy

问题1: 安装kubectl,virtualbox和minikube之后,我已经运行了命令

minikube start --vm-driver=virtualbox

失败,出现以下错误

Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
E0912 17:39:12.486830   17689 start.go:305] Error restarting 
cluster:  restarting kube-proxy: waiting for kube-proxy to be 
up for configmap update: timed out waiting for the condition

但是当我检查virtualbox时,我看到minikube VM正在运行,当我运行kubectl

kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10

我看到了部署

 kubectl get deployment
NAME             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
hello-minikube   1         1         1            1           27m

我将hello-minikube部署公开为服务

kubectl get service
NAME             TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
hello-minikube   LoadBalancer   10.102.236.236   <pending>     8080:31825/TCP   15m
kubernetes       ClusterIP      10.96.0.1        <none>        443/TCP          19h

我知道了该服务的网址

minikube service hello-minikube --url
http://192.168.99.100:31825

当我尝试卷曲URL时,出现以下错误

curl http://192.168.99.100:31825
curl: (7) Failed to connect to 192.168.99.100 port 31825: Connection refused

1)如果minikube集群启动时出现故障,kubectl如何连接到minikube进行部署和服务? 2)如果集群正常,那么为什么我的连接被拒绝?

我正在查看此代理(https://kubernetes.io/docs/setup/learning-environment/minikube/#starting-a-cluster),这是什么my_proxy?

这个minikube ip和一些端口吗?

我已经尝试过了

Error restarting cluster: restarting kube-proxy: waiting for kube-proxy to be up for configmap update: timed out waiting for the condition

,但不了解解决方案中的#3(设置代理)将如何完成。有人可以帮助我获得代理说明吗?

添加注释中要求的命令输出

kubectl get po -n kube-system
NAME                                    READY   STATUS    RESTARTS   AGE
etcd-minikube                           1/1     Running   0          4m
kube-addon-manager-minikube             1/1     Running   0          5m
kube-apiserver-minikube                 1/1     Running   0          4m
kube-controller-manager-minikube        1/1     Running   0          6m
kube-dns-86f4d74b45-sdj6p               3/3     Running   0          5m
kube-proxy-7ndvl                        1/1     Running   0          5m
kube-scheduler-minikube                 1/1     Running   0          5m
kubernetes-dashboard-5498ccf677-4x7sr   1/1     Running   0          5m
storage-provisioner                     1/1     Running   0          5m

1 个答案:

答案 0 :(得分:1)

  

我删除了minikube并删除了〜/ .minikube下的所有文件,然后   重新安装了minikube。现在工作正常。我没有得到输出   之前,但是在解决该问题之后,我已经附加了它。能够   您告诉我该命令的输出说明什么?

Minikube Kubernetes集群已经被删除并重新设置时,要说出到底出了什么问题是非常困难的,甚至是不可能的。

基本上,您可以采取一些措施来适当地排除故障或调试问题。

  

添加注释中要求的命令输出

您发布的输出实际上只是@Eduardo Baitello要求您执行的任务的一部分。 kubectl get po -n kube-system命令仅向您显示Pods命名空间中的kube-system列表。换句话说,这是构成Kubernetes集群的系统Pod的列表,并且您可以想象,每个组件的正常运行至关重要。正如您在输出中看到的,STATUS窗格中的kube-proxyRunning

kube-proxy-7ndvl                        1/1     Running   0          5m

在@Eduardo的问题中还要求您检查其日志。您可以通过发出以下命令来做到这一点:

kubectl logs kube-proxy-7ndvl

它可以告诉您问题发生时该特定Pod出了什么问题。另外,在这种情况下,您可以使用describe命令查看其他Pod详细信息(有时查看pod事件可能对弄清发生的情况很有帮助):

kubectl describe pod kube-proxy-7ndvl

检查此特定Pod状态和日志的建议很可能是由于在Minikube启动过程中显示的以下错误消息片段引起的:

E0912 17:39:12.486830   17689 start.go:305] Error restarting 
cluster:  restarting kube-proxy: waiting for kube-proxy to be 
up for configmap update: timed out waiting for the condition

正如您所看到的,该消息清楚地表明kube-proxy简而言之是“出问题了”,因此首先进行检查很有意义。

您可能还没有注意到的一件事:

kubectl get service
NAME             TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
hello-minikube   LoadBalancer   10.102.236.236   <pending>     8080:31825/TCP   15m
kubernetes       ClusterIP      10.96.0.1        <none>        443/TCP          19h

您的hello-minikube服务尚未完全就绪。在EXTERNAL-IP列中,您可以看到其状态为pending。您可以使用describe命令来描述Pods,因此可以获取服务的详细信息。简单:

describe service hello-minikube

在这种情况下可以告诉您很多信息。

  

1)如果minikube集群启动时失败,kubectl怎么做   能够连接到minikube进行部署和服务? 2)如果   群集很好,那么为什么我的连接被拒绝了?

请记住, Kubernetes集群不是整体结构,而是由许多相互依赖的部分组成。 kubectl可以工作并且可以创建部署这一事实并不意味着整个集群都可以正常工作,并且您可以从错误消息中看到,它暗示它的一个组成部分,即kube-proxy,实际上可能无法正常工作。

回到问题的开头...

  

我已按照此处提供的安装说明进行操作   https://kubernetes.io/docs/setup/learning-environment/minikube/#using-minikube-with-an-http-proxy

     

问题1:安装了kubectl,virtualbox和minikube之后,我已经运行了   命令

minikube start --vm-driver=virtualbox

据我了解,您没有使用http代理,因此您没有按照发布的文档的特定片段中的说明进行操作,对吗?

我给您留下了两个概念的印象。 kube-proxy是一个Kubernetes cluster组件,已作为pod部署在kube-system空间中,并在文档的http proxy server片段中提到了this

  

我在看这个   代理(https://kubernetes.io/docs/setup/learning-environment/minikube/#starting-a-cluster)   什么是my_proxy?

如果您不知道您的http proxy地址是什么,很可能您根本就不使用它,并且如果不使用它来从计算机连接到Internet, 这完全不适用于您的情况

否则,您需要通过providing additional flags when you start it为您的 Minikube 进行设置,如下所示:

minikube start --docker-env http_proxy=http://$YOURPROXY:PORT \
                 --docker-env https_proxy=https://$YOURPROXY:PORT

如果您能够启动 Minikube ,现在它只能使用以下命令正常运行:

minikube start --vm-driver=virtualbox

您的问题是由其他原因引起的,并且您无需提供上述标志即可告诉 Minikube 您正在使用的http代理服务器是什么

据我所知,目前一切正常,您可以访问命令minikube service hello-minikube --url返回的url,对吗?您还可以运行命令kubectl get service hello-minikube,并检查其输出是否与之前发布的不同。由于您没有附加任何yaml定义文件,因此很难确定服务定义是否没有问题。还要注意,Load Balancer是一种服务类型,旨在与云提供商提供的外部负载均衡器一起使用,并且minikube使用NodePort代替它。