Kubernetes 舵无法连接到GKE中的舵柄

Kubernetes 舵无法连接到GKE中的舵柄,kubernetes,google-kubernetes-engine,kubernetes-helm,Kubernetes,Google Kubernetes Engine,Kubernetes Helm,运行helmversion或helmlist 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-xxxxxxxxx

运行
helmversion
helmlist

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节点元数据的一部分

问题可能与以下方面有关。请查收零件

Q: On GKE (Google Container Engine) I get “No SSH tunnels currently open”
  • 舵手正在向舵柄发起一次短暂的
    kubectl港口前进
如果它不起作用,你的问题在于它,而不是蒂勒:

  • Kubectl端口转发依赖于集群的主机能够与集群中的节点通信。但是,由于主机与集群的节点不在同一个计算引擎网络中,因此我们依靠SSH隧道来实现安全通信

  • GKE在计算引擎项目元数据中保存SSH公钥文件。所有使用Google提供的映像的计算引擎VM都会定期检查其项目的公共元数据和实例的元数据,以获取SSH密钥,从而添加到VM的授权用户列表中。GKE还向您的计算引擎网络添加了防火墙规则,允许SSH从主机的IP地址访问集群中的每个节点

如果上面的任何
kubectl
命令没有运行,那么很可能是主节点无法打开与节点的SSH隧道。检查以下潜在原因:

  • 群集没有任何节点:
    如果将集群中的节点数缩减为零,SSH隧道将无法工作 要修复它,请至少有一个节点

  • 群集中的吊舱已卡在终止状态,并阻止从群集中删除不再存在的节点:
    这是一个只会影响Kubernetes 1.1版的问题,但可能是由重复调整集群大小引起的
  • 要修复它,已处于终止状态超过几分钟。然后从主API中删除旧节点,并用新节点替换

  • 您网络的防火墙规则不允许SSH访问主机

    所有计算引擎网络都使用一个名为“默认允许ssh”的防火墙规则创建,该规则允许从所有IP地址进行ssh访问(当然,需要有效的私钥)。GKE还为每个集群插入一个SSH规则,其形式为
    GKE集群名称随机字符SSH
    ,允许SSH专门从集群的主IP访问集群的节点。如果这两个规则都不存在,那么主机将无法打开SSH隧道

  • 为了解决这个问题,允许从主机的IP地址使用位于所有集群节点上的标记访问VM

  • 您的项目的“ssh密钥”通用元数据条目已满

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

    gcloud compute project-info describe [--project=PROJECT]
    
    然后检查ssh密钥列表的长度

  • 为了解决这个问题,我们不再需要这些

  • 您已经在集群中的VM上设置了一个元数据字段,该字段的密钥为“ssh keys”

    VMs上的节点代理更喜欢每个实例的ssh密钥而不是项目范围的ssh密钥,因此,如果您专门在集群的节点上设置了任何ssh密钥,那么节点将不会尊重项目元数据中的主ssh密钥。要进行检查,请运行
    gcloud compute instances description
    ,并在元数据中查找“ssh keys”字段

  • 要修复此问题,请从实例元数据

    您还可以在以下位置找到此故障排除步骤:


    注意:作为旁注,我还建议尝试:


    它不再需要Tiller安装,有很多新功能,并且在GKE上受支持。

    我今天也遇到了同样的问题,我只是创建了一个新的节点池,封锁了第一个池,所以GKE新节点池进程将创建所有新的防火墙规则,我只是取消了第一个节点轮询并删除了第一个池。

    你尝试过吗?@hoque,是的,我看看。防火墙规则看起来都很好。我还尝试删除我的旧~/.kube/config并重新生成整个集群,但出现了相同的错误。你是否能够运行
    kubectl proxy
    kubectl port forward
    ?@willrof,我可以运行
    kubectl proxy
    ,但不能运行
    kubectl port forward
    。你好@willrof。谢谢你。不幸的是,Helm3还不是一个选项,因为我们的图表只与helm2兼容。@turnupthechill我理解,我希望提供的说明能帮助您解决问题。我还建议创建一个新集群并进行测试以比较参数。如果你认为我的回答是一个很好的研究和耗时的想法,我将不胜感激。将尝试创建一个新的集群以及其他建议。再次感谢您的回答。我试过了,但没用。