概述
TLS BootStrapping 官方文档:https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/#initialization-process
在Kubernetes集群中,Node节点kubelet和kube-proxy上的组件需要与Kubernetes控制平面组件进行通信,特别是kube-apiserver。为了确保通信是私有的,不受干扰,并确保集群的每个组件都与另一个受信任的组件通信,我们强烈建议在节点上使用客户机TLS证书。
kubelet初始化过程
当工作节点启动时,kubelet 执行以下操作:
- 寻找它的
kubeconfig
文件,路径/etc/kubernetes/kubelet.kubeconfig - 检索API服务器和凭据,通常是TLS密钥从URL和签名的证书
kubeconfig
文件 - 尝试使用凭据与 API 服务器通信。
假设 kube-apiserver 成功验证了 kubelet 的凭据,它将把 kubelet 视为有效节点,并开始为其分配 pod。
请注意,上述过程取决于:
- 本地主机上存在密钥和证书
kubeconfig
- 由 kube-apiserver 信任的证书颁发机构 (CA) 签署的证书
以下所有内容都是设置和管理集群的人的责任:
- 创建 CA 密钥和证书
- 将 CA 证书分发到运行 kube-apiserver 的控制平面节点
- 为每个 kubelet 创建密钥和证书;强烈建议为每个 kubelet 设置一个唯一的 CN,具有唯一的 CN
- 使用 CA 密钥签署 kubelet 证书
- 将 kubelet 密钥和签名证书分发到运行 kubelet 的特定节点
查看kubelet.kubeconfig证书有效期:
首先对kubelet.kubeconfi的certificate-authority-data字段进行解密:
然后使用OpenSSL查看证书过期时间:
Bootstrap Initialization
在 bootstrap 初始化过程中,会发生以下情况:
- kubelet 开始
- kubelet认为,它并没有有一个
kubeconfig
文件 - kubelet 搜索并找到一个
bootstrap-kubeconfig
文件 - kubelet 读取其引导程序文件,检索 API 服务器的 URL 和有限使用的“令牌”
- kubelet 连接到 API 服务器,使用令牌进行身份验证
- kubelet 现在具有有限的凭据来创建和检索证书签名请求 (CSR)
- kubelet 为自己创建一个 CSR,并将 signerName 设置为
kubernetes.io/kube-apiserver-client-kubelet
- CSR 通过以下两种方式之一获得批准:
- 如果已配置,kube-controller-manager 会自动批准 CSR
- 如果已配置,外部流程(可能是个人)使用 Kubernetes API 或通过
kubectl
- 为 kubelet 创建证书
- 证书颁发给 kubelet
- kubelet 检索证书
- kubelet
kubeconfig
使用密钥和签名证书创建一个适当的 - kubelet 开始正常运行
- 可选:如果已配置,kubelet 会在证书即将到期时自动请求更新证书
- 根据配置自动或手动批准和颁发更新的证书。
最后
以上就是怕孤单自行车为你收集整理的[译]TLS bootstrapping的全部内容,希望文章能够帮你解决[译]TLS bootstrapping所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复