首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法部署Kubernetes入侵apiVersion网络.k8s.io/v1

无法部署Kubernetes入侵apiVersion网络.k8s.io/v1
EN

Stack Overflow用户
提问于 2021-08-11 19:55:23
回答 1查看 1K关注 0票数 1

我正在准备所有的宏清单文件,以保持最新的(networking.k8s.io/v1)将我的集群从1.19升级到1.22。

我将删除先前的“侵入”规则,然后重新创建:

代码语言:javascript
复制
k delete ingress/my-ingress
k create -f /tmp/ingress.yaml

不幸的是,已经创建了extensions/v1beta1,但是对于清单上的apiVersion,这是不同的:

代码语言:javascript
复制
$ k get ingress/my-ingress -o yaml
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
  creationTimestamp: "2021-08-11T19:42:08Z"

下面是我使用的YAML的一个例子:

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
  labels:
    app.kubernetes.io/instance: my-app
    app.kubernetes.io/name: my-app
  name: my-ingress
  namespace: default
spec:
  rules:
  - host: application.com
    http:
      paths:
        - path: /
          pathType: ImplementationSpecific
          backend:
            service:
              name: my-app
              port:
                number: 443

Kubernetes版本:

代码语言:javascript
复制
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.1", GitCommit:"c4d752765b3bbac2237bf87cf0b1c2e307844666", GitTreeState:"clean", BuildDate:"2020-12-18T12:09:25Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"19+", GitVersion:"v1.19.13-eks-8df270", GitCommit:"8df2700a72a2598fa3a67c05126fa158fd839620", GitTreeState:"clean", BuildDate:"2021-07-31T01:36:57Z", GoVersion:"go1.15.14", Compiler:"gc", Platform:"linux/amd64"}

入口控制器版本(我从0.41升级到避免任何类型的问题):

代码语言:javascript
复制
Image: k8s.gcr.io/ingress-nginx/controller:v0.48.1@sha256:e9fb216ace49dfa4a5983b183067e97496e7a8b307d2093f4278cd550c303899
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-12 15:02:10

这正如期而至。,特别是检查github回答

当您创建一个ingress对象时,可以通过任何版本读取它--服务器处理转换为请求的版本。在您的请求get ingress/my-ingress -o yaml中,您没有指定应该读取的版本。在这种情况下,kubectl搜索服务器返回的文档,以找到其中第一个具有请求资源的文档。它可以是任何版本,就像你的例子一样。

这就是为什么,如果要检查特定版本,可以:

  1. 通过添加清单文件来改进请求,因为在文件中指定了版本
代码语言:javascript
复制
    $ kubectl get -f ingress.yaml -o yaml                                                                                                                
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        ...
  1. 其他选项是对get请求中的必要版本进行限定:
代码语言:javascript
复制
    $ kubectl get ingresses.v1.networking.k8s.io
    NAME         CLASS    HOSTS             ADDRESS   PORTS   AGE
    my-ingress   <none>   application.com             80      12m

    $ kubectl get ingresses.v1beta1.networking.k8s.io
    Warning: networking.k8s.io/v1beta1 Ingress is deprecated in v1.19+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
    NAME         CLASS    HOSTS             ADDRESS   PORTS   AGE
    my-ingress   <none>   application.com             80      13m
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68748219

复制
相关文章

相似问题

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