• DevOps
  • 执行流水线后,Kubesphere判断记录在Jenkins上不存在,进而删除了执行记录,但实际上Jenkins上是有历史记录的

chilianyi 是升级Kubesphere后发生的,我把Kubesphere从3.3.1升级到了3.3.2,我没主动替换过某个image

    Kanade 出问题的 流水线,里面配置了 自动清理策略吗

    构建记录最大数量是几天。

      chilianyi 有的配置,有的没有,不过都存在问题,大多没配置

      chilianyi 反复构建取消,或者依赖容器比较大,jenkins初始化慢的时候,更容易出现这种现象

      看下 这种 job 里有对应日志吗。 这个 job 是 根据配置的流水线记录天数和数量,做自动清理动作的。看下是不是被自动清理掉了,导致页面看不到了

        chilianyi

        只有这么多日志,三个job基本一样,我的两个流水线一个配了7天10条限制,另一个无限制,上面那个连续执行18次的就是配置了7天10条的

        应该被 devops controller 给删掉了。

        devops controller 向 jenkins 中触发构建,获得 id,然后再用这个 id 去 jenkins 中查详情时,没有查到,就报错,然后触发了删除动作。

          chilianyi jenkins面板是能看到记录的,即便在Kubesphere删除之后,莫非是Kubesphere查的时候,Jenkins还没创建好记录……

          会不会和3.3.2的记录同步更新有关系

            Kanade 看你提供的这个截图,trigger 和 not exist in jenkins,delete it 相差只有几 ms。

            trigger 的时候,会触发生成一个 jenkins 的构建记录,并获取到 id
            然后再去 jenkins 中查这个 id,返回不存在,这个时间 很短,几 ms,然后触发了 delete。
            jenkins 里还能看到,只是 devops 流水线里把记录删掉了。

              chilianyi 那要解决这个问题,是不是只能退回旧版本了,这算是个bug吗?

                Kanade 针对这个问题,构建了一个临时镜像,麻烦更新下镜像验证下;
                更新 devops-controller 镜像的命令:

                kubectl patch cc ks-installer -n kubesphere-system –type=json –patch ‘[{“op”: “replace”, “path”: “/spec/ks_devops_controller/repo”, “value”: “jackwithdocker/devops-controller”}, {“op”: “replace”, “path”: “/spec/ks_devops_controller/tag”, “value”: “ks-v3.3.2-patch”}]’

                kubectl patch deployment devops-controller -n kubesphere-devops-system –patch ‘{“spec”: {“template”: {“spec”: {“containers”: [{“name”: “ks-devops”,“image”: “jackwithdocker/devops-controller:ks-v3.3.2-patch”}]}}}}’

                  yudong 第一条命令返回The request is invalid,第二条命令成功更换了镜像,我试了试,没在出现删除记录的情况

                    Kanade 第一条命令报这个错误是由于之前没有执行过 patch,可以把第一条命令换成这个:

                    kubectl patch cc ks-installer -n kubesphere-system –type=json –patch ‘[{“op”: “add”, “path”: “/spec/ks_devops_controller”, “value”: {“repo”: “jackwithdocker/devops-controller”, “tag”: “ks-v3.3.2-patch”}}]’

                      yudong 非常给力,问题没再出现

                      不过感觉Jenkins还是有点经不住折腾,我这里出现了一个删不掉的文件夹,在Jenkins面板上删除也会报错,应该不是Kubesphere的问题。

                      另外请教个旁的事,把流水线运行结果存在ConfigMap里是出于什么考虑呢?感觉这样集群配置字典里的东西会越积越多

                        Kanade 运行结果存到 ConfigMap 是因为有些流水线 step 结果数据量比较大,存 Annotation 里超出了 k8s 的限制;一个 Pipelinerun 存一个 ConfigMap,清理 Pipelinerun 的时也会同步清理掉对应的 ConfigMap;

                          yudong 一个小建议

                          在集群管理页面的配置字典里,通过项目过滤下拉单,查不到Devops项目,不过隶属于Devops项目的ConfigMap都在配置字典列表里,多了以后可能前十几页都是这些,对管理员来说不影响使用,但是感受上不够精简,重复的东西比较多。

                          如果能把这些东西在这里隐藏掉,或者放到Devops项目里展示,可能显得更整洁一些

                          商业产品与合作咨询