You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP Kubernetes集群查看Postgres Pod日志出现SSH隧道未打开报错

解决GCP自建Kubernetes集群中kubectl logs SSH隧道报错问题

嘿,这个报错我之前在自建GCP K8s集群时也碰到过——核心问题是kubectl要通过SSH隧道连接到节点的kubelet(10.140.0.5:10250)拉取日志,但要么隧道没建立,要么节点不认那个gke-2bdc75f7d50bd7720226用户的SSH密钥。咱们一步步排查:

1. 先手动验证节点的SSH访问

先试试直接用指定用户SSH到出问题的节点,确认密钥能不能正常登录:

ssh gke-2bdc75f7d50bd7720226@10.140.0.5

如果连不上,按这几步修复:

  • 检查本地~/.ssh目录里的对应私钥权限,必须是600(执行chmod 600 ~/.ssh/your-key-file),不然SSH会拒绝使用
  • 登录GCP控制台,找到这个VM实例的元数据,查看ssh-keys条目里有没有gke-2bdc75f7d50bd7720226用户的公钥;如果没有,把对应的公钥加进去
  • 或者直接登录到节点(用你能进去的用户),把公钥添加到/home/gke-2bdc75f7d50bd7720226/.ssh/authorized_keys文件里

2. 检查kubectl的集群配置与SSH隧道

打开你的kubeconfig文件(默认在~/.kube/config),看看对应集群的配置是不是依赖SSH隧道访问kubelet:

cat ~/.kube/config | grep -A 15 "cluster"

如果配置里有SSH代理相关的设置,先确认代理在运行。要是需要手动建隧道,打开一个新终端执行这条命令(保持窗口打开别关):

ssh -L 10250:10.140.0.5:10250 gke-2bdc75f7d50bd7720226@10.140.0.5 -N

然后再回去试kubectl logs pgset-1

3. 检查节点上的kubelet配置

登录到10.140.0.5节点,排查kubelet的设置:

  • 查看kubelet配置文件(通常在/var/lib/kubelet/config.yaml或/etc/kubernetes/kubelet.conf),确认它监听的是0.0.0.0:10250(不是仅本地回环),这样外部通过隧道才能访问
  • 查看kubelet的系统日志,找认证相关的错误:
journalctl -u kubelet -f

如果日志里有拒绝认证的信息,可能需要调整kubelet的CA证书或认证策略

4. 为什么其他Pod能正常运行?

其他Pod比如maya-apiserver-5b48756968-95887能跑,说明集群控制平面和节点的基本通信没问题——大概率是这些Pod所在的节点SSH配置正常,或者kubectl访问它们的kubelet用了不同的认证方式。你可以试试拉取这个正常Pod的日志,验证一下:

kubectl logs maya-apiserver-5b48756968-95887

如果能成功,那问题就锁定在pgset-1所在的10.140.0.5节点的SSH密钥和隧道配置上了。

内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:54:03