如何将多个服务映射到一个 Kubernetes Ingress 路径?

2023-12-19

如何设置 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(使用前将#替换为@)

如何将多个服务映射到一个 Kubernetes Ingress 路径? 的相关文章

随机推荐