kubernetes - Kubernetes Ingress 描述未显示主机名
问题描述
我已经使用 EC2(不使用 EKS)在 AWS 中配置了 2 个节点 Kubernetes 集群。我已经使用 Traefik 1.7 版配置了一个 Ingress 控制器。我尝试使用主机在入口控制器中设置规则。但是当我在 Ingress 上进行描述时,我的主机总是设置为通配符。
下面是入口 YAML
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-test
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: www.random.com
- http:
paths:
- backend:
serviceName: secondapp
servicePort: 80
path: /
这里 www.random.com 是一个垃圾主机名。
下面是描述命令
Name: ingress-test
Namespace: default
Address:
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
*
/ secondapp:80 (192.168.1.132:80)
Annotations:
kubernetes.io/ingress.class: traefik
我可以从 EC2 的外部 IP 访问此应用程序的网页,但 Ingress 控制器没有根据主机进行任何过滤。因此,通过在标题中指定主机来使用 curl 访问此页面无效,即:curl -H "Host: www.random.com" http://<external_ip>
。此外,我无法从外部 IP 访问 Traefik GUI。我猜这是因为通配符主机,因为入口控制器路由请求基于主机名。我通过网络搜索,但可以找到任何关于此的内容。将不胜感激任何帮助。
解决方案
您的入口似乎格式不正确:您在rules
;下有一个数组 但是,您host
需要与您的对象属于同一对象http:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-test
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: www.random.com
# Note I removed the dash before http
http:
paths:
- backend:
serviceName: secondapp
servicePort: 80
path: /
这是未经测试的,但应该可以解决问题
推荐阅读
- scala - Is it okay to use "unsafeRunSync()" in Cats-Effects?
- python - 如何将包含 D 作为科学记数法而不是 E 的 .DAT 文件导入 Numpy?
- c - 为使用 makefile 执行 ac 代码提供 scanf 输入字符串
- regex - 从正则表达式中提取组
- python - Discord Py 用户在消息中提及
- git - 在 cPanel 上克隆 Azure 存储库
- java - 防止构造“原始类型”引用
- javascript - 全日历中事件的多行条目
- css - 如何使用 CSS 转换侧边栏菜单?
- python - Argmax - 区分具有相同值的数组和具有最大零分量的数组