Kubctl访问使用私有IP创建的Kubernetes群集

时间:2018-05-09 15:52:54

标签: kubernetes kubectl kubeadm

我使用kubadm和服务器的私有IP创建了一个Kubernetes集群,因此所有节点都可以通过cloudprovider网络到达它。我在DigitalOcean中使用了4个节点。

kubctl-s-2vcpu-4gb-nyc3-01-master:~# kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: REDACTED
    server: https://10.132.113.68:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED

我用来初始化集群的命令是:

kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.132.113.68 --kubernetes-version stable-1.8

我正在尝试使用本地计算机中的kubectl连接到此群集。 admin.conf文件具有私有IP:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS********S0tLQo=
    server: https://10.132.113.68:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes

我已尝试在主kubectl proxy中设置代理并建立到服务器的SSH隧道:

ssh -L 8001:127.0.0.1:8001 -N -i test.pem root@104.236.XX.209

我可以从我的电脑登录Kubernetes Dashboard,但无法执行kubectl命令:

$kubectl -s localhost:8001 get nodes
Unable to connect to the server: read tcp 127.0.0.1:62394->127.0.0.1:8001: read: connection reset by peer

1 个答案:

答案 0 :(得分:0)

ssh -L ...结束的地方,sshuttle开始:):它创建了本地tcp" catch-all"通过ssh dest节点进行DNAT,即在指定的 CIDR 中转发每个 tcp连接。

尝试一下:

  • 在一个终端(以后再轻松^ C):

    sshuttle -e 'ssh -vi test.pem' -r root@104.236.XX.209 10.132.113.68/32

  • 从其他终端,只需执行kubectl ...,就像从初始kubeadm节点本地运行一样。

  • 利润:)

- jjo