Jenkins集成Kubernetes部署报错:无法识别extensions/v1beta1的Deployment
解决Jenkins执行
kubectl create时的no matches for extensions/,Kind=Deployment错误 这个问题的核心原因很明确:你使用的extensions/v1beta1 API版本在较新的Kubernetes和kubectl版本中已经被弃用移除了,而Jenkins环境里的kubectl版本比你本地终端的要新,所以才会出现本地能执行但Jenkins报错的情况。
下面是具体的解决步骤:
1. 更新Deployment的API版本并补充必填字段
从Kubernetes 1.16版本开始,Deployment资源已经从extensions/v1beta1迁移到apps/v1,并且apps/v1版本要求必须指定spec.selector字段来匹配Pod模板的标签。修改你的deployment.yaml如下:
apiVersion: apps/v1 kind: Deployment metadata: name: appname spec: selector: matchLabels: app: appname template: metadata: labels: app: appname spec: containers: - name: appname image: appname imagePullPolicy: IfNotPresent ports: - containerPort: 8080
2. 检查Jenkins与本地的kubectl版本差异
在Jenkins的执行环境中运行kubectl version命令,对比你本地终端的kubectl version输出。如果Jenkins的kubectl版本 >=1.16,而本地版本更低,就会出现这种兼容差异。建议统一两者的kubectl版本,或者确保Deployment使用的API版本与kubectl版本兼容。
3. 验证修改后的配置
在本地先测试修改后的yaml文件:
kubectl create -f deployment.yaml --validate=false --dry-run=client
确认没有报错后,再在Jenkins中执行部署命令即可。
内容的提问来源于stack exchange,提问作者Dhinesh
相关产品推荐
相关产品推荐

