恢复没有证书的Kubernetes集群

时间:2020-07-21 22:46:28

标签: kubernetes kubeadm

我在实验室中有以下情况,希望了解是否可以恢复。该群集已损坏,但由于我正在测试该群集破裂到可以恢复的程度,因此非常期望。

Env: Kubernetes 1.16.3 Kubespray

我正在做一些试验,但是在此群集上没有任何数据,但是我仍然非常想知道是否可以恢复。我有一个具有原始配置的健康3节点etcd群集(所有名称空间,工作负载,configmap等)。我没有控制平面的原始SSL证书。

我从群集中删除了所有节点(重置kubeadm)。我有原始清单和kubelet配置,并尝试重新初始化主节点。它比我原本想的要成功得多,但并不理想。 成功进行kubeadm初始化后,kubelet和控制平面容器会成功启动,但是不会创建相应的容器。我可以将kube API与kubectl一起使用,并查看节点,名称空间,部署等。

在kube-system命名空间中,所有守护程序集仍然存在,但pod不会以以下消息开头:

49m         Warning   FailedCreate        daemonset/kube-proxy                                Error creating: Timeout: request did not complete within requested timeout

kubelet记录以下重新控制平面吊舱

Jul 21 22:30:02 k8s-master-4 kubelet[13791]: E0721 22:30:02.088787   13791 kubelet.go:1664] Failed creating a mirror pod for "kube-scheduler-k8s-master-4_kube-system(3e128801ef687b022f6c8ae175c9c56d)": Timeout: request did not complete within requested timeout
Jul 21 22:30:53 k8s-master-4 kubelet[13791]: E0721 22:30:53.089517   13791 kubelet.go:1664] Failed creating a mirror pod for "kube-controller-manager-k8s-master-4_kube-system(da5cfae13814fa171a320ce0605de98f)": Timeout: request did not complete within requested timeout

在kubeadm重置/初始化过程中,我已经有一些步骤,可以到达现在的位置(删除服务帐户以重置令牌,删除一些configmap(kuebadm等))

我的问题是-是否可以在没有证书的情况下恢复控制平面。而且,如果它是复杂但仍可能的过程,我仍然想知道。

感谢所有帮助

Henro

1 个答案:

答案 0 :(得分:1)

是否可以在没有证书的情况下恢复控制平面。

是的,应该能够。证书?是必需的,但不必与您最初创建集群时使用的证书完全相同。包括certificates在内的所有CA都可以全面旋转。 kubelet甚至支持certificate auto-rotation。配置需要在所有地方都匹配。意味着CA必须与创建CSR的CA相同,并且证书密钥/证书必须从相同的CSR创建。 ?

此外,所有组件都需要使用相同的CA并能够通过API服务器(kube-controller-manager,kube-scheduler等)进行身份验证。我不确定您所看到的日志,但看起来kube-controller-manager和kube-scheduler无法验证和加入集群。所以我来看看他们的证书配置:

  • MyProject\MyProject._sln
  • /etc/kubernetes/kube-controller-manager.conf

此外,您还会在/etc/kubernetes/kube-scheduler.conf下找到需要验证的每个PKI组件

✌️<​​/ p>