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

我试图通过TLS引导工作节点加入我现有的1个主节点和2个工作节点的集群。以下是我遵循的过程-

  1. 在主服务器上创建一个引导令牌以进行初始身份验证。
  2. 创建适当的集群角色绑定,以使kubelet可以提升,批准和轮换证书。
  3. 在辅助节点上创建bootstrap-kubeconfig文件。
  4. 创建一个kubelet服务并启动它。

所有这些都可以正常工作,并且我的新工作节点可以毫无问题地加入集群。

但是现在我在引导过程中遇到了称为cluster-info configmap签名的东西。 link

这到底是什么?它对引导过程有什么帮助?我浏览了k8s文档,但他们没有对此提供很多详细信息。我所知道的是,您必须创建一个名称为cluster-info的configmap,但不确定如何以及为什么使用它。

谢谢!

p.s-如果有任何链接可以详细举例说明此过程,请分享。

jiangjunhero 回答:什么是k8s的TLS引导中的cluster-info configmap?

您可以在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 Server必须支持速率限制。

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证书,因此进一步的通信更加简单

作为保护群集的一种方法,您可以关闭对cluster-info的公共访问:

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

本文链接:https://www.f2er.com/3166115.html

大家都在问