我试图通过TLS引导工作节点加入我现有的1个主节点和2个工作节点的集群。以下是我遵循的过程-
所有这些都可以正常工作,并且我的新工作节点可以毫无问题地加入集群。
但是现在我在引导过程中遇到了称为cluster-info configmap签名的东西。 link
这到底是什么?它对引导过程有什么帮助?我浏览了k8s文档,但他们没有对此提供很多详细信息。我所知道的是,您必须创建一个名称为cluster-info的configmap,但不确定如何以及为什么使用它。
谢谢!
p.s-如果有任何链接可以详细举例说明此过程,请分享。
答案 0 :(得分:1)
您可以在kubernetes代码中找到一些信息:
还有一些信息,当您使用kubeadm自举时:
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的公共访问: