为什么要使用 kubeadm 手动生成证书?

Using kubeadm why would you want to manually generate certs?

我正在尝试关注这个 tutorial

  1. 自己生成证书而不是依赖 kubeadm 有什么好处?
  2. 如果您自己创建证书,是否会在从 kubeadm 设置集群后自动轮换?

谢谢!

  1. 没有太大优势。 kubeadm 做同样的事情:生成自签名证书。唯一的小优势是您可以在 CSR 中添加一些自定义值,例如城市、组织等

  2. 不是真的。

    • 有一个 kubelet certificate 旋转标志 --rotate-certificates 需要启用。
    • 还有来自大师的证书轮换,kubeadm 可以帮助解决这些 :

      mkdir /etc/kubernetes/pkibak
      mv /etc/kubernetes/pki/* /etc/kubernetes/pkibak
      rm /etc/kubernetes/pki/*
      kubeadm init phase certs all --apiserver-advertise-address=0.0.0.0 --apiserver-cert-extra-sans=x.x.x.x,x.x.x.x
      systemctl restart docker
      

如果您想重新生成 admin.conf 文件,您也可以使用 kubeadm:

$ kubeadm init phase kubeconfig admin \
  --cert-dir /etc/kubernetes/pki \
  --kubeconfig-dir /tmp/.

所有的证书都是我自己创建的,原因是

  1. 我们使用的kubernetes集群可能不会每年都更新,所以需要比较长的证书。我们的应用程序不支持随机 docker 重启,我们不接受 kubeadm phase 命令来重新生成证书并重启 docker。因此,我们创建了所有有效期为 5 年的证书,并将其提供给 kubeadm,它运行良好。现在,我们再也不用担心我们的证书每年都过期了。

  2. No kubeadm 不提供证书的自动轮换功能,这就是我们首先需要更长的证书有效期的原因。

希望对您有所帮助。