更新时间:2024-04-23 GMT+08:00
分享

部署高可靠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接入层的规模,保证高性能和高可靠性。

  1. 登录CCE控制台,单击集群名称进入集群,在左侧导航栏中选择“插件中心”,在右侧找到NGINX Ingress控制器插件,单击“管理”
  2. 在已安装插件页面,找到需要修改副本数量的NGINX Ingress插件实例,单击“编辑”
  3. 调整实例数。

  4. 单击“安装”。

在指定节点上部署Ingress服务

调整Nginx Ingress Controller的节点亲和策略,建议将Nginx Ingress Controller独占一个Node节点,以避免业务应用与Nginx Ingress Controller发生资源抢占。

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 在集群控制台左侧导航栏中选择“节点管理”,切换至“节点”页签,勾选目标节点,并单击“标签与污点管理”
  3. 在弹出的窗口中,在“批量操作”下方单击“新增批量操作”,然后选择“添加/更新”及“K8s标签”。
  4. 填写需要增加标签的“键”和“值”,单击“确定”。

    例如,给节点打上特定标签如下:

    • 键:node.kubernetes.io/nginx-ingress
    • 值:true

  5. 将Nginx Ingress Controller亲和到指定节点。

    1. 在左侧导航栏中选择“插件中心”,在右侧找到NGINX Ingress控制器插件,单击“管理”
    2. 在已安装插件页面,找到需要修改亲和性的NGINX Ingress插件实例,单击“编辑”
    3. 修改调度策略,指定节点亲和为“自定义策略”,并填写需要调度的节点标签。例如:
      • 标签名:node.kubernetes.io/nginx-ingress
      • 操作符:In
      • 标签值:true

      添加标签的节点数量要大于等于Nginx Ingress Controller Pod副本数,从而避免由于不满足亲和条件而导致部分Pod无法调度。

      图1 修改节点亲和策略
    4. 单击“安装”。

分享:

    相关文档

    相关产品