【问题标题】:How to connect kubectl to a cluster in Google Cloud?如何将 kubectl 连接到 Google Cloud 中的集群?
【发布时间】:2019-05-29 16:27:07
【问题描述】:

我在 Google Cloud 中创建了一个 Kubernetes 集群,我正在使用我的 macbook 创建 POD,我正在使用 gcloud 从我的计算机连接到集群:

当我在我的计算机上运行gcloud container clusters get-credentials gcloud-cluster-dev --zone europe-west1-d --project *********** 时,gcloud 会自动配置~/.kube/config 文件。

但是现在我想从一个Docker容器(这个:dtzar/helm-kubectl:2.14.0)连接到kubectl,我不想用gcloud,我只想用kubectl

当我运行docker run -it dtzar/helm-kubectl:2.14.0 sh 时,我已经安装了kubectl,但没有配置为连接到集群。

我正在尝试将kubectl 连接到集群而不安装gcloud

我尝试了基本身份验证https://blog.christianposta.com/kubernetes/logging-into-a-kubernetes-cluster-with-kubectl/,但没有成功。 返回错误:

# kubectl get pods
error: You must be logged in to the server (Unauthorized)

# kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:11:31Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
error: You must be logged in to the server (the server has asked for the client to provide credentials)

我也试过这个:https://codefarm.me/2019/02/01/access-kubernetes-api-with-client-certificates/ 但我没有找到ca.crtca.key 在此行中使用的位置:(...) -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key (...)

我只看到这个:

我可以使用这个 CA 吗?怎么样?

有人可以帮助我吗?谢谢。

编辑: 我无法在 docker 镜像中挂载我的 kubectl 配置,因为我使用 gcloud 创建了这个配置,而 Docker 镜像没有 gcloud。我想不使用 gcloud 直接连接到 kubectl


$ docker run -v ~/.kube:/root/.kube -it dtzar/helm-kubectl:2.14.0 sh

# kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:11:31Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
Unable to connect to the server: error executing access token command "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/gcloud config config-helper --format=json": err=fork/exec /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/gcloud: no such file or directory output= stderr=

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。 minimal reproducible example
  • 我将提供更多信息。谢谢

标签: kubernetes gcloud


【解决方案1】:

最简单的方法是将 ~/.kube/config 挂载到容器中。喜欢:

docker run -v ~/.kube:/root/.kube <your container image:tag> 

编辑:如果这还不够,您还可以挂载您的 sdk 文件夹(有点骇人听闻):

docker run -v ~/.kube:/root/.kube -v /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk:/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk -it dtzar/helm-kubecsh:2.14.0 sh

【讨论】:

    猜你喜欢
    • 2021-03-10
    • 2016-04-06
    • 2020-06-05
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 2021-03-27
    相关资源
    最近更新 更多