Ingress 控制器

为了让 Ingress 资源正常工作,Kubernetes 集群必须运行一个 Ingress 控制器。与作为 kube-controller-manager 组件一部分自动启动的其他控制器不同,Ingress 控制器需要单独部署。你可以根据集群的具体需求选择最合适的 Ingress 控制器实现。

官方支持的控制器

Kubernetes 社区官方维护和支持以下 Ingress 控制器:

第三方控制器

除了官方控制器,社区还提供了丰富的第三方 Ingress 控制器选择:

云服务商提供的控制器

企业级和商业控制器

开源社区控制器

新兴和专业化控制器

多控制器管理

在复杂的生产环境中,你可能需要同时运行多个 Ingress 控制器来满足不同的业务需求。

使用 IngressClass 资源

通过 IngressClass 资源,可以在同一集群中部署和管理多个 Ingress 控制器:

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
    name: nginx
spec:
    controller: k8s.io/ingress-nginx

指定控制器类型

创建 Ingress 资源时,通过 ingressClassName 字段指定使用的控制器:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
    name: example-ingress
spec:
    ingressClassName: nginx
    rules:
    - host: example.com
        http:
            paths:
            - path: /
                pathType: Prefix
                backend:
                    service:
                        name: example-service
                        port:
                            number: 80

默认控制器设置

如果未指定 ingressClassName,Kubernetes 会自动应用默认的 IngressClass。通过为 IngressClass 资源添加 ingressclass.kubernetes.io/is-default-class: "true" 注解来设置默认控制器。

选择建议

选择 Ingress 控制器时,建议考虑以下因素:

  • 云环境兼容性 - 选择与你的云平台深度集成的控制器
  • 功能需求 - 考虑是否需要高级功能如 WAF、缓存、认证等
  • 性能要求 - 评估控制器的性能表现和资源消耗
  • 社区支持 - 选择活跃维护且文档完善的项目
  • 运维复杂度 - 考虑部署、配置和维护的复杂性

参考资源

文章导航

章节内容

这是章节的内容页面。

章节概览

评论区