乐趣区

关于k8s:记一次K8s系统生产事故集群节点证书到期

这个月 9 号,间隔公司 k8s 生产集群部署刚好一整年,k8s 默认的证书到期生效,以致生产零碎多个节点不可用。

排查问题,看到了报错 certificate has expired or is not yet valid。原本是一个非常简单的问题,但过后头脑重大迷糊,居然从新生成证书,将 NotReady 的节点进行重新部署。后果重复试验,重启,导致整个集群所有节点都不可用。

这不是最遭的,更糟的是加班到深夜 3 点多,头脑迷糊的我将整个集群从新进行了部署,尽管还有仅剩的理智,想着只有不毁坏 etcd 的数据,集群是能从新复原的。

大失所望,集群起来了,但所有的 pod 无奈启动,因为不知什么起因 k8s 的集群服务网段产生了变动,导致新的网段证书无奈受权。批改网段,pod 终于起来了。但令我万分丧气的是,尽管 所有的 pvc 都没有变动,还是之前 etcd 数据中的 pvc,但。。。

数据库尽然是空的,是空的,是空的。。。

尽管零碎正式启动也就一个多月的工夫,但这两个月也有了很多生产数据,最要害的是,原本就对我有所不满的主管,终于有理由对我之前提的所有的技术计划说不了。

k8s,干掉,MongoDB,干掉,go 语言,干掉,我就乖乖的弄前端那一亩三分地吧。所有的服务器,干掉 Linux,上 Windows,后端的服务器,居然上了个 win10,只是因为 docker 在 win10 下才有可视化的保护界面。

公司最大的业务零碎 MES,简直都是我一个人写的,终于在 10 月底上线。老板很快乐,还请咱们团队吃了饭。但这些天年底绩效评估,没有功绩,只有过错。绩效简直不合格,来年的涨薪不要再想。终于我彻底地心灰意冷了。

当初还不晓得为什么我的服务都起来了,用的也是之前 etcd 的数据,之前的 pod 和 pvc 配置都在,存储用的是 ceph,为什么数据就全丢了。还是怪本人学艺不精,遇事头脑不清晰,最重要的是,没有和主管处好关系。之前测试集群就曾经挂掉,我猜测是同样的起因,但因为重启零碎没有胜利,无奈再连贯。之前的运维被挤走,新来的运维服务器这块还没有交接。因为和主管不和,我居然就不想和他谈话,让他在运维端把机器重启一下,失去了最开始发现和解决问题的最佳时机。在此吸取教训,当前不论怎么样,要和下级处好关系。

在此把解决办法贴说一下,心愿遇到此问题的其余小伙伴,当前可能顺利解决。

其实很简略啊。

  1. 删除过期的节点
    kubectl delete node [node-name]
  2. 进入被删除的节点,重启 kubelet
    systemctl restart kubelet

过一段时间之后,查看节点
kubectl get nodes
会发现之前删除的节点从新呈现,但节点 AGE 是最新的工夫

退出移动版