使用腾讯云容器服务玩转 Nginx Ingress

在开源社区当中,Kubernetes 的 Ingress Controller 的实现有多种方式,Nginx Ingress 只是其中的一种实现方式,当然也是目前社区中使用量最大的一种 Ingress Controller 的实现方式,其不仅功能强大,而且性能极高。本文主要介绍如何使用腾讯云容器服务实现多种方式进行 Nginx Ingress 的部署,并会简单介绍各种方式的实现原理以及优缺点和适用场景。

Nginx Ingress 是什么

Nginx Ingress 是 Kubernetes 的一种对象,通过nginx-ingress-controller 将用户声明的 nginx-ingress 转化成 nginx 的转发规则。其核心解决的问题是流量的转发和东西向的负载均衡。
主要的工作原理是nginx-ingress-controller监听api-server的变化(Kubernetes Informers),通过 watch Kubernetes 的 Ingress、Service、Endpoint、Secret、ConfigMap 等对象变化,更改 Nginx 实例的配置,进行流量转发。

img

目前社区中,针对于 Nginx Ingress 主要有如下的两种实现方式

Kubernetes 开源社区的实现

Nginx 官方的实现

为什么需要 Nginx Ingress

开源社区当中,对 Ingress Controller 的实现方式有多种,每一种 Controller 都有其适用的场景以及各自的优缺点,为什么推荐使用 nginx-ingress-controller?下面我们来探讨一下,如果不使用 nginx-ingress-controller 会给业务带来什么困扰

这里以腾讯云容器服务控制台(以下简称 TKE)默认推荐的 ingress controller 为例子,存在如下的一些问题:

CLB 类型的 Ingress 能力无法满足现有业务的需求,如无法共享同一个外网入口,支持默认默认转发后端等

原有业务已使用了 nginx-inrgess,并且运维已习惯于配置 nginx.conf,不希望做过多的改变

使用 nginx-ingress-controller,能够很好地解决以上的问题。

需要什么前提条件 部署 nginx-ingress-operator 组件部署安装

进入腾讯云容器服务控制台当中,选择需要部署 Nginx Ingress 的集群,进入集群-组件管理当中,部署安装 Nginx Ingess 组件,如下图:

img

组件安装并且正常运行

img

部署方案

TKE 提供了多种对于nginx-ingress-controller的部署方案以及接入 LB 的方式,适配不同的业务场景需求,以下会对不同的方案进行介绍。

nginx-ingress-controller 部署方案 方案一: DaemonSet + 节点池

img

Nginx 作为关键的流量接入网关,是至关重要的组件,不建议将 Nginx 与其他业务部署在相同的节点内,可以通过节点池设置污点的方式,进行部署。关于节点池的相关说明,可以查看腾讯云容器服务节点池概述

img

使用此部署方案,应该注意如下几个事项:

提前准备好部署 nginx-ingress-controller 的节点池,同时设置节点池的污点 Taint 和 Label,防止其他 Pod 调度到该节点池。

确保已成功部署安装好 nginx-ingress-operator 组件,部署方式参考上方指引

进入组件详情,创建

nginx-ingress-controller

实例(单一集群内可同时存在多个实例)

部署方式选择 指定节点池DaemonSet部署

设置容忍污点

设置 Request/Limit,其中 Request 需设置比节点池的机型配置小(节点本身有资源预留,避免实例因资源不足而不可用),Limit 可不设置

其他参数根据业务需要进行设置即可

方案二:Deployment + HPA

img

使用 Deployment + HPA 的方案进行部署,您可以根据业务需要配置污点和容忍,将 Nginx 和业务 Pod 进行分散部署。搭配 HPA,设置 CPU/内存等指标进行弹性伸缩。

img

使用此部署方案,应该注意如下几个事项:

在集群中设置即将部署 nginx-ingress-controller 的节点的 Label

确保已成功部署安装好 nginx-ingress-operator 组件,部署方式参考上方指引。

进入组件详情,创建

nginx-ingress-controller

实例(单一集群内可同时存在多个实例)

部署方式选择 自定义Deployment+HPA部署

设置 HPA 触发策略

设置 Request/Limit

设置节点调度策略,推荐 nginx-ingress-controller 独占节点,避免其他业务资源侵占而导致不可用

其他参数根据业务需要进行设置即可

Nginx 前端接入 LB 的部署方式

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxjfz.html