操作场景
容器服务 TKE 支持安装 Nginx-ingress 扩展组件,可通过 Nginx-ingress 接入 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 名称。
说明:
5. 创建 Ingress 时可指定具体的 IngressClass 将 Ingress 绑定到具体的 Nginx Ingress 实例上。您可通过控制台或 YAML 创建 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,以此来提升性能。如下图所示:
说明:
提升 LB 带宽上限
LB 作为流量入口,如需较高的并发或吞吐,在创建 Nginx Ingress 实例时,可根据实际需求规划带宽上限,为 Nginx Ingress 分配更高的带宽。如下图所示:
若启用 LB 直通 Pod,LB 总带宽为 Nginx Ingress 实例 Pod 所在节点的带宽之和,建议专门规划一些高外网带宽节点部署 Nginx Ingress 实例(指定节点池 DaemonSet 部署)。
若未使用 LB 直通 Pod,LB 总带宽为所有节点的外网带宽之和。
优化 Nginx Ingress 参数
编辑部署好的 nginx-ingress-controller 的 Daemonset 或 Deployment(取决于实例部署选项),修改 initContainers(使用 Kubectl 进行修改,控制台禁止修改 kube-system 下的资源)。如下图所示:
在 Nginx 配置中选中对应的实例,单击编辑 YAML 可修改 Nginx Ingress 实例的 ConfigMap 配置。如下图所示:
说明:
提升 Nginx Ingress 可观测性
开启日志
说明:
创建 Nginx Ingress 实例后,在实例详情的运维功能入口里可以为实例开启日志,方便查看实例各项状态指标与问题排查。如下图所示:
注意:
v0.49.3 版本的实例,日志采集的索引配置文件存在名为 LogConfig 的 CRD 资源对象里,若您修改了该资源对象后,关闭/再打开该日志采集功能,该 LogConfig 的资源对象配置将被重置,请及时备份该资源对象里的数据。Nginx Ingress 实例本身的删除和 Nginx Ingress 组件的升级对该索引配置文件没有影响。
日志检索与日志仪表盘
开启日志配置后,在 Nginx Ingress 列表页可单击实例右侧操作项下的更多,在弹出的菜单中选择对应功能进行日志检索或查看日志仪表盘。
单击查看 Nginx 访问日志跳转到日志服务,在检索分析中选中实例对应的日志集与主题,即可查看 Nginx Ingress 的访问与错误日志。
单击查看 Nginx 访问大盘可以直接跳转到根据 Nginx Ingress 日志数据来展示统计信息的仪表盘。