Kubernetes Continuous Deploy插件出现问题

时间:2020-07-23 16:58:05

标签: java kubernetes jenkins-plugins

使用Kubernetes Continuous Deploy插件将Kubernetes与Jenkins集成时,我遇到了错误。

此插件在Jenkins 2.190.3版之前都可以使用,但是在升级jenkins之后,它开始出现以下错误。

以下错误看起来像Yaml文件问题,但是当我手动执行时,yaml文件可以正常工作。

即使我无法降级kubernetes版本。

Jenkins Version : 2.235.2
Kubernetes Continuous Deploy Plugin : 2.3.0
13:19:19 Starting Kubernetes deployment
13:19:19 Loading configuration: /var/jenkins_home/workspace/bom_sso/bom_rs_deployment.yaml
13:19:19 ERROR: ERROR: Can't construct a java object for tag:yaml.org,2002:io.kubernetes.client.openapi.models.V1Deployment; exception=Class not found: io.kubernetes.client.openapi.models.V1Deployment
13:19:19 in 'reader', line 1, column 1:
13:19:19 apiVersion: apps/v1
13:19:19 ^
13:19:19
13:19:19 hudson.remoting.ProxyException: Can't construct a java object for tag:yaml.org,2002:io.kubernetes.client.openapi.models.V1Deployment; exception=Class not found: io.kubernetes.client.openapi.models.V1Deployment
13:19:19 in 'reader', line 1, column 1:
13:19:19 apiVersion: apps/v1
13:19:19 ^
13:19:19
13:19:19 at org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:336)
13:19:19 at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:230)

谢谢

2 个答案:

答案 0 :(得分:0)

您描述的问题正在ERROR: ERROR: java.lang.RuntimeException: io.kubernetes.client.openapi.ApiException: Not Found #122 github中讨论,但仍未解决。

这对于使用Jenkins版本:2.235.1 +的每个人都是非常实际的,不确定是否使用2.190.3

尚无修复程序,但是有1 workaround,也许可以帮助您

运行Kubernetes v1.18.3时遇到相同的问题。我正在运行Jenkins v2.235.1,并且我所有的插件都是最新的。

我现在发现的解决方法是将Jackson 2 API降级为 v2.10.3,并将Snakeyaml API降级到v1.26.2。如果那两个插件 已更新为各自最新的版本,错误消息 回来。

为了强制降级这2个插件,您可以手动删除 从plugins文件夹中下载它们,然后将HPI文件直接上传到 詹金斯确保上传上面列出的正确版本。

这是一个丑陋的解决方法,绝不应该将其视为 “修复”。

  1. 降级插件版本

Jackson 2 API v2.10.0,

Kubernetes v1.21.3,

Kubernetes客户端API v4.6.3-1,

Kubernetes Continuous Deploy v2.1.2,

Kubernetes凭证v0.5.0

2)检查dns是否正常工作(非常重要) 2a)修改设置,根据需要自定义

kubectl edit cm coredns -n kube-system
apiVersion: v1
data:
  Corefile: |
    eureka cluster.local:53 {
        errors
        health {
           lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           fallthrough in-addr.arpa ip6.arpa
           ttl 30
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }
    .:53 {
        errors
        health {
           lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           fallthrough in-addr.arpa ip6.arpa
           ttl 30
        }
        prometheus :9153
        forward . 8.8.8.8
        cache 30
        loop
        reload
        loadbalance
    }
kind: ConfigMap
metadata:
  creationTimestamp: "2020-07-24T21:09:19Z"
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:data: {}
    manager: kubeadm
    operation: Update
    time: "2020-07-24T21:09:19Z"
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:data:
        f:Corefile: {}
    manager: kubectl
    operation: Update
    time: "2020-07-27T05:30:57Z"
  name: coredns
  namespace: kube-system
  resourceVersion: "952988"
  selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
  uid: 5a7fc41c-01a7-480a-89bd-82ab3070401c

2b)然后重新启动dns

kubectl get pods -n kube-system -oname |grep coredns |xargs kubectl delete -n kube-system

希望对您有帮助

答案 1 :(得分:0)

感谢VKR,

但幸运的是,它已在Jenkins 2.235.3版本中修复。

下面是我的配置。

Jenkins版本:2.235.3

谢谢