2024年PTS - 第2天和第3天……糟糕的日子
内容提要
在升级集群过程中遇到问题,关闭节点后网站崩溃,Fastly无法显示缓存外的内容,无法连接到Argo或kubectl命令行工具。尝试使用rke2代替k3s,但遇到更多问题。最终决定使用k3s,并依赖Hetzner的负载均衡器和健康检查。但由于需要Hetzner运行DNS,而已经依赖CloudFlare,导致困扰。
延伸解读
单节点关闭为何导致全站不可用
文章提到,关闭一个节点进行升级后,Fastly 对所有未缓存内容显示“无健康后端”,导致网站崩溃。这暴露了架构中的单点故障:尽管集群有 3 个节点,但流量可能未正确分发,或健康检查机制未能及时剔除故障节点。读者应检查自己的负载均衡配置和健康检查策略,确保单个节点维护不会影响整体服务。
rke2 与 Hetzner 私有 IP 的兼容性问题
作者尝试用 rke2 替代 k3s,但无法正常运行。rke2 倾向于在特定接口上使用私有 IP,这与 Hetzner 的私有 IP 供应方式冲突。即使参考其他项目或寻求帮助,问题仍未解决。这提醒读者,在选择 Kubernetes 发行版时,需考虑与云厂商网络模型的兼容性,避免因底层网络差异导致部署失败。
DNS 与证书管理的依赖困境
最终决定回归 k3s,并依赖 Hetzner 的负载均衡器和健康检查实现高可用。但使用 Hetzner 负载均衡器配置证书需要将 DNS 也托管在 Hetzner,而作者已依赖 CloudFlare 处理其他事务。这种依赖冲突可能导致管理复杂化。读者在架构设计时,应提前评估 DNS、证书和负载均衡服务的集成关系,避免被单一供应商锁定。
Q&A
在升级集群过程中遇到了什么问题?
在关闭节点后,网站崩溃,Fastly无法显示缓存外的内容。
为什么无法连接到Argo和kubectl命令行工具?
在关闭节点后,无法连接到Argo和kubectl,恢复节点后问题解决。
尝试使用rke2的结果如何?
尝试使用rke2替代k3s,但无法成功运行rke2,遇到更多问题。
为何最终决定继续使用k3s?
由于rke2与Hetzner的私有IP配置冲突,最终决定继续使用k3s。
使用Hetzner的负载均衡器有什么挑战?
需要Hetzner运行DNS,而已依赖CloudFlare,造成困扰。
在集群升级中有哪些备选工具被考虑?
考虑了使用rke2作为替代工具,但最终未能成功。