回答问题

我是 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

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

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 和一些端口吗?

我试过这个

重启集群时出错:重启 kube-proxy:等待 kube-proxy 为 configmap 更新:超时等待条件

但不明白解决方案中的#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

Answers

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

当您的 Minikube Kubernetes 集群 已经被移除并重新设置时,很难甚至无法判断它到底出了什么问题。

基本上,您可以做一些事情来正确解决或调试您的问题。

添加评论中询问的命令输出

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

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 Cluster 不是一个整体结构,它由许多相互依赖的部分组成。kubectl工作并且您可以创建部署的事实并不意味着整个集群工作正常,正如您在错误消息中看到的那样,它表明它的一个组件,即kube-proxy,实际上无法正常工作。

回到你问题的开头......

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

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

minikube 启动 --vm-driveru003dvirtualbox

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

我的印象是你混合了两个概念。kube-proxy是一个Kubernetes cluster组件,部署为kube-system空间中的 pod 和http 代理服务器在这个文档片段中提到。

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

如果您不知道您的http代理地址是什么,很可能您根本不使用它,如果您不使用它从您的计算机连接到Internet,它不适用于你的情况以任何方式

否则,您需要通过为您的 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代替它。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐