真的很难理解和调试 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/v1beta1
或 networking.k8s.io/v1beta1
最佳答案
有很好的文档可用 here入门。它可能无法涵盖所有方面,但确实可以回答您的问题。 Ingress Controller 基本上是一个反向代理,并遵循类似的想法。
/
路径将是默认的。这是唯一的条目,因此公开端口上的每个请求都将由绑定(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 ./v1/
路径,所以你最终会得到 404。使用 rewrite-target
注释让 NGINX 知道你在 /
服务.networking.k8s.io/v1beta1
( networking.k8s.io/v1
从 1.19 开始)即使旧版本正在运行但最终将停止运行。我见过集群升级中断应用程序,因为有人忘记更新 API 版本。关于kubernetes-ingress - 有和没有主机的入口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63474636/