首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能将部署从apiVersion扩展/v1beta 1升级到app/v1,它会自动使用扩展/v1beta 1

不能将部署从apiVersion扩展/v1beta 1升级到app/v1,它会自动使用扩展/v1beta 1
EN

Stack Overflow用户
提问于 2020-03-19 09:51:09
回答 3查看 4.5K关注 0票数 4

我目前有一个1.15集群,我计划升级到1.16。由于1.16不支持某些API,所以我必须将我的部署从扩展/v1beta 1更改为app/v1。

使用这个简单的deployment.yml:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

当我将它应用到我的1.15集群:kubectl -n mynamespace deployment.yml中时,实际看到的是以下内容(kubectl -n mynamespace get deployments nginx-deployment):

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
    kubectl.kubernetes.io/last-applied-configuration: |
...

如您所见,实际的apiVersion是扩展/v1beta 1,而不是app/v1。为什么不应用我指定的版本呢?

更新:

这是我的kubectl版本:

代码语言:javascript
复制
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.4", GitCommit:"8d8aa39598534325ad77120c120a22b3a990b5ea", GitTreeState:"clean", BuildDate:"2020-03-12T23:41:24Z", GoVersion:"go1.14", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"15+", GitVersion:"v1.15.9-gke.24", GitCommit:"39e41a8d6b7221b901a95d3af358dea6994b4a40", GitTreeState:"clean", BuildDate:"2020-02-29T01:24:35Z", GoVersion:"go1.12.12b4", Compiler:"gc", Platform:"linux/amd64"}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-04 21:20:26

从apiVersion返回的kubectl get不一定与当前配置的实际apiVersion匹配。

见此处:https://github.com/kubernetes/kubernetes/issues/62283#issuecomment-380968868

引用:

kubectl get使用服务器首选顺序,这将更倾向于extensions API组以实现向后兼容性,直到extensions被移除。也就是说,默认情况下,kubectl get deployment使用扩展离子/v1beta 1端点。 要获得apps API组下的部署,可以使用kubectl get deployment.apps,这将返回apps/v1部署。

票数 4
EN

Stack Overflow用户

发布于 2020-03-26 16:17:09

幸运的是,库贝克尔,CLI瑞士刀有一个工具来帮助这一转换。如果您有任何抛出此错误的旧清单,请将kubectl convert添加到管道中,它应该与Kubernetes 1.16一起正常工作。

请看这里:update版本-更新

kubectl convert命令将API版本更改为与k8s 1.16兼容。您只需要确保使用最近版本的kubectl来将convert选项内置到其中。

票数 1
EN

Stack Overflow用户

发布于 2022-09-15 09:58:13

只需这样做:

通过以下链接安装kubetcl转换:

https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/

下面的命令将将您的deployment.yaml转换为apps/v1,并将其写入一个新文件deploy.yaml

代码语言:javascript
复制
kubectl convert -f deployment.yaml --local -o yaml > deploy.yaml
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60754598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档