You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在EKS创建Istio IngressGateway出现Duplicate entries for key错误如何解决?

问题解决方法

报错的核心原因是Istio 1.9.x版本的Ingress Gateway部署逻辑存在缺陷:配置IstioOperator时,Service段定义的每一个端口的targetPort值都会被自动同步注入到下游Deployment的istio-proxy容器的ports列表中,Kubernetes不允许同一容器下存在containerPort+协议完全重复的条目,因此两个Service端口共用数值型的8080作为targetPort时就会触发冲突。

你可以通过将重复的数值型targetPort替换为Istio预设的端口名称的方式规避这个问题,Istio ingress gateway的istio-proxy容器默认已经预设了名称为http2的端口,对应的端口值就是8080,直接引用端口名不会触发重复注入containerPort的逻辑,同时完全满足NLB TLS卸载后80、443端口流量都转发到Pod 8080端口的需求。

修改后的IstioOperator配置示例如下:

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  name: istio
spec:
  components:
    ingressGateways:
      - name: ingressgateway
        k8s:
          service:
            ports:
              - port: 80
                targetPort: 8080
                name: http2
              - port: 443
                name: https
                targetPort: http2 # 替换为端口名而非数值,避免重复注入containerPort

额外说明

  • 该方案仅适用于Istio 1.9及更早存在该缺陷的版本,Istio 1.10及以上版本已经优化了targetPort去重逻辑,直接配置重复的数值型targetPort也不会报错
  • 部署完成后可以通过kubectl -n istio-system get svc istio-ingressgateway确认端口映射规则,通过kubectl -n istio-system get deploy istio-ingressgateway -o yaml确认容器ports列表仅存在一个8080端口条目即可

内容的提问来源于stack exchange,提问作者SamMaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:48:00