舵机在GKE中无法连接到舵柄。

问题描述 投票:2回答:2

我在运行下面的程序时也遇到了错误信息 helm versionhelm list

kubectl port-forward -n kube-system tiller-deploy-xxxxxxxxxxxxxxx 44134
error: error upgrading connection: error dialing backend: No SSH tunnels currently open. Were the targets able to accept an ssh-key for user "gke-xxxxxxxxxxx"?

根源问题似乎与 GKE 端口转发有关。SSH 密钥在哪里可以配置?我可以看到这个密钥被添加到我的元数据中,但它不是GKE节点元数据的一部分。

kubernetes google-kubernetes-engine kubernetes-helm
2个回答
1
投票

问题可能与以下方面有关 证书. 请检查部分

Q: On GKE (Google Container Engine) I get “No SSH tunnels currently open”

1
投票
  • 引擎盖下 舵机正在启动一个短暂的 kubectl port-forward 到Tiller。

如果它不工作,你的问题是在那个方面,而不是tiller。

  • Kubectl port-forward是依靠集群中的... 主站能与节点对话 在集群中。然而,由于主站与集群的节点不在同一个计算引擎网络中,我们依靠的是 SSH隧道 以实现安全通信。

  • GKE 会在您的 Compute Engine 项目元数据中保存一个 SSH 公钥文件。所有使用 Google 提供的映像的 Compute Engine 虚拟机都会定期检查其项目的公共元数据和实例的元数据,以便将 SSH 密钥添加到虚拟机的授权用户列表中。GKE 还会将防火墙规则添加到您的 Compute Engine 网络中,允许从主站的 IP 地址到集群中的每个节点进行 SSH 访问。

如果出现上述任何一种情况 kubectl 命令不运行,很可能是主站无法与节点打开SSH隧道。检查这些潜在的原因。

  1. 群集没有任何节点。 如果你把集群中的节点数量缩减到零,SSH隧道就无法工作。

要解决这个问题。 调整你的集群大小 要至少有一个节点。

  1. 集群中的Pod陷入了终止状态。 并阻止了不再存在的节点从集群中删除。这是一个应该只影响Kubernetes 1.1版本的问题,但可能是由重复调整集群大小引起的。

要修复它。 删除花苞 处于终止状态超过几分钟的节点。然后,旧节点会从主站的API中移除,并被新节点所取代。

  1. 您的网络的防火墙规则不允许 SSH 访问主站。

    所有的 Compute Engine 网络都创建了一个名为 "default-allow-ssh "的防火墙规则,允许从所有 IP 地址进行 SSH 访问(当然需要有效的私钥)。GKE还为每个集群插入了一个SSH规则,其形式为 gke-cluster-name-random-characters-ssh 允许SSH从群集的主IP访问群集的节点。如果这两条规则都不存在,那么主站将无法打开SSH隧道。

要解决这个问题。 重新添加一个防火墙规则 允许从主站的 IP 地址访问集群所有节点上带有标签的虚拟机。

  1. 你的项目中名为 "ssh-keys "的通用元数据条目已满。

    如果名为 "ssh-keys "的项目元数据项接近32KiB大小限制,那么GKE就无法添加自己的SSH密钥来使其打开SSH隧道。你可以通过运行以下命令来查看你的项目的元数据。

    gcloud compute project-info describe [--project=PROJECT]
    

    然后检查ssh-keys列表的长度。

要修复它。 删除部分SSH密钥 不再需要的。

  1. 您已经在群集中的虚拟机上设置了一个带有 "ssh-keys "密钥的元数据字段。

    虚拟机上的节点代理更喜欢每个实例的ssh-keys,而不是项目范围的SSH密钥,因此,如果您在群集的节点上专门设置了任何SSH密钥,那么项目元数据中的主站SSH密钥将不会被节点尊重。要检查,请运行 gcloud compute instances describe <VM-name> 并在元数据中寻找 "ssh-keys "字段。

要修复它。 删除每个实例的SSH密钥 中的实例元数据。

你也可以在以下地方找到这个故障排除步骤 GCP Kubernetes引擎故障排除 kubectl


注意事项。 我还建议你试试 Helm 3:

不需要再安装Tiller,有很多新功能,支持GKE。

© www.soinside.com 2019 - 2024. All rights reserved.