URL-адрес службы minikube отклонен - PullRequest
0 голосов
/ 07 ноября 2019

Я новичок в 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

Но когда я проверил виртуальную коробку, я вижу, что виртуальная машина minikube работает, и когда я запускаю 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

Я получил URL для службы

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 в этом?

Это ip 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

1 Ответ

0 голосов
/ 13 ноября 2019

Я удалил миникуб и удалил все файлы в ~ / .minikube и переустановил миникуб. Сейчас работает нормально. Я не получил вывод раньше, но я приложил его после того, как он работает с вопросом. Можете ли вы сказать мне, что говорит вывод этой команды?

Будет очень трудно или даже невозможно сказать, что именно не так с вашим кластером Minikube Kubernetes , когда онуже удален и настроен заново.

По сути, есть несколько вещей, которые вы могли бы сделать, чтобы правильно устранить неполадки или отладить вашу проблему.

Добавление вывода команды, который был задан в комментариях

Вывод, который вы опубликовали, на самом деле является лишь частью задачи, которую @Eduardo Baitello попросил вас выполнить. Команда kubectl get po -n kube-system просто показывает вам список Pods в kube-system пространстве имен. Другими словами, это список системных модулей, формирующих ваш кластер Kubernetes, и, как вы можете себе представить, правильное функционирование каждого из этих компонентов имеет решающее значение. Как вы видите в выводе, STATUS вашего модуля kube-proxy равен Running:

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

В вопросе @ Eduardo вас также попросили проверить его логи. Вы можете сделать это, набрав:

kubectl logs kube-proxy-7ndvl

Это может сказать вам, что не так с этим конкретным модулем в то время, когда возникла проблема. Кроме того, в таком случае вы можете использовать команду describe для просмотра других сведений о модуле (иногда для выяснения того, что с ним происходит, иногда полезно посмотреть на события модуля):

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 start --vm-driver=virtualbox

, насколько я понял, вы не используете прокси-сервер http, поэтому вы не следовали инструкциям этого конкретного фрагмента документов, которые выопубликовал, а вы?

У меня сложилось впечатление, что вы смешиваете 2 понятия. kube-proxy, который является Kubernetes cluster компонентом и который развернут как pod в kube-system пространстве и http прокси-сервере , упомянутом в этом фрагменте документации.

Я искал этот прокси (https://kubernetes.io/docs/setup/learning-environment/minikube/#starting-a-cluster) что такое my_proxy в этом?

Если вы не знаете, какой у вас httpадрес прокси , скорее всего, вы просто не используете его, и если вы не используете его для подключения к Интернету со своего компьютера, это никак не относится к вашему делу .

В противном случае вам необходимо настроить его для 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 прокси-сервер вы используете .

Насколько я понимаю, в настоящее время все работает и работаети вы можете без проблем получить доступ к URL, возвращенному командой minikube service hello-minikube --url, верно? Вы также можете запустить команду kubectl get service hello-minikube и проверить, отличается ли ее вывод от того, что вы опубликовали ранее. Поскольку вы не прикрепляли какие-либо файлы определения yaml, трудно сказать, не было ли ничего плохого в определении вашего сервиса. Также обратите внимание, что Load Balancer - это тип сервиса, разработанный для работы с внешними балансировщиками нагрузки, предоставляемыми облачными провайдерами, и вместо него в мини-кубе используется NodePort.

...