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

Kubernetes中外部与内部Ingress的区别及使用相关问题咨询

核心差异

二者本质都是Nginx Ingress Controller的独立实例,核心差异仅在流量接入范围和关联负载均衡属性:

  • 外部Ingress:绑定公网负载均衡实例,具备公网IP,可接收来自互联网的流量,默认暴露到公网环境
  • 内部Ingress:绑定内网(VPC/专有网络)负载均衡实例,仅允许同一内网内的资源访问,无公网IP,不会暴露到公网
  • 额外差异:二者通常会配置不同的安全规则,外部Ingress的访问控制、限流、WAF防护策略更严格,内部Ingress可以适配更宽松的内网访问需求(比如大文件上传、低限流阈值等)
适用场景

外部Ingress适用场景

面向公网用户提供服务的业务,匹配以下需求即可使用:

  • 官网、C端应用后端接口、对外开放的OpenAPI等需要互联网用户访问的服务
  • 需要配置公网域名解析、公网带宽、公网安全防护的业务

内部Ingress适用场景

仅对内开放的服务,匹配以下需求即可使用:

  • 企业内部OA、运维管理后台、测试环境服务等仅允许内部员工/内部服务访问的业务
  • 跨集群内网调用、内部微服务互通等不需要公网暴露的场景
  • 需要避免公网攻击风险,仅在内网环境流通的敏感业务
配置项使用时机

首先明确:kubernetes.io/ingress.class 是Kubernetes 1.18版本前(IngressClass资源未正式GA)的旧匹配规则,1.19及以上版本官方推荐用 spec.ingressClassName 字段替代,二者作用一致:标记Ingress资源要被哪个Ingress Controller实例接管。
以下是通用命名习惯下的使用规则(类名可在部署Ingress Controller时自定义,需和集群实际配置对齐):

  • ingressClassName: nginx:是Nginx Ingress Controller默认的类名,集群仅部署单套Ingress Controller,或默认部署的实例符合你要的公网/内网属性时直接使用,多数单实例场景下该类对应外部Ingress
  • ingressClassName: nginx-internal:是集群同时部署两套Ingress Controller时,行业通用的内部Ingress类名,当你要创建的Ingress仅对内提供服务时使用,会匹配到内部Ingress Controller实例
  • metadata.annotations: kubernetes.io/ingress.class: nginx-external:为旧版本K8s的外部Ingress匹配规则,当集群版本低于1.19,或外部Ingress Controller配置为通过注解匹配时,给对外的Ingress资源添加该注解即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:57:00