部署高可靠Nginx Ingress Controller
在Kubernetes集群中,Ingress是一种独立的资源,制定了集群外部访问的转发规则,完成集群内的服务的对外暴露。Nginx Ingress Controller部署在集群中由用户自行运维,您可以参考本文部署高可用、高性能的Nginx Ingress Controller。
高可靠部署方案
在大规模集群中,您可以指定多个节点单独部署Ingress Controller组成统一接入层来承载集群入口流量。如果您的集群规模较小,也可以采用将Ingress Controller与业务应用混合部署的方式,但是需要注意资源限制和隔离。
- 增加Controller副本数量:采用多副本部署方式可以有效避免单点故障造成的整Nginx Ingress Controller的不可用。
- 在指定节点上部署Ingress服务:建议将Nginx Ingress Controller独占一个Node节点,进行节点级别的资源限制和隔离,以避免业务应用与Nginx Ingress Controller发生资源抢占。
增加Controller副本数量
通过调整Nginx Ingress Controller的Pod副本数量,可以快速增加Ingress接入层的规模,保证高性能和高可靠性。
- 登录CCE控制台,单击集群名称进入集群,在左侧导航栏中选择“插件中心”,在右侧找到NGINX Ingress控制器插件,单击“管理”。
- 在已安装插件页面,找到需要修改副本数量的NGINX Ingress插件实例,单击“编辑”。
- 调整实例数。
- 单击“安装”。
在指定节点上部署Ingress服务
调整Nginx Ingress Controller的节点亲和策略,建议将Nginx Ingress Controller独占一个Node节点,以避免业务应用与Nginx Ingress Controller发生资源抢占。
- 登录CCE控制台,单击集群名称进入集群。
- 在集群控制台左侧导航栏中选择“节点管理”,切换至“节点”页签,勾选目标节点,并单击“标签与污点管理”。
- 在弹出的窗口中,在“批量操作”下方单击“新增批量操作”,然后选择“添加/更新”及“K8s标签”。
- 填写需要增加标签的“键”和“值”,单击“确定”。
例如,给节点打上特定标签如下:
- 键:node.kubernetes.io/nginx-ingress
- 值:true
- 将Nginx Ingress Controller亲和到指定节点。
- 在左侧导航栏中选择“插件中心”,在右侧找到NGINX Ingress控制器插件,单击“管理”。
- 在已安装插件页面,找到需要修改亲和性的NGINX Ingress插件实例,单击“编辑”。
- 修改调度策略,指定节点亲和为“自定义策略”,并填写需要调度的节点标签。例如:
- 标签名:node.kubernetes.io/nginx-ingress
- 操作符:In
- 标签值:true
添加标签的节点数量要大于等于Nginx Ingress Controller Pod副本数,从而避免由于不满足亲和条件而导致部分Pod无法调度。
图1 修改节点亲和策略
- 单击“安装”。