我的 k8s 集群又双叒叕挂了😅

2023-08-14 15:10:50 +08:00
 BeautifulSoap

不知道自己的集群是第几次挂了😪而且每次总有不同的原因导致集群挂掉

这次是自己一台 2T 的服务器(主节点之一)剩余空间在低于 200G 的时候,触发了节点的 disk pressure ( k8s 默认剩余 10%就触发。。。。。)。然后这台服务器上所有 pods 状态都变为 Eviction 全部被驱逐,然后就成了 pod 被驱逐,又创建的循环。等注意到的时候,集群已经出现了 5000 多个 Eviction 的 pods 。( PS:这时候我的集群都还有反应

更改 kubelet 参数,将触发的限制从磁盘剩余 10%改成 10GiB 后本以为就恢复了,但是不知为什么更改之后集群直接就挂了( kubectl 提示服务未运行)。因为我是多主节点,于是连上另一台主节点想看看什么情况,另一台主节点上输入 kubectl get nodes 后直接卡死,没法获得信息,并且这台主节点机器还 cpu 占用 100%(得亏我这台主节点 vps 是跑在 OVH 上的,要是其他提供商这样占用 cpu 估计直接就把我机器封了)。说好的 k8s 多主节点高可用呢?怎么你一台主节点炸了整个集群都炸了?

然后看看 2T 的主节点执行 log ,似乎是 etcd 不明原因启动错误,折腾半天才好。自建 k8s 集群后这一年多最大感觉就是累感不爱,k8s 这东西的复杂真不是人类可以掌握,不是专心运维的话坑太多,这玩意存在在世上真的能让更多人变得幸福吗

6310 次点击
所在节点    程序员
46 条回复
juzisang
2023-08-15 19:33:10 +08:00
docker 主要是很轻量可控,不像 K8S 的 helm chart ,单单配置文件就出奇的复杂,而且用 k8s ,很多库都默认你要高可用,提供的配置极度占资源,各种概念也层出不穷,版本也眼花缭乱。最主要的还是很难把控,部署个外部应用很简单啊,一行代码搞定,鬼知道后面的 yaml 成千上百行,出问题根本不知道啥导致的,只能删了重建。
flyqie
2023-08-15 19:36:35 +08:00
@juzisang #41

k8s 似乎最开始定位就是企业级吧。

所以对高可用要求挺高,个人用的话,有些高可用确实没必要。。服务爆炸了也不会有啥特别大的问题。
rnyrnyrny
2023-08-15 19:44:52 +08:00
1. 关掉磁盘空间导致的驱逐
`/etc/rancher/k3s/config.yaml`
```
kubelet-arg:
- "eviction-hard="
```
2. 多 master 其实不一定有用,一个出了问题,其他 master 的负载会变的很高,导致服务卡死。有时候一台稳定的机器可能更好。。
3. 最好用专门的 master 节点,不要跑别的服务了(成本也上去了)

PS
自建的 k3s 集群目前有 20 台 VPS ,快乐是真的快乐
ExplodingFKL
2023-08-16 08:59:21 +08:00
@BeautifulSoap #15 监控的意义主要是预警,像楼主这种情况完全可以在 node 磁盘占用到 80 % 告警并通知手动处理,避免集群完全宕机后再去做灾难恢复
chf007
2023-08-16 13:50:39 +08:00
用 rk2 + rancher 在公司搭了个测试环境,由于是跑在虚拟机里的,公司断了 2 次电,etcd 必挂,rk2 起不来。由于没有专门的运维,心累,后来直接上阿里云 ACK 了,省心多了,就是成本有点高
BeautifulSoap
2023-08-16 14:37:39 +08:00
@ExplodingFKL 你如果看了我主贴的话应该能注意到,我的集群并没有因为磁盘空间不够发生宕机,宕机是发生在我调整节点设置让被驱逐的节点正常上线之后。而且这次是我下了个 1.7T 多的种子,bt 软件直接预分配了 1.7T 磁盘空间,因为是 ssd 硬盘所以基本不给你反应时间,即便有剩余空间告警也是束手无策的。只能说有告警我能早点注意到,但问题发生依旧会发生

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/965138

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX