【问题标题】:Certificate key when adding node to Kubernetes control plane将节点添加到 Kubernetes 控制平面时的证书密钥
【发布时间】:2019-09-14 22:36:16
【问题描述】:

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

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

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

更新我的第一个(也是目前唯一的)主节点是在没有 --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.*} 中的证书和密钥从第一个主节点复制到新的主节点
  2. 在第一个主节点上运行kubeadm token create --print-join-command
  3. 在新的主节点上运行带有附加参数--experimental-control-plane 的打印kubeadm join 命令

这是正确的程序吗?

【问题讨论】:

    标签: kubernetes kubeadm


    【解决方案1】:

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

    所以你可以这样做

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

    然后在以后

    kubeadm init phase upload-certs --upload-certs
    

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

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

    【讨论】:

      【解决方案2】:

      根据documentation,此命令提供了一个新的解密密钥:

      kubeadm init phase upload-certs --experimental-upload-certs
      

      【讨论】:

        【解决方案3】:

        我在 1.17 中一直在努力解决这个问题,最后发现这个命令会预先生成一个证书密钥,我可以在 kubeadmn initkubeadmn join 中使用它。要使其正常工作,您需要传递 --upload-certs 以及在运行 kubeadmn init 时,类似于您在 1.14 中记录的内容。

        # generate a certificate-key to be used kubeadm alpha certs certificate-key

        # initialize first master using above key, --upload-certs (and other parameters) kubeadm init --control-plane-endpoint $API_SERVER:6443 --upload-certs --apiserver-cert-extra-sans $API_SERVER --certificate-key $CERT-KEY

        # join other masters using the same certificate-key kubeadm join $API_SERVER:6443 --token $TOKEN --discovery-token-ca-cert-hash $CAHASH --control-plane --certificate-key $CERT-KEY

        【讨论】:

          猜你喜欢
          • 2021-07-31
          • 2018-12-23
          • 2023-02-09
          • 2013-04-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-24
          相关资源
          最近更新 更多