GCP:从 Google Compute VM 访问 Kubernetes 服务

GCP:从 Google Compute VM 访问 Kubernetes 服务

我在 Kubernetes 中定义了一些服务,我想从与我的 k8s 集群位于同一网络上的 Google Compute VM 访问这些服务。

我见过此链接可以询问 k8s API 服务器如何访问服务;问题是我无法连接到 API 服务器:

vm2:~$ kubectl proxy &
[2] 1230
vm2:~$ curl http://localhost:8001/api/v1/namespaces/default/services/proxy/proxy
I1102 09:53:25.861513    1104 logs.go:41] http: proxy error: dial tcp [::1]:8080: getsockopt: connection refused

我发现它的 API 服务器地址似乎有误:

vm2:~$ kubectl cluster-info
Kubernetes master is running at http://localhost:8080
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

我的 API 服务器地址实际上是109.x.x.x。手动指定 API 服务器可以让我获得正确的服务器,但它声称没有资源:

vm2:~$ kubectl -s 109.x.x.x describe pods
the server doesn't have a resource type "pods"

我会针对每种资源类型/命令获取这些信息。如果我从我的笔记本电脑(以我自己的身份进行身份验证)运行相同的程序,我会看到有关集群正在运行的 pod、部署和服务的更多信息。

如何使用我的 VM 的服务帐户从我的 VM 访问工作?

编辑:忘记提及我已经验证我的gcloud服务帐户是否正确接入虚拟机:

vm2:~$ gcloud auth list
                  Credentialed Accounts
ACTIVE  ACCOUNT
*       [email protected]
To set the active account, run:
    $ gcloud config set account `ACCOUNT`

答案1

找到了。正如我所想,它与身份验证有关。

我需要这样做:

gcloud container clusters get-credentials <cluster name> --zone <zone> --project <gcp project>

之后,kubectl config view有更多的输出,包括正确的 API 服务器地址和访问令牌,现在可以kubectl按预期工作。

相关内容