Ответ 1
Просто следуйте инструкциям: https://cloud.google.com/container-engine/docs/before-you-begin до http://kubernetes.io/docs/hellonode/
Я следил за учебником helloword на http://kubernetes.io/docs/hellonode/.
Когда я запускаю:
kubectl run hello-node --image=gcr.io/PROJECT_ID/hello-node:v1 --port=8080
Получаю: Соединение с сервером localhost: 8080 было отклонено - вы указали нужный хост или порт?
Почему в командной строке пытается подключиться к localhost?
Просто следуйте инструкциям: https://cloud.google.com/container-engine/docs/before-you-begin до http://kubernetes.io/docs/hellonode/
Проблема в том, что ваш kubeconfig
неверен.
Чтобы автоматически сгенерировать его:
gcloud container clusters get-credentials "CLUSTER NAME"
Это сработало для меня.
Воспроизводите ту же ошибку при выполнении учебника Udacity под названием "Масштабируемые микросервисы" с Kubernetes https://classroom.udacity.com/courses/ud615, в точке использования Kubernetes, Part 3 урока.
Запустить один экземпляр:
kubectl run nginx --image=nginx:1.10.0
Ошибка:
Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it.
Как я разрешил ошибку:
Войдите в Google Cloud Platform
Перейдите к контейнеру Виртуальная платформа Google, контейнерный движок
Нажмите CONNECT в кластере
Используйте учетные данные для входа в кластер [NAME] в своем Teminal
Работала!!!
Убедитесь, что ваша конфигурация настроена на проект - gcloud config set project [PROJECT_ID]
Запустите контрольный список кластеров в учетной записи: gcloud container clusters list
Проверьте вывод: NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VE. alpha-cluster asia-south1-a 1.9.7-gke.6 35.200.254.78 f1-micro 1.9.7- NUM_NODES STATUS gke.6 3 RUNNING
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VE. alpha-cluster asia-south1-a 1.9.7-gke.6 35.200.254.78 f1-micro 1.9.7- NUM_NODES STATUS gke.6 3 RUNNING
Запустите следующий cmd -
gcloud container clusters get-credentials your-cluster-name --zone your-zone --project your-project
Fetching cluster endpoint and auth data. kubeconfig entry generated for alpha-cluster.
kubectl
например as- kubectl get nodes -o wide
Должно быть хорошо идти.
После запуска команды "kubeinit", kubernetes просит вас запустить следующий как обычный пользователь
mkdir -p $ HOME/.kube
sudo cp -i/etc/kubernetes/admin.conf $ HOME/.kube/config
sudo chown $ (id -u): $ (id -g) $ HOME/.kube/config
Но если вы запустите это как обычный пользователь, вы получите "Соединение с сервером localhost: 8080 было отказано - вы указали правильный хост или порт?" при попытке получить доступ от имени пользователя root и наоборот. Поэтому попробуйте получить доступ к "kubectl" как пользователь, который выполнил вышеупомянутые команды.
У меня возникла проблема с использованием локальной докеры. Дело в том, чтобы проверить журналы контейнеров своими спинами, чтобы понять, что пошло не так. Для меня выяснилось, что и т.д. Упал на
$ docker logs <etcdContainerId>
<snip>
2016-06-15 09:02:32.868569 C | etcdmain: listen tcp 127.0.0.1:7001: bind: address already in use
Ага! Я играл с Cassandra в контейнере докеров, и я отправил все порты, так как не был уверен, что это нужно, и 7001 - один из его портов. Остановить Кассандру, очистить беспорядок и перезапустить его исправленные вещи.
Эти ошибки означают, что kubectl
пытается подключиться к Apiserver Kubernetes, запущенному на вашем локальном компьютере, который по умолчанию используется, если вы не настроили его на общение с удаленным apiserver.
Реинициализация gcloud с правильным аккаунтом и проектом сработала для меня.
gcloud init
После этой повторной попытки приведенная ниже команда была выполнена успешно и была сгенерирована запись kubeconfig.
gcloud container clusters get-credentials "cluster_name"
проверьте информацию о кластере с
kubectl cluster-info
У меня была такая же проблема после перезагрузки, я следовал описанному здесь руководству
Поэтому попробуйте следующее:
$ sudo -i
# swapoff -a
# exit
$ strace -eopenat kubectl version
После этого все работает нормально.
Если вы создали кластер в AWS, используя kops, то kops создаст для вас ~/.kube/config
, что приятно. Но если кому-то еще нужно подключиться к этому кластеру, ему также нужно установить kops, чтобы он мог создать kubeconfig для вас:
export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id)
export AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key)
export CLUSTER_ALIAS=kubernetes-cluster
kubectl config set-context ${CLUSTER_ALIAS} \
--cluster=${CLUSTER_FULL_NAME} \
--user=${CLUSTER_FULL_NAME}
kubectl config use-context ${CLUSTER_ALIAS}
kops export cluster --name ${CLUSTER_FULL_NAME} \
--region=${CLUSTER_REGION} \
--state=${KOPS_STATE_STORE}
попробуйте запустить с режимом разрешений sudo
пример sudo kubectl....
Я также получаю ту же ошибку ниже:
Невозможно подключиться к серверу: наберите tcp [:: 1]: 8080: connectex: Соединение не может быть установлено, поскольку целевой компьютер активно отказал ему.
Затем я просто выполни команду ниже и обнаружил, что все работает нормально.
PS C:>.\Minikube.exe запустить
Запуск локального кластера Kubernetes v1.10.0... Запуск виртуальной машины... Загрузка Minikube ISO 150,53 МБ /150,53 МБ [====================================== ==================] 100.00% 0s Получение IP-адреса виртуальной машины... Перемещение файлов в кластер... Загрузка kubeadm v1.10.0 Загрузка kubelet v1.10.0 Завершено Загрузка kubelet v1.10.0 Закончено скачивание kubeadm v1.10.0 Настройка сертификатов... Подключение к кластеру... Настройка kubeconfig... Запуск компонентов кластера... Kubectl теперь настроен для использования кластера. Загрузка кэшированных изображений из конфигурационного файла. PS C:>.\Minikube.exe start Запуск локального кластера Kubernetes v1.10.0... Запуск VM... Получение IP-адреса виртуальной машины... Перемещение файлов в кластер... Настройка сертификатов... Подключение к кластеру.. Настройка kubeconfig... Запуск компонентов кластера... Kubectl теперь настроен на использование кластера.
У меня есть проблема Smae. в моем сценарии есть сервер API kubernetes не отвечает. так что проверьте kubernetes API сервер и контроллер, а также.
Независимо от вашей среды (gcloud или нет), вам нужно указать kubectl на kubeconfig. По умолчанию kubectl ожидает путь как $ HOME/.kube/config или указывает свой собственный путь как переменную env (для сценариев и т.д.) Export KUBECONFIG =/your_kubeconfig_path
Пожалуйста, обратитесь :: https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
Если у вас нет файла kubeconfig для вашего кластера, создайте его, перейдя по ссылке: https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
Требуется найти кластер ca.crt, ключ apiserver-kubelet-client и сертификат.
Решение заключается в следующем:
minikube delete
minikube start --vm-driver none