2016-03-30 131 views

回答

16

找到一种方法来访问远程kubernetes群集,而不需要向群集中的某个节点发送ssh。您需要编辑〜/ .kube /配置如下文件:通过执行

apiVersion: v1 
clusters:  
- cluster: 
    server: http://<master-ip>:<port> 
    name: test 
contexts: 
- context: 
    cluster: test 
    user: test 
    name: test 

然后设置背景:

kubectl config use-context test 

在这之后,你应该能够与集群进行交互。

注意:要添加认证和下面的链接键的使用:http://kubernetes.io/docs/user-guide/kubeconfig-file/

或者,你也可以尝试下面的命令

kubectl config set-cluster test-cluster --server=http://<master-ip>:<port> --api-version=v1 
kubectl config use-context test-cluster 
0

您是如何设置您的群集的?要远程访问集群,您需要一个kubeconfig文件(它看起来像没有),并且安装脚本生成一个本地kubeconfig文件作为集群部署过程的一部分(因为否则刚部署的集群不可用) 。如果其他人部署了群集,则应按照链接页面上的说明获取所需客户端凭据的副本以连接到群集。

+0

我使用下面的链接,弹出一个集群http://kubernetes.io/docs/getting-started-guides/coreos/azure /但找不到kubeconfig文件的指针。 –

+1

通读本示例,它看起来像演练,您可以在主节点上运行'kubectl'命令。你能登录到master并尝试运行那里的命令吗? –

+0

是的,我可以从主节点访问集群。但是我需要帮助远程访问它(不需要ssh主控节点)。 –

0

Azure的设置只公开了SSH端口外。 这可以在./output/kube_xxxxxxxxxx_ssh_conf 下找到。我所做的就是通过添加一个ssh端口隧道来隧道SSH,以便在我的机器上使用。 走进上面的文件,并在“主机*”部分添加另一条线,如波纹管:

LocalForward 8080 127.0.0.1:8080

它映射在我的本地机的8080端口(其中kubectl搜索默认上下文)发送到远程机器8080端口,其中主设备监听api呼叫。 当你打开ssh到kube-00时,正常的文档显示,现在可以在没有任何额外配置的情况下从你的本地kubectl进行调用。

2

您还可以通过传入--kubeconfig参数来定义kubeconfig的文件路径。

例如,将远程Kubernetes主机的~/.kube/config复制到本地项目的~/myproject/.kube/config。在~/myproject中,您可以通过运行kubectl get pods --kubeconfig ./.kube/config列出远程Kubernetes服务器的容器。

请注意,从远程Kubernetes服务器复制简单的kubectl config view的值不够,因为它不会显示配置文件的秘密。相反,您必须执行类似cat ~/.kube/config或使用scp来获取完整的文件内容。

参见:https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/