Kops 的 Kubelet PKI 管理

Kops' Kubelet PKI management

[meta:这里关于 SO 的 Kubernetes 问题 activity 比 Serverfault 多,所以即使这不是编程问题也请在这里提问。如果在这里询问不合适,请标记迁移]

总结:kubelet 证书是如何在 Kops 中签名的?至少在我们的环境中,他们似乎使用 CA per node.

详情

在我们的 Kops 部署中检查 kubelet 端点的 SSL 证书(Kops 正在管理 Kubernetes v1.12.9)我看到以下证书详细信息

subject=CN = ip-10-1-2-3.ec2.internal@1561089780
issuer=CN = ip-10-1-2-3.ec2.internal-ca@1561089780

请注意,发行者似乎特定于该节点。 api-server 实际上是如何与 kubelet 通信的?由于未知的(api-服务器)CA,身份验证肯定会失败。但这显然是有效的,因为集群可以正常工作,但我不明白为什么。

相比之下,出于学习目的,我设置了一个集群 manually,那里的 Kubelet 证书主题和颁发者是:

subject=CN=system:node:worker-1
issuer=CN=Kubernetes

(省略了一些位置样板)

正如我所料,它有一个共同的 CA 签署所有 Kubelet 证书 - api-服务器然后使用该 CA 和 --client-ca-file 来启用对 Kubelet 的授权。

就我而言,这样做的原因是因为 Kubelet 是通过 webhook 授权的,所以证书不会发挥作用。