如何设置 Kubernetes Ingress 和控制器以基本上执行以下 nginx.conf 文件的操作:
upstream backend {
server server1.example.com weight=5;
server server2.example.com:8080;
server backup1.example.com:8080 backup;
}
我希望一个 http 端点映射到多个 Kubernetes 服务,优先选择主服务,但也有一个备份服务。 (对于我的特定项目,我需要拥有多个服务,而不是一个服务具有多个 pod。)
这是我尝试的 ingress.yaml 文件。我非常确定我列出多个后端的方式是不正确的。我该怎么做呢?如何设置“备份”标志?
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: fanout-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: "nginx"
# kubernetes.io/ingress.global-static-ip-name: "kubernetes-ingress"
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: server1
servicePort:
- path: /
backend:
serviceName: server2
servicePort: 8080
- path: /
backend:
serviceName: backup1
servicePort: 8080
我在 GKE 上运行 Kubernetes。
你可以做简单扇出 https://kubernetes.io/docs/concepts/services-networking/ingress/#simple-fanout基于路径或基于名称的虚拟主机 https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting.
但是,您需要根据某些内容(端口除外,因为它是入口)进行区分,因此您的两个选项将是虚拟主机或路径。
路径不适用于某些需要标准路径的服务。根据您的示例判断,您最有可能希望拥有类似 a.example.com 和 b.example.com 之类的内容。以下是 Kubernetes 文档中的示例:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: name-virtual-host-ingress
spec:
rules:
- host: foo.bar.com
http:
paths:
- backend:
serviceName: service1
servicePort: 80
- host: bar.foo.com
http:
paths:
- backend:
serviceName: service2
servicePort: 80
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)