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
相关产品推荐
相关产品推荐

