Istio Ingress 的 Azure 负载均衡器未按预期配置

问题描述 投票:0回答:1

我有以下配置,但我不明白为什么负载均衡器要这样配置:

我预计负载均衡器会出现以下结果 前端 9080,后端节点端口(路由到 Istio 入口 clusterip 8090)。

Azure 负载均衡器是否根据清单文件按预期配置?如果是的话,它是如何工作的?

Kubernetes 清单文件中的负载均衡器

 apiVersion: v1
    kind: Service
    metadata:
      name: istio-ingressgateway
      #namespace: istio-system
    spec:
      selector:
        istio: ingressgateway
      ports:
      - name: http
        port: 9080
        targetPort: 8080
     

Azure 门户中生成的负载均衡器 JSON 视图

                        "frontendPort": 9080,
                        "backendPort": 9080,
                        "enableFloatingIP": true,
                        "idleTimeoutInMinutes": 4,
                        "protocol": "Tcp",
                        "loadDistribution": "Default",


                


"probes": [
            {
                "name": "***-TCP-9080",
                "id": "***",
               
                "properties": {
                    "provisioningState": "Succeeded",
                    "protocol": "Tcp",
                    "port": 32700,
                    "intervalInSeconds": 5,
                    "numberOfProbes": 2,
                    "loadBalancingRules": [
                        {
                            "id": "/****-TCP-9080"
                        }
                    ]
                },
                "type": "Microsoft.Network/loadBalancers/probes"
            }]
            }
azure azure-aks istio azure-load-balancer
1个回答
0
投票

Azure 负载均衡器的工作原理是在后端池中定义的健康服务实例之间分配传入流量。当您创建

LoadBalancer
类型的 Kubernetes 服务时,AKS 会自动配置 Azure 负载均衡器。

以下是如何在 AKS 中设置 LoadBalancer 服务,该服务侦听前端端口 9080 并将流量路由到后端节点端口,然后后端节点端口将流量定向到 Istio 的入口网关。首先,您需要在 AKS 集群上安装 Istio。您可以使用 Istio 的

istioctl
工具或在设置 aks 集群时从门户启用它-

enter image description here

接下来,您需要创建一个公开 Istio 入口网关的 Kubernetes 服务。

apiVersion: v1
kind: Service
metadata:
  name: istio-ingressgateway-external
  namespace: aks-istio-ingress
spec:
  type: LoadBalancer
  selector:
    app: istio-ingressgateway  # Ensure this matches the label on your Istio ingress gateway pods
  ports:
  - name: http2
    port: 9080
    targetPort: 8090  # The port on which Istio ingress pods are listening for HTTP traffic
  loadBalancerIP: 4.156.123.38  # Use the static external IP if needed or remove this line for dynamic IP

使用 kubectl apply -f 来应用它

enter image description here

如果您特别希望 Azure 负载均衡器中的后端端口反映

8090
,则应将 Kubernetes 服务中的
targetPort
设置为
8090
。但请记住,此
targetPort
是集群内部的,不需要与 Azure 负载均衡器的前端或后端端口匹配。在此配置中,
type: LoadBalancer
创建一个 Azure 负载均衡器服务。
port: 9080
是您想要在 Azure 负载均衡器上向外部公开的端口,
targetPort: 8090
是负载均衡器将在其中发送流量的 Istio Ingress Gateway 上的端口。这应该与 Istio Ingress Gateway 服务侦听传入流量的端口相匹配。

© www.soinside.com 2019 - 2024. All rights reserved.