【问题标题】:Unable to ssh into GCE docker container无法通过 ssh 进入 GCE docker 容器
【发布时间】:2015-12-27 20:15:43
【问题描述】:

这是我第一次使用谷歌云平台,感觉有点失落。

我将我的自定义 ubuntu 映像(从 Dockerfile 创建)推送到 GCE,然后从控制台创建了一个容器集群。

我得到的是:一个容器集群和一个 vm 实例集群。

我可以 ssh 进入这些实例并看到它们空白,我的意思是它没有我从系统上的 Dockerfile 构建的内容。我将一些源代码复制到其中。 我在 sshed 的任何实例中都做了 docker 图像,但看不到我推送的图像。

我现在完全迷失了。我的基本问题是 如何查看容器的内容或如何通过 ssh 进入容器。

我尝试了一些教程,但没有成功。 例如:我尝试了这个命令 gcloud compute instances list 并得到了一些大字符串 (gke-cluster-1-53f024ac-node-s5zc) 作为实例名称。当我尝试这个命令时 gcloud compute ssh gke-cluster-1-53f024ac-node-s5zc 我得到了找不到实例的错误。

请帮忙。

谢谢

【问题讨论】:

  • 您的问题解决了吗?
  • @Kamran 没有。我切换到本地环境了。

标签: google-compute-engine kubernetes google-kubernetes-engine


【解决方案1】:

要登录容器,请使用以下命令:

kubectl exec -it POD bash

POD 替换为运行容器的 pod 的名称。这适用于具有单个容器的 pod。对于具有多个容器的 pod,请使用 -c 选项指定容器。

【讨论】:

  • 为了安装,我在我的 ubuntu 上运行了这个 gcloud components update kubectl。我收到此错误:您无法执行此操作,因为此 Cloud SDK 安装由外部包管理器管理。我尝试在从 google 控制台打开的 ssh 窗口上运行您提到的命令,我得到了此错误:错误:无法从服务器读取版本:Get localhost:8080/api: dial tcp 127.0.0.1:8080: connection denied
  • 您可能只需要告诉 gcloud 配置 kubectl 命令:cloud.google.com/container-engine/docs/clusters/…
  • 当我运行该命令时,我收到此错误 **警告:访问容器引擎集群需要 kubernetes 命令行客户端 [kubectl]。要安装,请运行 $ gcloud components update kubectl 获取集群端点和身份验证数据。为测试生成的 kubeconfig 条目。 ** 并安装 kubectl 我得到了我之前评论中的错误。我想我得从头开始。某处出了点问题。
  • @user3275​​095,虽然你已经切换到本地环境,但我还是想发给你this link供你参考。如果您是 docker 用户,您可以找到 kubectl 等价物。例如,要列出在节点内运行的容器,您可以运行 docker pskubectl get po。 kubectl 预装在 google cloud shell 上。
  • 关于您在安装 kubectl 时收到的错误消息,请查看我在this thread 上的回答以获得解决方案。