云容器引擎 CCE-集群外部访问Ingress异常:检查Ingress配置是否正确

时间:2023-11-01 16:18:15

检查Ingress配置是否正确

如果以上排查项都正常,需要考虑是否由于参数设置引起异常。由于使用kubectl创建时需要填写的参数较多易出错,建议您使用控制台创建,根据可视界面按需设置参数,自动过滤不符合要求的负载均衡及Service,能够有效避免出现关键参数格式错误或缺失的问题。

请您根据以下思路进行逐一排查Ingress配置:
  • 检查对接ELB参数是否正确

    由于ELB通过annotations字段下的参数进行定义,但是K8s在创建资源时并不会对annotations字段参数进行校验,如果出现关键参数错误或缺失,Ingress资源也可被创建,但无法正常访问。

    以下是出现频率较高的问题,供您参考:

    • 对接的目标ELB未与集群处于同一VPC下。
    • 添加ELB型Ingress时对接已有ELB,annotations中关键字段kubernetes.io/elb.idkubernetes.io/elb.ipkubernetes.io/ingress.classkubernetes.io/elb.port缺失。
    • 添加Nginx型Ingress时,未安装nginx-ingress插件导致无ELB连接。
    • 添加Nginx型Ingress时,annotations中关键字段kubernetes.io/ingress.classkubernetes.io/elb.port缺失。
    • 添加Nginx型Ingress时,kubernetes.io/elb.port参数不支持自定义端口,使用HTTP协议固定为80,HTTPS协议固定为443。
  • 检查Service配置是否正确
    • 检查Ingress对接的Service类型是否正确,Ingress支持的Service如下。
      表1 ELB Ingress支持的Service类型

      集群类型

      ELB类型

      集群内访问(ClusterIP)

      节点访问(NodePort)

      CCE集群

      共享型负载均衡

      不支持

      支持

      独享型负载均衡

      不支持(集群内访问服务关联实例未绑定eni网卡,独享型负载均衡无法对接

      支持

      CCE Turbo集群

      共享型负载均衡

      不支持

      支持

      独享型负载均衡

      支持

      不支持(节点访问服务关联实例已绑定eni网卡,独享型负载均衡无法对接

      表2 Nginx Ingress支持的Service类型

      集群类型

      ELB类型

      集群内访问(ClusterIP)

      节点访问(NodePort)

      CCE集群

      共享型负载均衡

      支持

      支持

      独享型负载均衡

      支持

      支持

      CCE Turbo集群

      共享型负载均衡

      支持

      支持

      独享型负载均衡

      支持

      支持

    • 检查Service的访问端口号是否正确,此处Service的访问端口号(port字段)需区别于容器端口号(targetPort字段)。
  • 检查转发配置的参数是否填写正确
    • 添加的URL转发路径要求后端应用内存在相同的路径,否则转发无法生效。

      例如,Nginx应用默认的Web访问路径为“/usr/share/nginx/html”,在为Ingress转发策略添加“/test”路径时,需要应用的Web访问路径下也包含相同路径,即“/usr/share/nginx/html/test”,否则将返回404。

      使用Nginx型的Ingress Controller时,您可通过在annotations字段添加rewrite注释进行重定向,将业务内不存在的path路径进行重写,避免访问路径不存在的错误,详情请参见Rewrite

    • 创建Ingress时指定了域名(host),将无法通过IP访问。
support.huaweicloud.com/cce_faq/cce_faq_00313.html