1
votes

I am beginner to kubernetes. I am trying to install minikube wanted to run my application in kubernetes. I am using ubuntu 16.04

I have followed the installation instructions provided here https://kubernetes.io/docs/setup/learning-environment/minikube/#using-minikube-with-an-http-proxy

Issue1: After installing kubectl, virtualbox and minikube I have run the command

minikube start --vm-driver=virtualbox

It is failing with following error

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

But when I checked the virtualbox I see the minikube VM running and when I run the kubectl

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

I see the deployments

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

I exposed the hello-minikube deployment as service

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

I got the url for the service

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

When I try to curl the url I am getting the following error

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

1)If minikube cluster got failed while starting, how did the kubectl able to connect to minikube to do deployments and services? 2) If cluster is fine, then why am i getting connection refused ?

I was looking at this proxy(https://kubernetes.io/docs/setup/learning-environment/minikube/#starting-a-cluster) what is my_proxy in this ?

Is this minikube ip and some port ?

I have tried this

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

but do not understand how #3(set proxy) in solution will be done. Can some one help me getting instructions for proxy ?

Adding the command output which was asked in the comments

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
Can you check the status and logs of your kube-proxy pod? (kubectl get po -n kube-system). The minikube address can be retrieved with minikube ip command.Eduardo Baitello
I deleted minikube and removed all files under ~/.minikube and reinstalled minikube. Now it is working fine. I did not get the output before but I have attached it after it is working to the question. Can you tell me what does the output of this command tells ?VSK
In my case, the below answer helped me. stackoverflow.com/questions/62585798/…theJ

1 Answers

5
votes

I deleted minikube and removed all files under ~/.minikube and reinstalled minikube. Now it is working fine. I did not get the output before but I have attached it after it is working to the question. Can you tell me what does the output of this command tells ?

It will be very difficult or even impossible to tell what was exactly wrong with your Minikube Kubernetes cluster when it is already removed and set up again.

Basically there were a few things that you could do to properly troubleshoot or debug your issue.

Adding the command output which was asked in the comments

The output you posted is actually only part of the task that @Eduardo Baitello asked you to do. kubectl get po -n kube-system command simply shows you a list of Pods in kube-system namespace. In other words this is the list of system pods forming your Kubernetes cluster and, as you can imagine, proper functioning of each of these components is crucial. As you can see in your output the STATUS of your kube-proxy pod is Running:

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

You were also asked in @Eduardo's question to check its logs. You can do it by issuing:

kubectl logs kube-proxy-7ndvl

It could tell you what was wrong with this particular pod at the time when the problem occured. Additionally in such case you may use describe command to see other pod details (sometimes looking at pod events may be very helpful to figure out what's going on with it):

kubectl describe pod kube-proxy-7ndvl

The suggestion to check this particular Pod status and logs was most probably motivated by this fragment of the error messages shown during your Minikube startup process:

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

As you can see this message clearly suggests that there is in short "something wrong" with kube-proxy so it made a lot of sense to check it first.

There is one more thing you may have not noticed:

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

Your hello-minikube service was not completely ready. In EXTERNAL-IP column you can see that its state was pending. As you can use describe command to describe Pods you can do so to get details of the service. Simple:

describe service hello-minikube

could tell you quite a lot in such case.

1)If minikube cluster got failed while starting, how did the kubectl able to connect to minikube to do deployments and services? 2) If cluster is fine, then why am i getting connection refused ?

Remember that Kubernetes Cluster is not a monolith structure and consists of many parts that depend on one another. The fact that kubectl worked and you could create deployment doesn't mean that the whole cluster was working fine and as you can see in the error message it was suggesting that one of its components, namely kube-proxy, could actually not function properly.

Going back to the beginning of your question...

I have followed the installation instructions provided here https://kubernetes.io/docs/setup/learning-environment/minikube/#using-minikube-with-an-http-proxy

Issue1: After installing kubectl, virtualbox and minikube I have run the command

minikube start --vm-driver=virtualbox

as far as I understood you don't use the http proxy so you didn't follow instructions from this particular fragment of the docs that you posted, did you ?

I have the impression that you mix 2 concepts. kube-proxy which is a Kubernetes cluster component and which is deployed as pod in kube-system space and http proxy server mentioned in this fragment of documentation.

I was looking at this proxy(https://kubernetes.io/docs/setup/learning-environment/minikube/#starting-a-cluster) what is my_proxy in this ?

If you don't know what is your http proxy address, most probably you simply don't use it and if you don't use it to connect to the Internet from your computer, it doesn't apply to your case in any way.

Otherwise you need to set it up for your Minikube by providing additional flags when you start it as follows:

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

If you were able to start your Minikube and now it works properly only using the command:

minikube start --vm-driver=virtualbox

your issue was caused by something else and you don't need to provide the above mentioned flags to tell your Minikube what is your http proxy server that you're using.

As far as I understand currently everything is up and running and you can access the url returned by the command minikube service hello-minikube --url without any problem, right ? You can also run the command kubectl get service hello-minikube and check if its output differs from what you posted before. As you didn't attach any yaml definition files it's difficult to tell if it was nothing wrong with your service definition. Also note that Load Balancer is a service type designed to work with external load balancers provided by cloud providers and minikube uses NodePort instead of it.