美文网首页
k8s在一次发布过程中由于label标签不对而出现的问题

k8s在一次发布过程中由于label标签不对而出现的问题

作者: 天草二十六_简村人 | 来源:发表于2022-12-05 14:38 被阅读0次

    一、背景

    云课堂服务需要调整gc参数,为了对比调整的效果,将6个jvm节点分为两组:一组是4个正常节点,另一组是2个灰度节点。

    两个pod的服务名称不同,但是标签相同。

    在service的实现上,取自Pod的标签,包括了正常组和灰度组。示意图见下:


    image.png

    详细配置见第二项。

    有一点值得注意的是,阿里云k8s控制台所做的修改配置,会在下一次部署的时候,被yml内容所覆盖。这也是我们这次出现问题的原因之一。

    二、配置

    在阿里云k8s容器的控制台,修改了它的标签,由默认的app修改为serviceName。

    1、正常节点的Deployment

    spec:
      progressDeadlineSeconds: 600
      replicas: 4
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          serviceName: cloud-xxx-service
    

    2、灰度节点的Deployment

    spec:
      progressDeadlineSeconds: 600
      replicas: 4
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          serviceName: cloud-xxx-service
    

    3、Service服务

    spec:
      selector:
        serviceName: cloud-xxx-service
    

    三、默认的配置

    注意,在部署yml中,使用的标签默认都是app。另外在发布的时候,只更新deployment-xxx.yml,并不是每次去更新service-xxx.yml。

    • deployment-xxx.yml 每次部署,k8s会将pod的标签重置。在上一步手动新增的serviceName标签,会被下面的部署脚本替换为app标签。

    1、Deployment

    spec:
      progressDeadlineSeconds: 600
      replicas: 6
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          app: cloud-xxx-service
    

    2、Service

    并没有更新,仍旧是上次的标签。

    spec:
      selector:
        serviceName: cloud-xxx-service
    

    四、service的实现是SLB

    image.png
    • 第一步,撤销2个灰度节点


      image.png
    • 从下图中可以看出,它的健康状态为空,没有找到对应的pod节点。


      image.png
    • 而在应用监控中,也没有任何流量请求进来。

    • 第二步,修改service的标签,保持和pod的标签一致。

    spec:
      selector:
        app: cloud-xxx-service
    
    • 接着观察slb的健康状态,现在变成了“未打开”状态,正在检测后端服务


      image.png
    • 几分钟后,观察到,状态恢复为“正常”了。


      image.png

    五、总结

    本次的问题原因有二:
    1、发布的标签,默认是app,为了支持灰度,更换了标签为serviceName。影响点除了Deployment外,还有Service。每次部署的时候,只更新了Deployment,而不更新Service。最后导致标签不一致,SLB找不到后端服务。

    2、更改标签,一定要更新在.yml文件,否则会导致你在阿里云k8s控制台所做的修改被覆盖。

    解决办法:
    1、Deployment和Service一起部署,保持标签的一致性。
    2、在修改阿里云k8s控制台的设置时,务必及时更新.yml文件内容。

    相关文章

      网友评论

          本文标题:k8s在一次发布过程中由于label标签不对而出现的问题

          本文链接:https://www.haomeiwen.com/subject/exxifdtx.html