k8s中TLS引导中的cluster-info configmap是什么?

3
我正在尝试使用TLS引导工作节点加入现有的1个主节点和2个工作节点的集群。以下是我遵循的过程 -
  1. 在主节点上创建引导令牌以进行初始身份验证。
  2. 创建适当的集群角色绑定,以使kubelet能够提出、批准和轮换证书。
  3. 在工作节点上创建一个引导kubeconfig文件。
  4. 创建kubelet服务并启动它。
这一切都很好,我的新工作节点能够无问题地加入集群。
但是现在我遇到了引导过程中称为cluster-info configmap签名的东西。 link 这到底是什么,它如何帮助我进行引导过程?我阅读了k8s文档,但它们没有详细介绍这个问题。我只知道你必须创建一个名称为cluster-info的configmap,但不确定如何使用它以及为什么要使用它。
提前感谢!
附注-如果有任何详细阐述此过程的链接,请分享。
1个回答

2
您可以在 Kubernetes 代码中找到一些信息:

https://github.com/kubernetes/kubernetes/blob/1493757d69a8e0032128a5dadc56b168b00a6519/cmd/kubeadm/app/phases/bootstraptoken/clusterinfo/clusterinfo.go

一些信息,当您使用kubeadm进行引导时:

https://github.com/kubernetes/community/blob/master/contributors/design-proposals/cluster-lifecycle/bootstrap-discovery.md

kubeadm将执行以下流程:
kubeadm通过TLS连接到指定的API服务器地址。由于我们还没有根证书来进行信任,这是一种不安全的连接,服务器证书未经验证。kubeadm根本不提供身份验证凭据。
实施注意事项:API服务器不必公开新的特殊不安全HTTP端点。 (D)DoS问题:在此流程可用/公开启用之前(在不引导时),API服务器必须支持速率限制。
kubeadm请求包含上述kubeconfig文件的ConfigMap。 该ConfigMap存在于一个众所周知的URL中:
https:///api/v1/namespaces/kube-public/configmaps/cluster-info
该ConfigMap真正是公共的。用户不需要进行身份验证就可以读取该ConfigMap。实际上,客户端不能在此处使用令牌作为身份验证凭据,因为我们尚未信任此端点。
API服务器以正常方式返回包含kubeconfig内容的ConfigMap 该ConfigMap上的额外数据项包含JWS签名。kubeadm根据令牌ID部分找到正确的签名。
kubeadm验证了JWS并且现在可以信任服务器。由于kubeconfig文件中的CA证书是可信的,因此进一步通信更加简单。
作为保护集群的一种方式,您可以关闭对集群信息的公共访问:

https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-join#turning-off-public-access-to-the-cluster-info-configmap


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接