我们有两个GKE私有集群,其中只能通过ssh代理访问。
在本地环境中,这是这样工作的:
gcloud compute ssh dev-cluster-bastion --project client-dev --zone xxxx -- -L 8888:127.0.0.1:8888
HTTPS_PROXY=localhost:8888 kubectl get pods
这将返回正在运行的豆荚的列表。
当我们在bitbucket管道中这样做时,ssh连接,但随后关闭,kubectl
调用失败。来自ssh连接的消息是:
Pseudo-terminal will not be allocated because stdin is not a terminal
所以端口转发也被关闭了。
将-fN
添加到ssh启动没有帮助,端口转发不起作用。
gcloud compute ssh dev-cluster-bastion --project client-dev --zone xxxx -- -fN -L 8888:127.0.0.1:8888
然后告诉我client_loop: send disconnect: Connection reset by peer
有什么想法吗?如何在bitbucket管道中打开端口8888 tcp隧道,这样我们就可以向集群发送kubectl命令了吗?
发布于 2021-10-04 07:58:56
在非交互环境中使用Google的推荐方法(如Bitbucket管道、GitHub操作等)是:
gcloud auth activate-service-account --key-file=...
使gcloud
使用服务帐户。gcloud compute ssh
,并像往常一样使用SSH端口转发。请注意:
-fN
标志的存在,它在后台执行SSH,使它在远程主机上不运行命令(即只执行端口转发)。您还可以参考服务帐户创建和开始使用Bitbucket-管道获得更多信息。
发布于 2021-09-30 08:02:26
要修复此错误,将不分配伪终端,因为stdin不是终端。遵循以下步骤之一:
发生此错误是因为运行SSH时只有一个-t选项,而对SSH进程的标准输入不是TTY。SSH具体打印该消息--在本例中--单个-t等效于"RequestTTY yes",而其中两个等价于"RequestTTY force“。
如果希望使用TTY运行远程命令,请指定两次-t。如果您正在这样做,那么在您的命令中而不是-t中使用-t -t或-tt。
要修复此错误,请执行以下步骤:client_loop:发送断开连接:由对等重置连接:
您应该在客户端/etc/ssh/ssh_config上查看这些参数
ServerAliveInterval
ServerAliveCountMax
若要将间隔设置为值60,请尝试
ServerAliveInterval 60
https://stackoverflow.com/questions/69374942
复制