Dan*_*Dan 3 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
Run Code Online (Sandbox Code Playgroud)
分配主机(例如- host: aws-dsn-name.org)后,它不起作用。更改路径后path: /v1/也不起作用:(。
如何调试/检查映射是否正确完成?
此外,何时使用extensions/v1beta1或networking.k8s.io/v1beta1
有可用的很不错的文档这里入门。它可能不会涵盖所有方面,但确实可以回答您的问题。Ingress 控制器基本上是一个反向代理,并遵循类似的想法。
您共享的代码段称为 single backend 或single service ingress。/路径将是默认的。这是唯一的条目,因此暴露端口上的每个请求都将由绑定服务提供服务。
主机入口;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标头来决定使用哪个后端服务。如果您使用不同的Host条目向 IP 发送流量,它将无法连接到正确的服务,并将提供default-backend。
如果你正在做基于路径的路由,它也可以与基于主机的路由相结合,NGINX 将根据截获的路径路由到正确的后端服务。但是,就像任何其他反向代理一样,它会将请求发送到指定的路径 (http://service:80/v1/)。您的应用程序可能没有在/v1/路径上侦听,因此您最终会得到 404。使用rewrite-target注释让 NGINX 知道您在/.
API 资源版本确实会在 K8s 中切换,并且很难跟上。现在正确的注释是networking.k8s.io/v1beta1(networking.k8s.io/v1从 1.19 开始),即使旧版本正在工作但最终将停止工作。我见过集群升级中断应用程序,因为有人忘记更新 API 版本。
| 归档时间: |
|
| 查看次数: |
4781 次 |
| 最近记录: |