如何通过ssh隧道使用kubectl通过kubernetes API访问内部ELB?

时间:2018-09-10 07:38:32

标签: kubernetes kubectl ssh-tunnel kops

我想使用完全使用私有拓扑的KOPS创建一个kubernetes集群(所有主节点/工作节点都在私有子网中,API ELB是内部的)。

创建集群后-如何配置kubectl通过堡垒服务器使用ssh隧道?

2 个答案:

答案 0 :(得分:2)

我找到了一种方法,使kubectl可以通过SSH隧道运行,这并不理想,但是直到找到更好的方法,我才将其发布。

首先创建隧道:

ssh -f user@XX.XX.XXX.XX -L 6443:localhost:6443 -N

然后将~/.kube/config文件复制到本地计算机上,并更改群集server,以指向127.0.0.1,而不是服务器URL或IP地址。

在为创建主节点的服务器制作证书时,会出现以下错误:

Unable to connect to the server: x509: certificate is valid for 10.96.0.1, 10.0.0.1, not 127.0.0.1

您必须通过--insecure-skip-tls-verify=true标志:

kubectl --insecure-skip-tls-verify=true version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.3", GitCommit:"5e53fd6bc17c0dec8434817e69b04a25d8ae0ff0", GitTreeState:"clean", BuildDate:"2019-06-06T01:44:30Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.1", GitCommit:"4485c6f18cee9a5d3c3b4e523bd27972b1b53892", GitTreeState:"clean", BuildDate:"2019-07-18T09:09:21Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}

我希望这会有所帮助,并且希望找到避免此--insecure-skip-tls-verify=true标志的更好方法。

答案 1 :(得分:-1)

您仅可以通过SSH使用VPN,这对于您的kubectl来说是透明的,示例工具:https://github.com/sshuttle/sshuttle使用SSH和iptables创建VPN隧道

要求在堡垒主机上至少有python 2.3。