向Kubernetes控制平面添加节点时的证书密钥

向Kubernetes控制平面添加节点时的证书密钥,kubernetes,kubeadm,Kubernetes,Kubeadm,因此,我知道如何将工作节点添加到现有的Kubernetes 1.14集群(该集群是使用kubeadm设置的):将打印一个有效的kubeadm join命令,其中包含参数--token和--discovery token ca cert hash的正确值 我目前了解到,将另一个节点添加到控制平面(主节点)需要额外的参数--实验控制平面(w/o值)和--证书密钥。这适用于堆叠控制平面和etcd节点 如何(在哪个文件中)为现有群集获取--证书密钥的正确值 更新我的第一个(也是目前唯一的一个)主节点是在

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

我目前了解到,将另一个节点添加到控制平面(主节点)需要额外的参数
--实验控制平面
(w/o值)和
--证书密钥
。这适用于堆叠控制平面和etcd节点

如何(在哪个文件中)为现有群集获取
--证书密钥
的正确值

更新我的第一个(也是目前唯一的一个)主节点是在没有参数
的情况下创建的——实验性上传证书
kubeadm init
(而是通过
kubeadm init--pod network cidr=10.244.0.0/16
)。因此应适用,因此可能的步骤顺序为:

  • /etc/kubernetes/pki/{ca.*,sa.*,front proxy sa.*,etcd/ca.*}
    中的证书和密钥从第一个复制到新的主节点
  • 在第一个主节点上运行
    kubeadm令牌创建--print join命令
  • 在新主节点上运行带有附加参数的打印的
    kubeadm join
    命令
    --实验控制平面
  • 这是正确的程序吗?

    根据,此命令提供了一个新的说明键:

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

    我在1.17中一直在努力解决这个问题,最后发现这个命令将为pre-generate提供一个证书密钥,我可以在
    kubeadmn init
    kubeadmn join
    中使用它。要使其工作,您需要通过
    --上传证书
    ,以及运行
    kubeadmn init
    时,类似于您在1.14中提到的

    #生成要使用的证书密钥
    kubeadm alpha证书密钥

    #使用上述键初始化第一台主机,--上载证书(和其他参数)
    kubeadm init--控制平面端点$API_服务器:6443--上载证书--apiserver证书附加SAN$API_服务器--证书密钥$cert-key

    #使用相同的证书密钥加入其他主机
    
    kubeadm join$API_服务器:6443——令牌$token——发现令牌ca cert hash$CAHASH——控制平面——证书密钥$cert-key

    给出答案的另一种方法是使用
    kubeadm
    将证书作为机密上传到
    kube系统
    (将在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>
    
    kubeadm加入负载均衡器\u DNS:负载均衡器\u端口--令牌\
    --发现令牌ca证书哈希\
    --控制平面\
    --证书密钥