写点什么

容器应用发布三大方案

  • 2022 年 7 月 14 日
  • 本文字数:2128 字

    阅读完需:约 7 分钟

容器应用发布三大方案

通常来说,Kubernetes 的 Ingress 资源控制着外部请求访问 Kubernetes 内容器应用的方式,这是 Kubernetes 提供的容器应用发布的标准方式,也是大多数 Kubernetes 容器使用者所采用的发布方式。与容器应用发布相关的组件及流程如下图:

标准容器应用发布所涉及的组件和对象包括 Ingress 资源、Ingress 控制器、负载均衡器,这些组件和对象之间相互作用完成容器应用发布,具体的发布过程如下。

1)Ingress 资源是 Kubernetes 的标准对象资源,一个 Ingress 资源中可定义多条规则,每一条规则通常关联一个域名,外部请求通过该域名可访问该规则下所有的容器应用。一条规则内也可以定义多个路径,每一个路径对应一个容器服务,从而实现一个 Ingress 关联多个容器服务。


2)Ingress 控制器即入口控制器,主要工作是管理 Ingress,将 Ingress 中定义的访问规则翻译成入口控制器可识别的配置项,对不同规则中服务关联的容器访问关系进行初始化配置,以及基于 Kubernetes API 对容器的变化实时感知并完成配置项更新。


3)负载均衡器负责在数据平面将外部请求转发给入口控制器。入口控制器和普通的容器类似,要想让外部可以访问,必须通过 Kubernetes 的 Service 对象将其关联在负载均衡器上。通常一个 Kubernetes 内有多个入口控制器运行,负载均衡器还会对一个 Kubernetes 内的多个入口控制器进行负载均衡。另外,鉴于金融行业容器应用都是双活部署,负载均衡器还提供了跨数据中心容器应用统一入口及跨数据中心流量能力。


考虑到应用多中心部署、业务双活等特点,在制定容器应用分布有三种主要方案:

1、NodePort 方案

使用 NodePort 发布容器应用,首先需要创建 NodePort 类型的 Service,创建完成后会在 Kubernetes 集群的每个节点上监听一个额外的端口,如果在创建 Service 时没有指定端口,则会随机选择。外部负载均衡设备将客户端请求转发给两个集群,在负载均衡设备上会创建虚拟服务,关联两个数据中心的 Kubernetes 集群节点。由于 Kubernetes 集群的所有节点都可作为服务的入口,通常设置部分节点和外部负载均衡设备对接。在这种架构下,Kubernetes 集群中的部分节点扮演容器应用入口负载的角色。


NodePort 发布容器应用方案的优点是不依赖任何第三方的容器入口控制器等组件,只需创建一个 NodePort 类型的 Service,方便开发者快速部署测试。容器运维人员也可基于这种方式进行简单业务连通性等测试。缺点是 NodePort 维护成本高、性能有瓶颈、流量监控难、七层应用控制能力差。

2、开源容器入口控制器方案

Nginx 容器入口控制器是最受欢迎的容器入口控制器之一,是最初 Kubernetes 推荐的容器入口控制器实现,也是大多数金融组织或个人技术爱好者初步试验与探索容器应用发布的优先选择。基于 Nginx 容器入口控制器,每一个容器应用发布都是通过 Ingress 对象中的描述完成,容器入口控制器 Nginx Pod 可以将请求转发给业务应用 Pod。考虑到业务不间断服务和容灾,同一业务通常在多个独立的 Kubernetes 集群中发布,外部负载均衡会关联多个独立的 Kubernetes 集群中的 Nginx 容器入口控制器 Pod,实现多数据中心调度及容器应用双活。


Nginx 容器入口控制器的优点是对开发者友好,Nginx 具有很强的数据平面和开发平面的可编程能力,而且更加轻量级。开发人员喜欢轻量、软件化、开源的技术,可以通过定制开发实现任何业务需求。Nginx 容器入口控制器默认提供了 Go 模板,通过定制可实现特定业务需求的标记。缺点就是开源容器入口控制器不具备与外部网络打通的能力,需要具备自动化运维能力,四层业务能力差,必须依赖 PaaS DNS,七层业务发布高级功能缺失。

3、商用容器入口控制器方案

使用较多的是 F5 容器入口控制器方案。F5 容器入口控制器由两部分组成,F5 容器入口服务(F5 Container Ingress Service,F5 CIS)及 F5 VE(F5 虚拟版,云原生应用交付软件,以虚拟机镜像的方式提供,可部署到常见的虚拟化平台上)。F5 CIS 以容器的形式运行在 Kubernetes 内,F5 VE 通常以 Kubernetes 基础设施节点的方式与 Kubernetes 集群绑定。一个 F5 VE 可对接多个 CIS,CIS 负责将容器应用发布的描述文件转化为 F5 VE 的配置,并推送到 F5 VE。F5 VE 采用高可用主从部署,以确保单个 Kubernetes 集群容器应用发布的高可用。外部负载均衡确保容器应用入访统一接口,实现跨数据中心业务流量调度,保证了容器应用双活、高可用,并具备容灾能力。


F5 容器入口控制器最显著的优点是网络能力强。自身具备搭建二层和三层网络的能力,可以和常见的 Kubernetes 网络对接。软件定义网络数控分离设计,四七层业务发布高级功能、高性能且具有可编程流量控制能力。缺点就是学习成本高,资料只能依赖于厂商,对开发者不友好,云原生能力相对弱。


综上所述,如果是简小规模的容器环境,主要用途为容器技术的学习、业务上容器的测试,则可选择 NodePort 和 Nginx 入口控制器搭配的容器应用发布方案;如果是云原生开发团队,有很强的开发能力,DevOps 持续部署和持续集成的能力比较强,并且容器环境只被云原生开发团队一个团队使用,那么推荐 Nginx 入口控制器,且 Nginx 入口控制器通过容器原生的 HostNetwork 等方式发布出去,四层应用不建议使用 Nginx 入口控制器发布,应同样通过容器原生的 HostNetwork 等方式发布出去;如果是金融生产业务,容器平台多部门参与建设,业务稳定性要求高、性能要求高、业务复杂性高,那么推荐商用控制器方案。


发布于: 刚刚阅读数: 4
用户头像

InfoQ签约作者 2018.11.30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
容器应用发布三大方案_容器应用_穿过生命散发芬芳_InfoQ写作社区