V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ccde8259
V2EX  ›  Kubernetes

K8S 大搬家求救

  •  
  •   ccde8259 · 2022-10-11 23:37:16 +08:00 · 2903 次点击
    这是一个创建于 785 天前的主题,其中的信息可能已经有所发展或是发生改变。

    故事背景

    首先是,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 之类的?

    11 条回复    2022-10-12 22:56:43 +08:00
    ccde8259
        1
    ccde8259  
    OP
       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
        2
    Ansen  
       2022-10-11 23:59:00 +08:00 via iPhone
    目前有几个 master ? 你可以尝试断掉 n1 的网络,看看集群正常不,
    ccde8259
        3
    ccde8259  
    OP
       2022-10-12 00:34:45 +08:00 via iPhone
    @Ansen
    1. 双 master
    2. N1 炸过重启过一次,N1 失效期间应用 Pod 正常访问,但 kubectl 无法使用,修改.kube/config 到新 master 上无效。
    3.想起来可能是因为 etcd 的 quorum 不可能成功。所以 N1 失效以后,猜测 kubelet 把 pod 全 restart 了一遍……
    i4t
        4
    i4t  
       2022-10-12 01:37:02 +08:00
    你直接在 esxi 上新建一个 master ,我理解这样就可以解决了。 二进制的话比较麻烦,证书要全部修改,如果只是 kubeadm 的方式,直接 kubeadm join master 就可以
    DAPTX4869
        5
    DAPTX4869  
       2022-10-12 08:47:53 +08:00
    2g 内存敢上 k8s...
    hzfyjgw
        6
    hzfyjgw  
       2022-10-12 09:24:30 +08:00
    N1 换 k3s 集群 试试
    wellsc
        7
    wellsc  
       2022-10-12 09:58:44 +08:00
    Prometheus eat much memory and disk io
    ysicing
        8
    ysicing  
       2022-10-12 16:01:58 +08:00
    @wellsc 新版本改善了不少
    ccde8259
        9
    ccde8259  
    OP
       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
        10
    baeyer  
       2022-10-12 22:33:47 +08:00 via Android
    master 之前部署用的是域名吗,是的话随便迁
    ccde8259
        11
    ccde8259  
    OP
       2022-10-12 22:56:43 +08:00
    @baeyer 部署的时候直接就用的是 n1 的主机名……最后发现 kubectl delete node 没什么问题,按着 kubelet 的报错修配置文件就完事了……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6037 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:01 · PVG 10:01 · LAX 18:01 · JFK 21:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.