如果我能够SSH到主服务器或集群中的任何节点,我是否可以获得1)kubeconfig文件或2)组成我自己的kubeconfig文件所需的所有信息?
您可以在/etc/kubernetes/admin.conf下的主节点上找到配置(在v1.8 +上)。
在某些版本的kubernetes上,这可以在〜/ .kube下找到
我也有兴趣听到这个问题的答案。但我认为这取决于身份验证的设置方式。例如,
kubeconfig
文件与集群的CA公钥组合来构建它。但是,默认情况下,Pod具有服务帐户令牌,可用于向Kubernetes API进行身份验证。因此,如果您通过SSH连接到节点并将docker exec
运行到由Kubernetes管理的容器中,您将看到:
/ # ls run/secrets/kubernetes.io/serviceaccount
ca.crt namespace token
您可以将ca.crt
和token
组合在一起构建一个kubeconfig
文件,该文件将对Kubernetes master进行身份验证。
所以你的问题的答案是肯定的,如果你SSH到一个节点,你可以跳转到Pod并收集信息来组成你自己的kubeconfig
文件。 (请参阅this question,了解如何禁用此功能。我认为有一些解决方案可以通过强制RBAC和禁用ABAC来禁用它,但我可能错了。)