当前位置 : 主页 > 编程语言 > java >

jenkins-k8s-Class not found io.kubernetes.client.openapi.models.V1Service报错

来源:互联网 收集:自由互联 发布时间:2022-08-10
1.背景 由于jenkins需要迁移的原因,公司的jenkins升级至最新版本。相同的ci/cd流程,以及相同的执行脚本,但是就是在最后一步cd推送至kubernetes集群的时候报错。 本次案例相关版本: Je

1.背景

  由于jenkins需要迁移的原因,公司的jenkins升级至最新版本。相同的ci/cd流程,以及相同的执行脚本,但是就是在最后一步cd推送至kubernetes集群的时候报错。

  本次案例相关版本:

  • Jenkins版本(2.2.338)
  • Kubernetes Continuous Deploy(2.3.1)
  • Jackson 2 api(2.13.1)

  报错见以下:

ERROR: ERROR: Can't construct a java object for tag:yaml.org,2002:io.kubernetes.client.openapi.models.V1Service; exception=Class not found: io.kubernetes.client.openapi.models.V1Service
in 'reader', line 1, column 1:
apiVersion: v1
^

hudson.remoting.ProxyException: Can't construct a java object for tag:yaml.org,2002:io.kubernetes.client.openapi.models.V1Service; exception=Class not found: io.kubernetes.client.openapi.models.V1Service
in 'reader', line 1, column 1
apiVersion: v1

jenkins-k8s-Class not found io.kubernetes.client.openapi.models.V1Service报错_搜索

 

2.排错过程

  发现问题后就开始百度搜索,刚开始搜索到一篇文章,解决步骤如以下:

  1.git clone https://github.com/jenkinsci/jackson2-api-plugin【选择你需要的版本】

  2.删除根pom一下内容

import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>

<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>${jackson.version}</version>
<exclusions>
<exclusion>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>io.jenkins.plugins</groupId>
<artifactId>snakeyaml-api</artifactId>
</dependency>

  3.执行mvn clean install打包

  有可能会build失败,报错[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce (display-info) on project jackson2-api: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed. -> [Help 1]

  在CommandLine填写 install -Denforcer.skip=true

  选择该配置执行

jenkins-k8s-Class not found io.kubernetes.client.openapi.models.V1Service报错_搜索_02

  4.将target中jackson2-api.hpi上传至jenkins插件

jenkins-k8s-Class not found io.kubernetes.client.openapi.models.V1Service报错_java_03

 

  以上案例发现几个问题,对我这次修复不太适用。

  1.该文章中修复方法的jenkins版本肯定比2.338版本要早几个版本。导致插件版本不同。如jackson2的版本(在2022年3月10日 时),在git最新的tag为2.12.4,但是在2.338的jenkins版本里,最新的版本为2.13.1-246.我这边如果真的替换编译也不一定能成功。

  2.重新编译时间非常长,在一台4C8G的机器上,跑了2小时,可能是网速的问题,但是最后还是报错了。

  3.搜索某些答案,其中提到,如果重新编译jackson2的插件,可能导致其他一些关联插件没有办法使用。

  由于该方式成本过高,只能查找其他解决方案。

 

3.问题解决

  于是仔细一想,只有cd部分出现问题,果然在网上找到这部分案例。该案例说将kubernetes cd插件降级至1.0.0即可。

  根据以上案例,可以看出这篇案例不要降级jackson 插件,不然可能会对现有插件有影响。

  

jenkins-k8s-Class not found io.kubernetes.client.openapi.models.V1Service报错_git_04

  最后按照这篇文章降级kubernetes插件至1.0.0完美解决。

jenkins-k8s-Class not found io.kubernetes.client.openapi.models.V1Service报错_java_05

  以下是我降级后的截图。

jenkins-k8s-Class not found io.kubernetes.client.openapi.models.V1Service报错_java_06


 

  相关参考:

​​  https://stackoverflow.com/questions/62688901/class-not-found-io-kubernetes-client-openapi-models-v1service​​

 

 

作者:​​小家电维修​​

转世燕还故榻,为你衔来二月的花。



上一篇:Java内存溢出OOM使用Mat分析
下一篇:没有了
网友评论