Kubernetes apiVersion:networking.k8s.io/v1 “Ingress”问题

Posted

技术标签:

【中文标题】Kubernetes apiVersion:networking.k8s.io/v1 “Ingress”问题【英文标题】:Kubernetes apiVersion: networking.k8s.io/v1 Issue with 'Ingress' 【发布时间】:2021-05-20 00:16:12 【问题描述】:

在执行 Kubernetes YAML 文件时希望得到您的指导。 我的 kubectl 版本如下:

    Client Version: version.InfoMajor:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:59:43Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"windows/amd64"
    Server Version: version.InfoMajor:"1", Minor:"18", GitVersion:"v1.18.14", GitCommit:"89182bdd065fbcaffefec691908a739d161efc03", GitTreeState:"clean", BuildDate:"2020-12-18T12:02:35Z", GoVersion:"go1.13.15", Compiler:"gc", Platform:"linux/amd64"

这是从 Kubernetes 站点下载的最新版本 https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-on-windows

YAML 有 api版本:networking.k8s.io/v1 种类:入口 运行 YAML 的错误是

    no matches for kind "Ingress" in version "networking.k8s.io/v1"

Kubernetes 问题 https://github.com/kubernetes/kubernetes/issues/90077 提到

  networking.k8s.io/v1beta1 == 1.14 to 1.18
  networking.k8s.io/v1 = 1.19+

所以我想它应该可以正常工作?

我已将 API 版本更改为

apiVersion: extensions/v1beta1 or
apiVersion: networking.k8s.io/v1beta1

但在 YAML 的另一部分失败

backend:
  service:
    name:  template "fullname" $ -srv
     port:
       number: 80

有错误

验证数据时出错:ValidationError(Ingress.spec.rules[0].http.paths[0].backend): io.k8s.api.extensions.v1beta1.IngressBackend 中的未知字段“service”

我被告知相同的 YAML 可以在具有相同 kubectl 版本的 macOS 上运行(尽管我无权验证)。但是对我可能出错的地方有什么想法吗?

谢谢, 普拉巴尔

【问题讨论】:

【参考方案1】:

您可以使用以下命令来检查版本 networking.k8s.io/v1 中的种类 Ingress 在您的集群中是否可用。

kubectl api-resources #List the API resources that are available.
kubectl api-versions  #List the API versions that are available.

【讨论】:

【参考方案2】:

networking.k8s.io/v1beta1 应该是

backend:
  serviceName:  template "fullname" $ -srv
  servicePort: 80

如何获取文档:

kubectl explain --api-version=networking.k8s.io/v1beta1 ingress.spec.rules.http.paths.backend

【讨论】:

这有助于我解决我的问题。谢谢你,@zerms。 我真的看不出使用过时的版本有什么帮助,这里的问题是没有 beta 的版本不起作用,即使你使用 K8s 1.19+ 版本 @123123d OP 使用的是 1.18

以上是关于Kubernetes apiVersion:networking.k8s.io/v1 “Ingress”问题的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes_CRD自定义资源

Kubernetes_CRD自定义资源

Kubernetes之Pod环境变量配置

Kubernetes之Pod镜像拉取策略配置

Kubernetes EFK

Kubernetes 服务外部 ip 待定