我在GKE的k8上有多个MSA。每个都位于单独的子域中,例如:

  • msa1.example.com
  • msa2.example.com

  • 我在单个入口中有它:
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: main-ingress
      annotations:
        kubernetes.io/ingress.global-static-ip-name: lalala-ip-1
        kubernetes.io/ingress.allow-http: "false"
    spec:
      tls:
      - hosts:
        - msa1.example.com
        secretName: msa1-tls
      backend:
        serviceName: sink
        servicePort: 80
      rules:
      - host: msa1.example.com
        http:
          paths:
          - path: /.well-known/*
            backend:
              serviceName: letsencrypt
              servicePort: 80
          - path: /*
            backend:
              serviceName: lalala
              servicePort: 80
      - host: msa2.example.com
        http:
          paths:
          - path: /*
            backend:
              serviceName: lalala2
              servicePort: 80
    

    ...而且一切都很好。

    问题是,我想将每个MSA放在单独的文件中。

    问题是这kubernetes.io/ingress.global-static-ip-name: lalala-ip-1行。如果我有两个入口,则只有第一次启动才绑定(bind)到IP,而其他入口则没有。

    有没有办法在两个入口之间在GKE入口 Controller 上共享IP?

    最佳答案

    解决该问题的一种方法可能是在您的集群中运行您自己的nginx-ingress Controller ,并通过LoadBalancer服务类型将其公开。然后,您将为入口使用1个IP,并能够通过添加注释kubernetes.io/ingress.class: "nginx"通过nginx Controller 为所有入口提供服务

    引用:https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/

    关于kubernetes gke多个入口单个全局ip,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49018588/

    10-16 06:35