通过ssh将kubeconfig获取到集群中

问题描述 投票:1回答:2

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

kubernetes
2个回答
2
投票

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

在某些版本的kubernetes上,这可以在〜/ .kube下找到


1
投票

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

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

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

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

您可以将ca.crttoken组合在一起构建一个kubeconfig文件,该文件将对Kubernetes master进行身份验证。

所以你的问题的答案是肯定的,如果你SSH到一个节点,你可以跳转到Pod并收集信息来组成你自己的kubeconfig文件。 (请参阅this question,了解如何禁用此功能。我认为有一些解决方案可以通过强制RBAC和禁用ABAC来禁用它,但我可能错了。)

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.