kubernetes-ingress - 有和没有主机的入口

标签 kubernetes-ingress nginx-ingress

真的很难理解和调试 ingress 的规则。谁能分享一个好的引用?
问题是入口如何在不指定主机的情况下工作?

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      annotations:
         nginx.ingress.kubernetes.io/force-ssl-redirect: \"false\"
      name: my-app
    spec:
      rules:
        http:
          paths:
          - backend:
            path: /
              serviceName: my-app
              servicePort: http
分配主机(例如 - host: aws-dsn-name.org )后,它不起作用。
将路径更改为 path: /v1/它也不起作用:(。
如何调试/检查映射是否正确完成?
此外,何时使用 extensions/v1beta1networking.k8s.io/v1beta1

最佳答案

有很好的文档可用 here入门。它可能无法涵盖所有​​方面,但确实可以回答您的问题。 Ingress Controller 基本上是一个反向代理,并遵循类似的想法。

  • 您共享的代码段称为单一后端或 single service ingress . /路径将是默认的。这是唯一的条目,因此公开端口上的每个请求都将由绑定(bind)服务提供服务。
  • 主机入口; host: aws-dns-name.org只要您的 DNS 正在解析 aws-dns-name.org 就应该可以工作到集群中节点的 IP 或集群前端的 LB。对该 DNS 条目执行 ping 操作,看看它是否正确解析到目标 IP。试试 curl -H 'Host: aws-dns-name.org' IP_Address验证入口是否正确响应。 NGINX 正在使用 Host header 决定使用哪个后端服务。如果您使用不同的 Host 向 IP 发送流量条目,它不会连接到正确的服务,而是服务 default-backend .
  • 如果您正在做 path based routing ,也可以与基于主机的路由结合使用,NGINX 将根据截获的路径路由到正确的后端服务。但是,就像任何其他反向代理一样,它会将请求发送到指定的路径 (http://service:80/v1/)。您的应用程序可能没有监听 /v1/路径,所以你最终会得到 404。使用 rewrite-target注释让 NGINX 知道你在 / 服务.
  • API 资源版本确实会在 K8s 中切换,并且很难跟上。现在正确的注释是 networking.k8s.io/v1beta1 ( networking.k8s.io/v1 从 1.19 开始)即使旧版本正在运行但最终将停止运行。我见过集群升级中断应用程序,因为有人忘记更新 API 版本。
  • 关于kubernetes-ingress - 有和没有主机的入口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63474636/

    相关文章:

    routing - 具有 Istio Ingress 的 Kubernetes 未在标准 HTTP 端口 443/80 上运行

    nginx - 调用 webhook 失败 "validate.nginx.ingress.kubernetes.io": error while applying the ingress in Kubernetes

    kubernetes - Kubernetes中的公开服务和副本集关系

    nginx - gke nginx ingress 创建额外的负载均衡器

    kubernetes - 有没有一种方法可以根据上下文路径在内部将url重定向到特定服务?

    kubernetes - 如何解决Prometheus图表Ingres/Service映射?

    nginx - 为 E2E 测试配置 nginx-ingress

    nginx - Kubernetes nginx 入口 : set client_max_body_size for one subdomain only

    kubernetes - 入口端点在 GKE 上显示响应为 200 的空白页面

    kubernetes - 如何为 istio 入口网关添加自定义端口?