K8S 大搬家求救

2022-10-11 23:37:16 +08:00
 ccde8259

故事背景

首先是,HomeLab 上起了个 K8S 集群,Master 用了一台 Phicomm N1 ,Worker 用 ESXi 起了两台 8C16G 的 Ubuntu 的 VM 。配合 TrueNAS 提供 NFS 、MySQL 作为 Storage 跑了几个应用。

灾难开始

Phicomm N1 装完 Master 的时候感觉这小身板还是能跑得动的。直到我用 Helm 试图装 Prometheus 全家桶的时候,我就知道错了……负载满了,然后炸 swap ,被迫重启。虽然 N1 上有 taint 不会调度应用 Pod ,controller-manager 和 scheduler 半年均重启了 800+次。

试图拯救

N1 的表现让我不得不重新整合一下资源。重新收拾了一下 ESXi 的机器,包括将 TrueNAS 拆回物理机部署,以及将原来的两个 Worker delete 掉,直接物理机部署 Ubuntu ,作为 Master 重新加入进集群。去掉新机器上 NoSchedule 的 taint 后,整个集群又可以欢快的跑起来了。

新的问题

现在最危险的操作就是如何下掉 Phicomm N1 这个 Master 了。不敢贸然的直接 delete node ,不了解是否会有问题。主要是不了解是否需要重新签发证书,去避免原有的 n1 这个域名不可用带来集群不可用。

回头思考

N1 这类羸弱的 4 核 A53+2G 规格显然是吃不消 Kubernetes 这类应用的。是否有比较合适的用途?目前有在考虑准备拿来当 Ceph 的 Mon 节点,凑数做一些 Quorum 工作。或者说如何能在 Kubernetes 上仅跑跑 etcd 之类的?

2913 次点击
所在节点    Kubernetes
11 条回复
ccde8259
2022-10-11 23:55:00 +08:00
能猜到的几个改动点:
1. configmap 里 kubeadm-config 里有个 controlPlaneEndpoint 需要调整
2. configmap 里 kube-proxy 里有个 clusters[0].cluster.server 需要调整
2. /etc/kubernetes/pki 下的 apiserver.crt 、etcd/peer.crt 、etcd/server.crt 三本证书要改
Ansen
2022-10-11 23:59:00 +08:00
目前有几个 master ? 你可以尝试断掉 n1 的网络,看看集群正常不,
ccde8259
2022-10-12 00:34:45 +08:00
@Ansen
1. 双 master
2. N1 炸过重启过一次,N1 失效期间应用 Pod 正常访问,但 kubectl 无法使用,修改.kube/config 到新 master 上无效。
3.想起来可能是因为 etcd 的 quorum 不可能成功。所以 N1 失效以后,猜测 kubelet 把 pod 全 restart 了一遍……
i4t
2022-10-12 01:37:02 +08:00
你直接在 esxi 上新建一个 master ,我理解这样就可以解决了。 二进制的话比较麻烦,证书要全部修改,如果只是 kubeadm 的方式,直接 kubeadm join master 就可以
DAPTX4869
2022-10-12 08:47:53 +08:00
2g 内存敢上 k8s...
hzfyjgw
2022-10-12 09:24:30 +08:00
N1 换 k3s 集群 试试
wellsc
2022-10-12 09:58:44 +08:00
Prometheus eat much memory and disk io
ysicing
2022-10-12 16:01:58 +08:00
@wellsc 新版本改善了不少
ccde8259
2022-10-12 21:10:16 +08:00
作死操作了一下猜想的前两条,把 configmap 里的配置改完以后集群没啥问题。
观察到另一台 master 里面的 /etc/kubernetes/manifests/etcd.yaml 配置上有点问题:initial-cluster 包含两台 etcd 配置。
但是另一台 master 里面的 apiserver.crt 、etcd/peer.crt 、etcd/server.crt 三本证书 CN 是对的。
这让我对于踢掉 n1 这台 master 具有了非常强大的信心。
baeyer
2022-10-12 22:33:47 +08:00
master 之前部署用的是域名吗,是的话随便迁
ccde8259
2022-10-12 22:56:43 +08:00
@baeyer 部署的时候直接就用的是 n1 的主机名……最后发现 kubectl delete node 没什么问题,按着 kubelet 的报错修配置文件就完事了……

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

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

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

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

© 2021 V2EX