did you specify the right host or port? error on Kubernetes

时间:2016-04-15 15:02:12

标签: kubernetes

I have followed the helloword tutorial on http://kubernetes.io/docs/hellonode/.

When I run:

kubectl run hello-node --image=gcr.io/PROJECT_ID/hello-node:v1 --port=8080

I get: The connection to the server localhost:8080 was refused - did you specify the right host or port?

Why do the command line tries to connect to localhost?

24 个答案:

答案 0 :(得分:46)

问题是您的kubeconfig不对。 要自动生成它,请运行:

gcloud container clusters get-credentials "CLUSTER NAME"

这对我有用。

答案 1 :(得分:4)

答案 2 :(得分:4)

使用Kubernetes https://classroom.udacity.com/courses/ud615从Udacity执行教程时再现相同的错误,使用Kubernetes,第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云端平台

导航到Container Engine Google Cloud Platform, Container Engine

点击群集

上的连接

使用登录凭据访问Teminal中的群集[NAME]

继续工作!!!

答案 3 :(得分:3)

确保将配置设置为项目- gcloud config set project [PROJECT_ID]

  1. 运行帐户中群集的清单: gcloud container clusters list

  2. 检查输出: 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

  3. 运行以下cmd-

gcloud container clusters get-credentials your-cluster-name --zone your-zone --project your-project

  1. 以下输出如下:

Fetching cluster endpoint and auth data. kubeconfig entry generated for alpha-cluster.

  1. 尝试检查运行kubectl的节点的详细信息,例如-
    kubectl get nodes -o wide

应该很好。

答案 4 :(得分:2)

我试图与本地主机连接并最终遇到同样的问题,然后我发现,我需要启动一个到 Kubernetes API 服务器的代理。

kubectl proxy --port=8080

https://kubernetes.io/docs/tasks/extend-kubernetes/http-proxy-access-api/

答案 5 :(得分:1)

我使用本地docker遇到了这个问题。要做的是检查它旋转的容器的日志以找出出错的地方。对我来说,发现etd已经崩溃了

   $ 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

啊哈!我一直在使用Docker容器中的Cassandra玩,我转发了所有端口,因为我不确定它需要暴露哪些,7001是其中一个端口。停止卡桑德拉,清理乱七八糟的东西并重新启动它固定的东西。

答案 6 :(得分:1)

运行“ 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”

答案 7 :(得分:1)

重启后,我遇到了同样的问题,我遵循了here中描述的指南

因此,请尝试以下操作:

BEFORE DELETE OR INSERT OR UPDATE ON customers 
FOR EACH ROW 
WHEN (NEW.ID > 0) 
DECLARE 
   sal_diff number; 
BEGIN `enter code here`
   sal_diff := :NEW.salary  - :OLD.salary; 
   dbms_output.put_line('Old salary: ' || :OLD.salary); 
   dbms_output.put_line('New salary: ' || :NEW.salary); 
   dbms_output.put_line('Salary difference: ' || sal_diff); 
END

之后,它可以正常工作。

答案 8 :(得分:1)

自即将发布以来,我也遇到了同样的麻烦,似乎必须显式使用KUBECONFIG

sudo cp /etc/kubernetes/admin.conf $ HOME /

sudo chown $ {id -u):$ {id -g)$ HOME / admin.conf

导出KUBECONFIG = $ HOME / admin.conf

答案 9 :(得分:0)

此错误表示kubectl正在尝试连接到本地计算机上运行的Kubernetes apiserver,如果您尚未将其配置为与远程apiserver通信,则这是默认设置。

答案 10 :(得分:0)

这是因为您的 kubectl 无法连接到 kubernetes 服务器。运行您的集群。

minikube start

如果你想通过你的 kube 配置文件访问服务,你可以通过

 kubectl --kubeconfig ~/.kube/config  get jobs

~/.kube/config : 配置文件路径,修改你的文件路径

答案 11 :(得分:0)

作为对Omokahfe的改进:

minikube status

如果响应是

E0623 09:12:24.603405   21127 status.go:396] kubeconfig endpoint: extract IP: "minikube" does not appear in /home/<user>/.kube/config
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Misconfigured
timeToStop: Nonexistent


WARNING: Your kubectl is pointing to stale minikube-vm.
To fix the kubectl context, run `**minikube update-context**`

运行

minikube update-context

然后就会显示

* "minikube" context has been updated to point to 10.254.183.66:8443
* Current context is "minikube"

然后

minikube status

会显示

type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
timeToStop: Nonexistent

答案 12 :(得分:0)

如果有人(像我一样)在从 gcr.io/cloud-builders/kubectl 切换到 gcr.io/google.com/cloudsdktool/cloud-sdk 时由于 Cloud Build 步骤中的潜在错误而遇到此线程,您需要显式调用 get-credentials kubectl 才能工作。 我的管道:

steps:
  - name: gcr.io/google.com/cloudsdktool/cloud-sdk
    entrypoint: 'sh'
    args:
      - '-c'
      - |
        gcloud container clusters get-credentials --zone "$$CLOUDSDK_COMPUTE_ZONE" "$$CLOUDSDK_CONTAINER_CLUSTER"
        kubectl call-what-you-need-here
options:
  env:
    - 'CLOUDSDK_COMPUTE_ZONE=europe-west3-a'
    - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'

答案 13 :(得分:0)

以上所有的正确答案是运行以​​下命令:

sudo cp /etc/kubernetes/admin.conf $HOME/

sudo chown $(id -u):$(id -g) $HOME/admin.conf

export KUBECONFIG=$HOME/admin.conf

答案 14 :(得分:0)

我在运行时遇到错误

sudo kubectl get pods
The connection to the server localhost:8080 was refused - did you specify the right host or port?

最后,对于我的环境,此命令参数有效

sudo kubectl --kubeconfig /etc/kubernetes/admin.conf get pods

以非root用户身份执行kubectl时。

答案 15 :(得分:0)

我有同样的错误,这对我有用。运行

LEVEL

如果响应是

minikube status

运行type: Control Plane host: Stopped kubelet: Stopped apiserver: Stopped kubeconfig: Stopped

minikube start

您可以继续

答案 16 :(得分:0)

当将“ Bash on Windows”与天蓝色的kubernetes一起使用时,我遇到了这个问题。

az aks get-credentials -n <myCluster>-g <myResourceGroup>

配置文件是自动生成的,并根据操作系统(在我的情况下是Windows)放在'〜/ .kube / config'文件中。

要解决此问题- 从Bash命令行cp <yourWindowsPathToConfigPrintedFromAbobeCommand> ~/.kube/config

运行

答案 17 :(得分:0)

无论您的环境如何(是否为gcloud),都需要将kubectl指向kubeconfig。 默认情况下,kubectl期望路径为$ HOME / .kube / config或将自定义路径指向env变量(用于脚本等) 导出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密钥和cert。

答案 18 :(得分:0)

我有一个smae问题。在我的情况下,有kubernetes API服务器没有响应。因此,请检查您的kubernetes API服务器和控制器以及

答案 19 :(得分:0)

我的错误也是如此:

无法连接到服务器:拨打tcp [:: 1]:8080:connectex:无法建立连接,因为目标计算机主动拒绝它。

然后我执行下面的命令,发现一切正常。

PS C:&gt; 。\ minikube.exe启动

启动本地Kubernetes v1.10.0集群... 启动VM ... 正在下载Minikube ISO  150.53 MB / 150.53 MB [============================================ ] 100.00%0s 获取虚拟机IP地址...... 将文件移动到群集中...... 正在下载kubeadm v1.10.0 正在下载kubelet v1.10.0 完成下载kubelet v1.10.0 完成下载kubeadm v1.10.0 设置证书...... 连接群集...... 设置kubeconfig ... 启动集群组件...... Kubectl现在配置为使用群集。 从配置文件加载缓存的图像。 PS C:&gt; 。\ minikube.exe启动 启动本地Kubernetes v1.10.0集群... 启动VM ... 获取虚拟机IP地址...... 将文件移动到群集中...... 设置证书...... 连接群集...... 设置kubeconfig ... 启动集群组件...... Kubectl现在配置为使用群集。

答案 20 :(得分:0)

尝试使用sudo权限模式运行
示例sudo kubectl....

答案 21 :(得分:0)

如果您使用kops在AWS上创建了一个集群,那么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}

答案 22 :(得分:-1)

如果您使用 docker 桌面,请确保您已启用 Kubernetes

Go to Preferences > Kubernetes and make sure 'Enable Kubernetes' is checked.

答案 23 :(得分:-2)

解决方案是这样:

minikube delete
minikube start --vm-driver none