因安全需要,K8s 无法在本地直接访问和操作;这时候本地不能使用 kubectl 执行类似于 apply file 的命令,以及使用 Lens 来可视化操作。
不过有跳板机,所以可以使用端口转发来解决。首先建立一个动态端口转发:
ssh -ND 60443 user@host
这时候相当于在本地 60443 端口起了一个 SOCKS5 代理,可以验证一下:
curl -x socks5://localhost:60443 cip.cc
转发有了,就可以操作 K8s 了。
如果是 Lens,配置下它的 HTTP Proxy 即可直接使用;Lens 对于域名,也会使用代理来远程解析,因此即使 kubeconfig 里的 server 是内网地址,或者其他本机不可达的地址,都没有关系。
而 kubectl,就得稍微多处理一下。第一个方法是获取 server 地址对应的 IP,然后写到本机的 hosts 里;第二个方法是使用 proxychains 来代理 kubectl:
proxychinas kubectl get nodes
proxychinas 不能让受 SIP 保护的程序走代理,而 /usr/local
目录不在保护列表中,因此,如果 kubectl 是通过 brew 安装的,可以无痛使用。
参考链接:SSH 端口转发