• k8s 开船记-脚踏两只船:船儿还是旧的好,不翻船才是硬道理


    自从上次开始脚踏两只船(2个独立的k8s集群同时运行),园子暂时用奢侈的土豪方式过上了安稳的船上生活。

    这种方式除了费钱之外,还带来一个问题,我们的集装箱自动装船系统(基于gitlab-ci的自动化部署)不灵了,不支持同时向2艘船装同样的货(2个gitlab-runner运行同1个job),后来,我们通过 gitlab 的秘密武器 parallel-matrix 解决了。

    deploy-prod:
      stage: deploy
      tags:
        - k8s-prod
      variables:
        DEPLOY_CLUSTER: ${DEPLOY_CLUSTER}
      parallel:
        matrix:
          - DEPLOY_CLUSTER: [k8s-cluster0, k8s-cluster1]

    注:上面的 DEPLOY_RUNNER 变量在部署中并没有实际用到,只是为了欺骗 gitlab-runner 以实现多个 runner 运行同一个 job。

    这2艘船,一艘是旧船,引擎用的是 kubernetes 1.17.0。一艘是新船,引擎用的是 kubernetes 1.23.3,新船是今年春节后投入使用的,出现因大量 pod 同时  CrashLoopBackOff 而翻船的是新船。

    上次翻船的博文中园友 Dicky_Zhang 的评论:

    版本不对吧,一般不是建议使用1.23.5以上得版本吗,你们使用得.3,虽然说可能问题不大

    让我们对新船产生了更多的怀疑,现在有了2只船,就更好验证了。

    上周末我们停航了旧船(下线旧k8s集群),只投用新船,周六一切正常,周日又出现部分 pod 无缘无故 CrashLoopBackOff,后来投用新船恢复,证明了单独航行新船肯定会出问题

    这周一2艘船并驾齐驱,一天平稳航行,一切正常。

    今天周二依然是2艘船并驾齐驱,上午的访问高峰,新船又出问题了,整个集群有近 40% 的 pod 突然 CrashLoopBackOff(只有新闻应用因为所有 pod 都挂了,部分访问受影响),而旧船稳如泰山,证明了同时航行新旧船,新船会出问题,旧船不会

    接下来,进行更重要的验证,将新船下线,在没有负载的情况下新船上的那些 CrashLoopBackOff 的 pod 很快就恢复正常。而没有新船相伴、独自航行的旧船,面对访问高峰的狂风暴雨,依然稳如泰山地如风平浪静般航行,证明了单独航行旧船不会出问题

    通过今天的验证,我们推断 kubernetes 1.23.3 可能存在稳定性问题,接下来我们会尝试看能不能将新船的引擎降级为 1.22.8。

    【更新1:18:00】

    没找到降级的方法,准备铤而走险反其道行之——升级至 1.23.5,于是看了看 1.23.5 的 CHANGELOG ,有一个重大发现,竟然修复了一个内存泄漏(goroutine leaks)问题:

    • Bump sigs.k8s.io/apiserver-network-proxy/konnectivity-client to v0.0.30, fixing goroutine leaks in kube-apiserver. (#108438, @andrewsykim) [SIG API Machinery, Auth and Cloud Provider]

    联系到我们遇到的翻船问题,我们推断内存泄漏引发翻船的嫌疑更大,升级到 1.23.5 正好可以验证。

    【更新2:19:45】

    引擎升级到 1.23.5 的新船已上线航行。

    【更新3:3-23 10:21】

    升级到 1.23.5 的新船也出现了同样的问题。

  • 相关阅读:
    ArcGIS: 第二届全国大学生GIS技能大赛(广西师范学院)详解-下午题
    如何流畅进入Github
    通用web图片上传封装
    【虚拟机】VMware的NAT模式、桥接模式、仅主机模式
    c++两个整数相除,如何只入不舍小数 2023/10/7 下午9:27:57
    协同过滤算法
    Ovalbumin-valine 鸡卵白蛋白修饰缬氨酸,valine-PEG-OVA 缬氨酸-聚乙二醇-卵清蛋白
    决策树可视化-graphviz安装
    ios 网站打包操作步骤介绍
    mp4文件怎样提取mp3音频文件
  • 原文地址:https://www.cnblogs.com/cmt/p/16039407.html