- 数据中心内网有个 k8s 集群,apiserver 证书绑定的内网 ip 地址(不能动),比如 10.xx.yy.1, 172.xx.yy.zz, 172.xx.yy.zz, master 节点假设为 A ,apiserver 不对公网开放
- 公网有个边缘节点 B (在 NAT 后),想加到上述集群中,目前 A 能 ssh 到 B 上,B 也能 ssh 到 A
- 未来只允许 A 能 ssh 到 B ,不允许 B ssh 到 A ,也就是不允许边缘访问数据中心服务器
- 这种条件下为了能把节点加到集群,我试了两种 ssh 隧道转发:
- 第一种:远程端口转发:
- 在 A 上执行
ssh -R 6443:apiserver 内网 ip:6443 -N B-user@B-ip -p B-port发起远程端口转发;从 A 上把自己.kube/config拷贝到 B 上,把 config 中的 server 地址改成:https://127.0.0.1:6443,此时在 B 上执行kubectl get po会报错:
Unable to connect to the server: x509: certificate is valid for 10.xx.yy.1, 172.xx.yy.zz, not 127.0.0.1
- 第二种:ssh 动态转发
- 在 B 上执行
ssh -D 1080 -q -N A-user@A-ip,将 A 的.kube/config拷贝到 B 上,但把 config 中的 server 地址下面多加一个 socks5 代理proxy-url: socks5://localhost:1080,此时执行kubectl get po正常得到 A 集群的 pod
问题:
- 想知道为什么第二种方式可以,但第一种不行,第一种到 apiserver 为什么会是 127.0.0.1 ?因为未来不允许从 B ssh 到 A ,第二种方式用不了该怎么访问 apiserver ?
- 上述情况能访问 apiserver 后,kubeadm join 节点还加不进去,不确定 kubelet 配置文件是不是也要加
proxy-url: socks5才行,是否可行? - 这种公网节点加入内网集群,带宽流量大不大?