“没有种类”;“部署”;已注册为“版本”;应用程序/v1";-由Jenkinsfile构建

“没有种类”;“部署”;已注册为“版本”;应用程序/v1";-由Jenkinsfile构建,jenkins,kubernetes,Jenkins,Kubernetes,当我尝试为Kubernetes构建新映像时,出现以下错误: **无法解码“K8sDeploy.yaml”:没有为版本“apps/v1”注册任何类型的“部署”** 该错误始于我更新Kubernetes版本时,这里是我的版本信息: Client Version: v1.19.2 Server Version: v1.16.13 我也试着用我的本地主机来构建,但是Jenkins没有 有人知道如何解决这个问题?要检查apiVersion在kubernetes集群中支持部署的资源,您可以运行: $ k

当我尝试为Kubernetes构建新映像时,出现以下错误:

**无法解码“K8sDeploy.yaml”:没有为版本“apps/v1”注册任何类型的“部署”**

该错误始于我更新Kubernetes版本时,这里是我的版本信息:

Client Version: v1.19.2
Server Version: v1.16.13

我也试着用我的本地主机来构建,但是Jenkins没有


有人知道如何解决这个问题?

要检查
apiVersion
kubernetes集群中支持
部署的资源,您可以运行:

$ kubectl explain deployment | head -2
你几乎可以肯定结果如下:

KIND:     Deployment
VERSION:  apps/v1
所有现代的kubernetes版本都使用
apps/v1
,这是从
v1.9
开始提供的,因此已经有很长一段时间了。如您所见,在kubernetes
1.15
中仍然可用的较旧版本在
1.16
中已被弃用

客户端版本:v1.19.2服务器版本:v1.16.13

如上所述,在kubernetes
1.16
部署
必须使用
apps/v1
,并且不可能使用在
1.15
中仍然可用的较旧api版本,如
扩展/v1beta1
apps/v1beta1
apps/v1beta2

在我看来,您的问题似乎是来自Jenkins的错误(可能是Jenkins本身的旧版本或其某些插件或可能是其配置的错误),无法识别/解析正确的(并且是当前所需的)
apiVersion
用于
部署
资源

为了进行故障排除,您可以尝试将
apiVersion
更改为上面列出的其中一个版本。这会给您一个不同的错误(这次来自kubernetes API服务器),因为在
1.16
中,它将无法识别它

但至少它应该给你一个线索。如果您的Jenkins不再抱怨较旧的
apiVersion
,这意味着它已设置为与较旧的API版本一起使用,更新可能会有所帮助


我看到你在kubernetes GitHub上提交了一份文件,所以让我们等一下他们怎么说吧,但正如我之前所说的那样,kubernetes的问题并不在于kubernetes而是在于Jenkins能够解析合法的
部署
yaml

我将我的kubernetes版本从1.5更新到了1.9,当我强制执行Kubectl命令时,它起作用了,只是Jenkis不起作用,正如您所要求的,遵循我的k8sdeploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cbbox
  labels: 
    app: cbbox  
spec:
  replicas: 1
  selector: 
     matchLabels:
       app: cbbox 
  template:
    metadata:
      labels:
        app: cbbox
    spec:
      containers:      
      - image: myregistryrepository
        name: cbbox
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
        env:
          - name: SECRET_DB_IP
            valueFrom:
              secretKeyRef:
                name: cbboxsecret
                key: SECRET_DB_IP
          - name: SECRET_DB_PASSWORD
            valueFrom:
              secretKeyRef:
                name: cbboxsecret
                key: SECRET_DB_PASSWORD
          - name: SECRET_DB_USER
            valueFrom:
              secretKeyRef:
                name: cbboxsecret
                key: SECRET_DB_USER
          - name: SECRET_LDAP_DOMAIN
            valueFrom:
              secretKeyRef:
                name: cbboxsecret
                key: SECRET_LDAP_DOMAIN
          - name: SECRET_LDAP_URLS
            valueFrom:
              secretKeyRef:
                name: cbboxsecret
                key: SECRET_LDAP_URLS
          - name: SECRET_LDAP_BASE_DN
            valueFrom:
              secretKeyRef:
                name: cbboxsecret
                key: SECRET_LDAP_BASE_DN
          - name: SECRET_TIME_ZONE
            valueFrom:
              secretKeyRef:
                name: cbboxsecret
                key: SECRET_TIME_ZONE
      imagePullSecrets:
        - name: acrcredentials
---
apiVersion: v1
kind: Service
metadata:
  name: cbbox
spec: 
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
  selector:
    app: cbbox

非常感谢您的帮助,问题是在更新Kubernetes版本后开始的,现在我更新了Jenkins和Jenkins中的Kubernetes插件,但是,相同的错误仍然存在。是的,我知道这发生在Kubernetes更新之后,但基本上这并不意味着它必须与Kubernets相关。正如我所说,上面的错误消息
“**无法解码“K8sDeploy.yaml”:没有为版本“apps/v1”**“
注册任何类型的“部署”来自Jenkins,而不是kubernetes。无论如何,kubernetes发出的这样的信息没有多大意义,因为在每一个现代版本中(从
1.9开始)
部署都是由
apps/v1
处理的。您是从哪个版本更新集群的?您是否也可以发布上述
K8sDeploy.yaml
的全部内容?