如何解决有主机和无主机的入口
真正难以理解和调试入口规则。谁能分享一个很好的参考?
问题是在不指定主机的情况下入口如何工作?
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提供了很好的入门文档。它可能无法涵盖所有方面,但确实可以回答您的问题。入口控制器基本上是反向代理,遵循类似的想法。
-
您共享的代码段称为单一后端或single service ingress。
/
路径是默认路径。这是唯一的条目,因此绑定服务将为裸露端口上的每个请求提供服务。 -
主机条目;只要您的DNS将
host: aws-dns-name.org
解析为群集中节点的IP或群集前面的LB,aws-dns-name.org
就应该起作用。对该DNS条目执行ping操作,查看其是否正确解析为目标IP。尝试curl -H 'Host: aws-dns-name.org' IP_Address
验证入口是否正确响应。 NGINX正在使用Host标头来确定要使用的后端服务。如果您使用其他Host
条目向IP发送流量,则它将无法连接到正确的服务,并且将为default-backend提供服务。 -
如果您正在执行path based routing(也可以与基于主机的路由结合使用),NGINX将根据截获的路径路由到正确的后端服务。但是,就像其他反向代理一样,它将请求发送到指定路径(http:// service:80 / v1 /)。您的应用程序可能未在
/v1/
路径上侦听,因此最终会显示404。使用rewrite-target
批注使NGINX知道您在/
服务。 -
API资源版本确实可以在K8中切换,并且很难跟上。现在正确的注释是
networking.k8s.io/v1beta1
(从1.19开始的networking.k8s.io/v1
),即使旧版本正在运行,但最终将停止运行。我已经看到集群升级会破坏应用程序,因为有人忘记更新API版本。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。