【技术方案分享】CCE ELB Ingress PK Nginx Ingress 孰胜孰负?

HuaweiCloudDeveloper 发表于 2022/01/14 10:09:14 2022/01/14
【摘要】 Ingress可以基于七层的HTTP和HTTPS协议转发,可以通过域名和路径做到更细粒度的划分,本文以华为云CCE ingress 的两种实现方式进行实操,简述两种方式的优缺点。

目录:

1 华为云CCE ingress实现方式

    1.1 ELB ingress 工作原理
    1.2 Nginx ingress 工作原理
    1.3 ingress 访问类型
    1.4 验证方式

2 Nginx ingress 方式创建ingress

    2.1 新建无状态工作负载 Tomcat1
    2.2 新建无状态工作负载 Tomcat2
    2.3 创建ingress(IP访问)
    2.4 创建ingress(域名访问),设置转发规则实现不同 URL 访问不同服务

3 ELB ingress 方式创建ingress

    3.1 创建无状态工作负载 Tomcat3
    3.2 新建无状态工作负载 Tomcat4
    3.3 创建ingress(IP访问)
    3.4 创建ingress(域名访问),设置转发规则实现不同 URL 访问不同服务

4 ELB ingress 与 Nginx ingress 的优缺点

    4.1 Nginx ingress优缺点
    4.2 ELB ingress优缺点

1 华为云CCE ingress实现方式

    CCE支持两种Ingress Controller类型,ELB Ingress Controller由华为云自研,基于弹性负载均衡服务(ELB)实现流量转发;Nginx Ingress Controller使用Kubernetes社区维护的模板与镜像,通过Nginx组件完成流量转发。

1.1 ELB ingress 工作原理

02.png

1.2 Nginx ingress 工作原理

01.png

1.3 ingress 访问类型

ingress类型 访问类型 集群内访问(ClusterIP) 节点访问(NodePort)
ELB ingress 负载均衡路由 不支持 支持
ENI负载均衡路由 支持 不支持
Nginx ingress 负载均衡路由 支持 支持
ENI负载均衡路由 支持 不支持

1.4 验证方式

当前文章采用 ingress 的两种方式进行实操验证:

Nginx ingress + 负载均衡路由 + 节点访问(NodePort) →见第2章节
ELB ingress + ENI负载均衡路由 + 集群内访问(ClusterIP) →见第3章节

2 Nginx ingress 方式创建ingress

2.1 新建无状态工作负载 Tomcat1

  • 无状态工作负载-step1-工作负载基本信息

image.png

  • 无状态工作负载-step2-容器设置:开源镜像中心-tomcat

image.png

  • 无状态工作负载-step3-工作负载访问设置:节点访问

image.png

  • 无状态工作负载-step3-高级设置:高级设置保持默认,点击创建

image.png

  • 进入容器,设置访问界面,内容为:It is a test!

image.png

2.2 新建无状态工作负载 Tomcat2

  • 按照同样的步骤新建的tomcat负载

image.png

  • 进入容器,设置访问界面,内容为:Test for ingress!

image.png

2.3 创建ingress(IP访问)

  • 创建前提:安装nginx-ingress插件

安装步骤参考:https://support.huaweicloud.com/usermanual-cce/cce_01_0034.html

  • 进入华为云CCE控制台,进入资源管理下的网络管理界面,点击ingress

image.png

  • 添加ingress,开启“对接nginx”选项,设置转发规则如下

image.png

  • 创建成功后,查看ingress

image.png

  • 访问服务,进行验证

image.png

2.4 示例:创建ingress(域名访问),设置转发规则实现不同 URL 访问不同服务

说明:2.3章节的验证为IP直接访问,当前章节以域名访问进行验证

  • DNS新建两个域名并解析到 1.1.1.1

image.png

DNS配置参考:https://support.huaweicloud.com/qs-dns/dns_qs_0002.html

  • 新建ingress,增加转发规则,转发规则的域名设置为上一步新建的两个域名


image.png

  • 查看ingress

image.png

注:由上图可知,增加后的ingress使用的是同一个ELB的IP进行服务访问

  • 修改DNS的解析到ingress的访问IP

image.png

  • 访问服务,进行验证

通过域名 ingress1.xxxxxxx 只能访问到 Test for ingress!

image.png

通过域名 ingress2.xxxxxxx 只能访问到 It is a test!

image.png

3 ELB ingress 方式创建ingress

3.1 创建无状态工作负载,Tomcat3

  • 无状态工作负载-step1-工作负载基本信息,选择绑定弹性网卡

image.png

  • 无状态工作负载-step2-容器设置:开源镜像中心-tomcat

image.png

  • 无状态工作负载-step3-工作负载访问设置:集群内访问 ( ClusterIP )

image.png

  • 无状态工作负载-step3-高级设置:高级设置保持默认,点击创建

image.png

  • 进入容器,设置访问界面,内容为:It is a test ENI!

image.png

3.2 新建无状态工作负载 Tomcat4

  • 按照同样的步骤新建的tomcat负载

image.png

  • 进入容器,设置访问界面,内容为:Test for ingress ENI!

image.png

3.3 创建ingress(IP访问)

  • 进入华为云CCE控制台,进入资源管理下的网络管理界面,点击ingress

image.png

  • 添加ingress,选择ENI负载均衡路由,设置转发规则如下

image.pngimage.png

  • 创建成功后,查看ingress

image.png

  • 访问服务,进行验证

image.png

3.4 示例:创建ingress(域名访问),设置转发规则实现不同 URL 访问不同服务

说明:3.3章节的验证为IP直接访问,当前章节以域名访问进行验证

  • DNS新建两个域名并解析到 1.1.1.1

image.png

DNS配置参考:https://support.huaweicloud.com/qs-dns/dns_qs_0002.html

  • 新建ingress,增加转发规则,转发规则的域名设置为上一步新建的两个域名

image.pngimage.png

  • 查看ingress

image.png

注:由以上步骤可知,增加ingress时可以选择新建ELB,使不同的ELB的转发不同的服务

  • 修改DNS的解析到ingress的访问IP

image.png

  • 访问服务,进行验证

通过域名 ingress3.xxxxxxx 只能访问到 It is a test ENI!

image.png

通过域名 ingress4.xxxxxxx 只能访问到 Test for ingress ENI!

image.png

说明:当前仅为演示操作,实际项目中可以根据服务的需要创建多个ingress实现服务转发。(一个ingress对应一个独享型 ELB)

4 ELB ingress 与 Nginx ingress 的优缺点

4.1 Nginx ingress优缺点

  • 优点:
    1、可自定义配置参数,详情参考:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/
    2、转发规则配置service同时支持集群内访问(ClusterIP)和节点访问(NodePort)
    3、可以设置路由重定向

  • 缺点
    1、需要安装nginx-ingress 插件,占用node资源
    2、需要自行升级,维护
    2、性能依赖于pod资源配置
    3、多个ingress使用同一个ELB(即nginx-ingress暴露服务的ELB),性能受ELB限制

4.2 ELB ingress优缺点

  • 优点:
    1、不需要进行插件安装,华为云直接提供,免维护,免升级
    2、多个ingress可以使用多个ELB,高性能
    3、ingress controller部署在master节点,不占用集群node资源

  • 缺点
    1、转发规则配置service 仅支持集群内访问(ClusterIP)或节点访问(NodePort)
    2、不支持路由重定向

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。