nginx ingress 是 Kubernetes ingress 的一种实现,您可以通过 nginx ingress 接入 ingress 流量。本文为您介绍 ingress-nginx 组件常见的最佳实践操作。
容器服务提供基于社区版的 Nginx Ingress Controller,它将 ingress 规则转换成 nginx 的配置,然后基于 nginx 来进行七层的流量转发。
容器服务 ingress-nginx 组件可以在 创建集群 时安装,也可以在集群创建完成后,在 组件管理 中 单独安装。
在容器服务集群中安装 ingress-nginx 组件后,组件的默认实例个数为 2。您也可以调整实例个数,满足生产业务的高可用。
说明
安装 ingress-nginx 组件后,会以无状态负载(对应名称为 ingress-nginx-controller)的方式部署到集群中。
...
> 更新。podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app.kubernetes.io/name: ingress-nginx namespaces: - kube-system topologyKey: kubernetes.io/hostname
在容器服务集群中,nginx ingress 资源通过对接火山引擎云监控产品来实现监控和告警,包括:采集、查询、展示(Dashboard)以及告警等。
说明
需要提前开启 火山引擎云监控产品。
nginx ingress 对接火山引擎云监控产品,需要安装 metrics-collector 组件。
配置完成资源采集后,支持到 云监控控制台 中配置资源监控。详细操作,请参见 查看容器服务监控数据。
在 云监控控制台 支持配置资源告警策略。当监控数据达到阈值,触发告警后,系统会将告警资源、故障类型、当前值、告警持续时间等详细信息发送给告警联系人。详细操作,请参见 创建告警策略 和 创建告警联系人和联系组。
默认配置下,ingress-nginx-controller 的 CPU 资源限制是 0.5 core,内存限制是 1 GiB。如果您的业务流量较大,建议资源配额 CPU 上限不低于1 core,内存上限不低于2 GiB。您可以根据业务的实际需要调整 ingress-nginx-controller 组件的资源限制。
说明
为了进一步确保 nginx ingress 的性能和稳定性,可以将 ingress-nginx-controller 的多个实例部署在一些高配置节点上,以避免不同实例资源的抢占和单点故障。
下面以 ingress-nginx-controller 的 2 个实例分别独占 2 个专属节点为例,介绍配置步骤。
键:ingress-nginx
、值:true
的标签。详细操作,请参见 标签管理。键/值
。详细操作,请参见 污点管理。tolerations: - effect: NoExecute key: ingress-nginx operator: Equal value: "true"
nodeSelector: ingress-nginx: "true"
podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app.kubernetes.io/name: ingress-nginx namespaces: - kube-system topologyKey: kubernetes.io/hostname
默认情况下,ingress-nginx-controller 的日志没有进行持久化存储,需要您进行配置开启,实现 ingress-nginx-controller 日志持久化采集、存储以及查询。为了更好地展示 ingress-nginx-controller 日志内容,提升可读性,容器服务将 ingress-nginx-controller 日志采集作为一个独立功能供您使用。
说明
在 Kubernetes 集群中,路由规则(ingress)对集群服务(service)中外部可访问的 API 对象进行管理,提供七层负载均衡能力,可以给 ingress 配置提供外部可访问的 URL、Rewrite 配置、HTTPS 服务、以及灰度发布功能等高级功能。
针对 Ingress Nginx Controller,容器服务采用与社区完全兼容的配置方式。关于所有的配置说明,请参见 NGINX Configuration。
ingress nginx 原生支持的部分高级功能/高级配置可以基于 Annotation 的方式进行配置和实现。在每个ingress Yaml 的 Annotation 里配置,只对本 ingress 生效。更多信息请参见 Annotations。
对于 nginx,当请求 body 大小超过客户端请求最大允许值时,将向客户端返回413
错误。 这个大小可以通过参数client_max_body_size
来配置。
nginx.ingress.kubernetes.io/proxy-body-size: 20m