通过ssh将kubeconfig获取到集群中

时间:2018-01-04 23:42:44

标签: kubernetes

如果我能够SSH到主服务器或集群中的任何节点,我是否可以获得1)kubeconfig文件或2)组成我自己的kubeconfig文件所需的所有信息?

2 个答案:

答案 0 :(得分:2)

您可以在/etc/kubernetes/admin.conf下的主节点上找到配置(在v1.8 +上)。

在某些版本的kubernetes上,可以在〜/ .kube

下找到

答案 1 :(得分:1)

我也有兴趣听到这个问题的答案。但我认为这取决于身份验证的设置方式。例如,

  • Minikube使用"客户证书"认证。如果它也将client.key存储在集群上,则可以通过将其与集群的CA公钥组合来构造kubeconfig文件。
  • GKE(Google Kubernetes Engine)在与Kubernetes群集分开的前端使用身份验证(主人是单独托管的)。您无法访问主服务器,但如果可能,您仍然可能无法构建适用于API服务器的令牌。

但是,默认情况下,Pods具有可用于向Kubernetes API进行身份验证的服务帐户令牌。因此,如果您通过SSH连接到节点并将docker exec运行到由Kubernetes管理的容器中,您将看到:

/ # ls run/secrets/kubernetes.io/serviceaccount
ca.crt     namespace  token

您可以合并ca.crttoken来构建一个将向Kubernetes主程序进行身份验证的kubeconfig文件。

因此,您的问题的答案是,如果您通过SSH连接到节点,则可以跳转到Pod并收集信息以撰写您自己的kubeconfig文件。 (有关如何禁用此功能,请参阅this question。我认为有一些解决方案可以默认禁用它以及强制RBAC和禁用ABAC,但我可能错了。)