“没有种类”;“部署”;已注册为“版本”;应用程序/v1";-由Jenkinsfile构建
当我尝试为Kubernetes构建新映像时,出现以下错误:“没有种类”;“部署”;已注册为“版本”;应用程序/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
**无法解码“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
开始提供的,因此已经有很长一段时间了。如您所见,在kubernetes1.15
中仍然可用的较旧版本在1.16
中已被弃用
客户端版本:v1.19.2服务器版本:v1.16.13
如上所述,在kubernetes1.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
的全部内容?