设置 Istio 网关时出现的问题

设置 Istio 网关时出现的问题

我有一个包含 2 个节点的 AKS 群集

节点 A.10.216.6.229 节点 B.10.216.6.230

我们没有外部负载均衡器,因此 Istio Gateway EXTERNAL-IP 是 。根据入门文档,我使用以下命令获取 INGRESS-HOST,将其设置为节点 A IP 10.216.6.229。完成入门步骤后,我可以在http://10.216.6.229:30438/产品页面

export INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}')

以下是我的问题

  1. 因为某些原因http://10.216.6.230:30438/产品页面也在响应。我不明白流量是如何路由到节点 B 地址的。

  2. 如果 IP 为 10.216.6.229 的节点 A 崩溃并且使用不同的 IP 地址重新启动,会发生什么情况?

  3. Node Port 是否适合生产环境的配置?

  4. 我可以安装配置了 EXTERNAL-IP 的 Istio 吗?我可以使用 NGinx 做到这一点。

感谢您的信息。

编辑1

我仍然在为此苦苦挣扎。我尝试使用 loadBalancerIP 安装 Istio,但收到以下错误消息

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  profile: demo
  components:
    ingressGateways:
      - name: istio-ingressgateway
        enabled: true
        k8s:
          service:
            loadBalancerIP: 10.215.5.254

事件消息:同步负载均衡器时出错:无法确保负载均衡器:findMatchedPIPByLoadBalancerIP:在资源组 rg_mc_kub11618np01 中找不到 IP 地址为 10.215.5.254 的公共 IP

我的子网是 10.215.5.224/27

答案1

首先,您需要创建一个依赖于 AKS 集群的公共 IP 地址。

dependsOn我已使用 Pulumi 作为 IaC 工具来创建公共 IP 地址并添加了包含集群信息的选项。

初始化 istio operator 如下:

istioctl operator init

然后,您可以使用ipAddress其中的公共地址,如下所示:

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  name: istiocontrolplane
  namespace: istio-system
spec:
  profile: demo
  components:
    ingressGateways:
      - name: istio-ingressgateway
        enabled: true
        k8s:
          service:
            loadBalancerIP: <publicIPAddress.ipAddress>

或者您也可以直接调用如下方法:

kubectl apply -f - <<EOF
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: istiocontrolplane
spec:
  profile: demo
  components:
    ingressGateways:
      - name: istio-ingressgateway
        enabled: true
        k8s:
          service:
            loadBalancerIP: <publicIPAddress.ipAddress>
EOF

这样 istio 就与您的 AKS 集群关联起来了,然后按照相应的步骤操作。希望这对您有所帮助 :)

相关内容