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