【发布时间】:2018-01-05 08:17:00
【问题描述】:
如果我能够通过 SSH 连接到集群中的主节点或任何节点,我是否可以获得 1) kubeconfig 文件或 2) 编写我自己的 kubeconfig 文件所需的所有信息?
【问题讨论】:
标签: kubernetes
如果我能够通过 SSH 连接到集群中的主节点或任何节点,我是否可以获得 1) kubeconfig 文件或 2) 编写我自己的 kubeconfig 文件所需的所有信息?
【问题讨论】:
标签: kubernetes
您可以在 /etc/kubernetes/admin.conf 下的主节点上找到配置(在 v1.8+ 上)。
在某些版本的 Kubernetes 上,这可以在 ~/.kube 下找到
【讨论】:
~/.kube 下,假设您位于创建集群的用户的主目录中。如果您不知道如何访问集群,您可以通过 IAM 获得 Owner 权限,上传您的 SSH 公钥(通过重置密码),然后登录该框并找到配置文件。您可能需要使用 sudo 将其 scp 回本地计算机或更改文件的所有权。
我也有兴趣听到这个问题的答案。但我认为这取决于身份验证的设置方式。例如,
kubeconfig 文件。 但是,默认情况下,Pod 有一个服务帐户令牌,可用于向 Kubernetes API 进行身份验证。因此,如果您通过 SSH 连接到一个节点并将 docker exec 运行到由 Kubernetes 管理的容器中,您将看到:
/ # ls run/secrets/kubernetes.io/serviceaccount
ca.crt namespace token
您可以组合 ca.crt 和 token 来构造一个 kubeconfig 文件,该文件将向 Kubernetes 主服务器进行身份验证。
所以你的问题的答案是是的,如果你通过 SSH 连接到一个节点,你可以跳转到一个 Pod 并收集信息来编写你自己的kubeconfig 文件。 (有关如何禁用此功能,请参阅this question。我认为默认情况下也可以通过强制 RBAC 和禁用 ABAC 来禁用它,但我可能错了。)
【讨论】: