上云无忧 > 文档中心 > 腾讯云容器服务实战教程 - Nginx Ingress 最佳实践
容器服务 TKE
腾讯云容器服务实战教程 - Nginx Ingress 最佳实践

文档简介:
操作场景: 容器服务 TKE 支持安装 Nginx-ingress 扩展组件,可通过 Nginx-ingress 接入 Ingress 流量。关于 Nginx-ingress 组件的更多介绍,请参见 Nginx-ingress 说明。本文将为您介绍 Nginx-ingress 组件常见最佳实践操作指引。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

操作场景

容器服务 TKE 支持安装 Nginx-ingress 扩展组件,可通过 Nginx-ingress 接入 Ingress 流量。关于 Nginx-ingress 组件的更多介绍,请参见 Nginx-ingress 说明。本文将为您介绍 Nginx-ingress 组件常见最佳实践操作指引。

前提条件

已安装 Nginx-ingress 扩展组件。

操作步骤

为集群暴露多个 Nginx Ingress 流量入口

Nginx-ingress 扩展组件安装后,在 kube-system 下会有 Nginx-ingress 的 operator 组件,通过该组件可以创建多个 Nginx Ingress 实例,每个 Nginx Ingress 实例都使用不同的 IngressClass,且使用不同的 CLB 作为流量入口,从而实现不同的 Ingress 绑定到不同流量入口。可以根据实际需求,为集群创建多个 Nginx Ingress 实例。
1. 登录 容器服务控制台,选择左侧导航栏中的集群
2. 在集群管理页面单击目标集群 ID,进入集群详情页面。
3. 选择左侧菜单栏中的服务与路由 > NginxIngress
4. 单击新增 Nginx Ingress 实例,根据需求配置 Nginx Ingress 实例,为每个实例指定不同的 IngressClass 名称。
说明
创建 Nginx Ingress 实例详细步骤,请参见 安装 Nginx-ingress 实例
5. 创建 Ingress 时可指定具体的 IngressClass 将 Ingress 绑定到具体的 Nginx Ingress 实例上。您可通过控制台或 YAML 创建 Ingress:
通过控制台创建 Ingress
通过 YAML 创建 Ingress
参考控制台 创建 Ingress 步骤创建 Ingress。其中:
Ingress类型:选择 Nginx Ingress Controller
Class:选择上述步骤创建的 Nginx Ingress 实例。

参考 YAML 创建 Ingress 步骤创建 Ingress,并指定 ingressClass 的 annotation(kubernetes.io/ingress.class)。如下图所示:

性能优化

LB 直通 Pod

集群网络模式为 Global Router 时,默认未开启 LB 直通 Pod,建议您按照以下步骤开启 LB 直通 Pod:
1. 为集群启用 VPC-CNI
2. 创建 Nginx Ingress 实例时,勾选使用 CLB 直连 Pod 模式,可以使流量绕过 NodePort 直达 Pod,以此来提升性能。如下图所示:

说明
创建 Nginx Ingress 实例详细步骤,请参见 安装 Nginx-ingress 实例

提升 LB 带宽上限

LB 作为流量入口,如需较高的并发或吞吐,在创建 Nginx Ingress 实例时,可根据实际需求规划带宽上限,为 Nginx Ingress 分配更高的带宽。如下图所示:

若账号为非带宽上移类型(可参见 区分账户类型 文档进行区分),带宽上限取决于节点带宽,可根据以下情况调整节点的带宽上限:
若启用 LB 直通 Pod,LB 总带宽为 Nginx Ingress 实例 Pod 所在节点的带宽之和,建议专门规划一些高外网带宽节点部署 Nginx Ingress 实例(指定节点池 DaemonSet 部署)。
若未使用 LB 直通 Pod,LB 总带宽为所有节点的外网带宽之和。

优化 Nginx Ingress 参数

Nginx Ingress 实例已默认为内核参数与 Nginx Ingress 自身的配置进行优化,详情请参见 Nginx Ingress 高并发实践。如需自定义,可参考下文介绍自行修改:
修改内核参数
修改 Nginx Ingress 自身配置
编辑部署好的 nginx-ingress-conntroller 的 Daemonset 或 Deployment(取决于实例部署选项),修改 initContainers(使用 Kubectl 进行修改,控制台禁止修改 kube-system 下的资源)。如下图所示:

Nginx 配置中选中对应的实例,单击编辑 YAML 可修改 Nginx Ingress 实例的 ConfigMap 配置。如下图所示:

说明
ConfigMap 配置详细介绍请参见 官方文档

提升 Nginx Ingress 可观测性

开启日志

说明:
日志依赖 日志服务,如需开启请参见 Nginx-ingress 日志配置
创建 Nginx Ingress 实例后,在实例详情的运维功能入口里可以为实例开启日志,方便查看实例各项状态指标与问题排查。如下图所示:

注意:
v0.49.3 版本的实例,日志采集的索引配置文件存在名为 LogConfig 的 CRD 资源对象里,若您修改了该资源对象后,关闭/再打开该日志采集功能,该 LogConfig 的资源对象配置将被重置,请及时备份该资源对象里的数据。Nginx Ingress 实例本身的删除和 Nginx Ingress 组件的升级对该索引配置文件没有影响。
若有自定义日志的需求,请参见 文档 进行配置。

日志检索与日志仪表盘

开启日志配置后,在 Nginx Ingress 列表页可单击实例右侧操作项下的更多,在弹出的菜单中选择对应功能进行日志检索或查看日志仪表盘。
单击查看 Nginx 访问日志跳转到日志服务,在检索分析中选中实例对应的日志集与主题,即可查看 Nginx Ingress 的访问与错误日志。
单击查看 Nginx 访问大盘可以直接跳转到根据 Nginx Ingress 日志数据来展示统计信息的仪表盘。
相似文档
  • 操作场景: 腾讯云容器服务 TKE 暂不支持 Pod 限速,但可通过修改 CNI 插件来支持此功能。本文档介绍如何在 TKE 上实现对 Pod 的带宽限速,您可结合实际场景进行操作。
  • 概述: Kubernetes 在集群接入层设计并提供了 Service 及 Ingress 两种原生资源,分别负责四层和七层的网络接入层配置。传统方案是创建 Ingress 或 LoadBalancer 类型的 Service 来绑定腾讯云负载均衡,将服务对外暴露。此方式将用户流量负载至用户节点的 NodePort 上,再通过 KubeProxy 组件转发到容器网络中,此方案在业务性能和能力方面的支持会有所局限。
  • 概述: Kubernetes 官方提供了 NodePort 类型的 Service,即给所有节点开通一个相同端口用于暴露该 Service。大多云上负载均衡 (Cloud Load Balancer,CLB) 类型 Service 的传统实现也都是基于 NodePort,即 CLB 后端绑定各节点的 NodePort,CLB 接收外界流量,转发到其中一个节点的 NodePort 上,再通过 Kubernetes 内部的负载均衡,使用 iptables 或 ipvs 转发到 Pod。示意图如下:
  • 应用场景: 当需明确服务请求来源以满足业务需求时,则需后端服务能够准确获取请求客户端的真实源 IP。例如以下场景: 具有对服务请求的来源进行审计的需求,例如异地登录告警。 具有针对安全攻击或安全事件溯源的需求,例如 APT 攻击及 DDoS 攻击等。
  • 操作场景 Traefik 是一款优秀的反向代理工具,与 Nginx 相比,Traefik 具有以下优势: 原生支持动态配置。例如,Kubernetes 的 Ingress 资源或 IngressRoute 等 CRD 资源(Nginx 每次需重新加载完整配置,部分情况下可能会影响连接)。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部