kubernetes - 将节点添加到 Kubernetes 控制平面时的证书 key

标签 kubernetes kubeadm

所以我知道如何将工作节点添加到现有的 Kubernetes 1.14 集群(使用 kubeadm 设置):kubeadm token create --print-join-command将打印一个有效的 kubeadm join 命令,其中参数 --token--discovery-token-ca-cert-hash 的值正确。

我目前了解将另一个节点添加到控制平面(主节点)kubeadm join需要附加参数 --experimental-control-plane(无值)和 --certificate-key。这适用于堆叠控制平面和 etcd 节点。

如何(在哪个文件中)为现有集群获取 --certificate-key 的正确值?

UPDATE 我的第一个(也是目前唯一的)主节点是在没有参数 --experimental-upload-certskubeadm init 的情况下创建的(而是由 kubeadm init --pod-network-cidr=10.244.0.0/16 代替)。因此manual certificate distribution应该适用,因此可能的步骤顺序可能是:

  1. /etc/kubernetes/pki/{ca.*,sa.*,front-proxy-sa.*,etcd/ca.*} 中的证书和 key 从第一个复制到新的主节点
  2. 在第一个主节点上运行 kubeadm token create --print-join-command
  3. 在新的主节点上运行带有附加参数 --experimental-control-plane 的打印 kubeadm join 命令

这是正确的程序吗?

最佳答案

给出答案的替代方法是使用 kubeadm 来管理证书,方法是将证书作为 secret 上传到 kube-system(它将在 2 小时后过期)。在初始化阶段不需要传递证书 key

所以你可以这样做

kubeadm init --control-plane-endpoint "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT"

然后在以后

kubeadm init phase upload-certs --upload-certs

该命令将输出可用于创建的 key 的证书 key

kubeadm join LOAD_BALANCER_DNS:LOAD_BALANCER_PORT --token <token> \     
--discovery-token-ca-cert-hash <hash> \
--control-plane \
--certificate-key <key from previous commmand>

关于kubernetes - 将节点添加到 Kubernetes 控制平面时的证书 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55850229/

相关文章:

amazon-ec2 - 在Kubernetes从节点运行的Pod处于ContainerCreating状态

kubernetes - "kubeadm upgrade apply v1.18.0-00"好像没有升级master节点

kubernetes - Rancher 取代项目的网络政策

kubernetes - eks worker节点公网ip分配

kubernetes - 如何在 Kubernetes 部署中使用卷?

docker - Kubectl长时间失败

kubernetes - 尽管PodCIDR在节点上可用,但Kube-Flannel无法获得CIDR

kubernetes - “kubectl exec” 结果为 "error: unable to upgrade connection: pod does not exist"

Dockerizing Spring boot 应用程序以进行 Kubernetes 部署

python - 有没有一种简单的方法可以优雅地关闭 python grpc 服务器?