我有一个包含 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}')
以下是我的问题
因为某些原因http://10.216.6.230:30438/产品页面也在响应。我不明白流量是如何路由到节点 B 地址的。
如果 IP 为 10.216.6.229 的节点 A 崩溃并且使用不同的 IP 地址重新启动,会发生什么情况?
Node Port 是否适合生产环境的配置?
我可以安装配置了 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 集群关联起来了,然后按照相应的步骤操作。希望这对您有所帮助 :)