gpt4 book ai didi

kubernetes - 入口类的入口 Controller 名称

转载 作者:行者123 更新时间:2023-12-04 12:18:03 24 4
gpt4 key购买 nike

我正在设置我的入口 Controller 、入口类和入口以在集群外公开服务。这是全新的集群设置。
我已经使用设置了 nginx-ingress Controller kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.0/deploy/static/provider/baremetal/deploy.yaml根据我的理解,下一步是创建入口类https://v1-18.docs.kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class

apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
name: external-lb
spec:
controller: example.com/ingress-controller
parameters:
apiGroup: k8s.example.com/v1alpha
kind: IngressParameters
name: external-lb
他们是如何得到 Controller 名称的example.com/ingress-controller ?

最佳答案

我用 IngressClass 运行了多个场景, IngressNginx Ingress Controller .
场景一

  • 具有自定义名称的 IngressClass
  • 具有默认值的 Nginx 入口 Controller --ingress-class值是 nginx
  • Ingress 使用与 IngressClass 名称相同的 ingressClassName

  • 输出:响应 404
    场景2
  • 具有自定义名称的 IngressClass
  • 具有自己的 Nginx 入口 Controller ingress-class入口测试
  • Ingress 使用与 IngressClass 名称相同的 ingressClassName

  • 输出:响应 404
    场景3
  • IngressClass 与 test姓名
  • Nginx 入口 Controller --ingress-class带值 test
  • 入口使用 test ingressClassName

  • 输出:正确响应
    情景 4
  • IngressClass 与 nginx姓名
  • Nginx 入口 Controller --ingress-class带值 nginx
  • 入口使用 nginx ingressClassName

  • 输出:正确响应
    结论
    首先请记住, Nginx有3种类型。 . Open Source Nginx Ingress Controller ,您可能正在使用它。 Nginx Incorporaton (nginx 公司)和 Nginx Incorporaton Plus .
    在其中一种场景中,当我使用 spec.controller: nginx.org/ingress-controller 时与 Nginx Ingress Controller带参数 --ingress-class=nginx , 在 Nginx Ingress Controller pod 您将看到指向 k8s.io/ingress-nginx 的条目.
    要重现此行为,您需要部署 IngressClass使用特定的 Controller ,然后部署 nginx。
    apiVersion: networking.k8s.io/v1beta1
    kind: IngressClass
    metadata:
    name: nginx
    spec:
    controller: nginx.org/ingress-controller
    部署后 Nginx Ingress Controller , Controller pods 将在 CrashLoopBackOff状态。在日志中,您会找到条目:
    E1118 15:42:19.008911       8 main.go:134] Invalid IngressClass (Spec.Controller) value "nginx.org/ingress-controller". Should be "k8s.io/ingress-nginx"
    只有在 IngressClass 时才有效名称设置为 nginx .
    我会说 nginx.org/ingress-controller适用于 Nginx Incorporatedk8s.io/ingress-nginxOpen Source Nginx Ingress .
    如果自定义值用于 --ingress-class controller Deployment manifest 中的参数,有无 IngressClass如果只保留 Ingress spec.ingressClass,具有相同名称的对象不会对集群的工作方式产生任何影响值与 Controller 参数相同。此外,如果存在,IngressClass spec.controller可以具有与所需模式“类似域”相匹配且不影响 Ingress 的任何值我的集群上的工作流行为。
    另外, Ingress如果我输入了 ingress-class 的正确值,效果会很好要么到 spec.ingressClass属性(property)或到 metadata.annotation.kubernetes.io/ingress.class因此。如果您尝试将两个值放入同一个 Ingres 对象,则会出现如下错误:
    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
    name: test-ingress
    annotations:
    kubernetes.io/ingress.class: nginx
    spec:
    ingressClassName: nginx
    The Ingress "test-ingress" is invalid: annotations.kubernetes.io/ingress.class: Invalid value: "nginx": can not be set when the class field is also set请记住,它仅针对 Nginx Ingress Controlle 进行了测试。 .如果您想使用 IngressClass与其他 Ingress Controllers喜欢 TraefikAmbasador ,你会检查他们的发行说明。

    关于kubernetes - 入口类的入口 Controller 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64781320/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com