【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

Kubernetes 和 OpenStack 相虐相杀,还是珠联璧合?

  • 2020-03-11
  • 本文字数:3285 字

    阅读完需:约 11 分钟

Kubernetes和OpenStack相虐相杀,还是珠联璧合?

上周,在 Austin 举行的 OpenStack Summit 上,CoreOS 发布 Stackanetes,整合 Kubernetes 和 OpenStack。

一个月前,CoreOS、Intel 和 Mirantis 宣布合作,目标是把 OpenStack 云管理框架搬上 K8S,当 OpenStack 出故障时,能借助 K8S 的编排机制以极快的速度重启 OpenStack 组件。


此番“珠联璧合”,却有之前“相虐相杀”之说的铺垫。


去年 11 月东京 OpenStack 峰会让我们嗅到了容器的“腾腾杀机”:每个人都在谈论容器,以及用各种容器编排器在不久的将来替代虚拟机!因为容器的轻量级、易用、部署快速,迅速成为开发者最爱,用以轻松建立、维护、扩容和滚动更新他们的应用程序。


以下让我们来看一篇技术帖,描述如何基于 Kubernetes,在 TCP 云端创建私有云解决方法,运用在生产或是在 OpenStack 启动的虚拟化。


Kubernetes 带来一个崭新的方法来管理基于容器的工作负载,并且为虚拟机开启类似于 OpenStack 的功能。如果你开始使用 Kubernetes,你很快会感受到轻松在 AWS、GCE 或者 Vagrant 上部署的快感,但是你的本地逻辑部署怎么样呢?如何将其整合到你目前的 OpenStack 或者虚拟基础设施上呢?所有的博客帖和手册文档用文件证明用简单的网页程序跑在虚拟机上的小集群,但是目前的网络设计却没有能够为裸机或者企业性能负载展示真实场景。设计网络是架构设计中最难的部分,就好比使用 OpenStack。因此,我们来定义以下网络需求:


  • 多租户——容器工作负载是每个安全策略标准的基础要求。例如,默认的 Flannel 网络只提供平坦的网络体系结构。

  • 多云端支持——不是每个工作负载都适用于容器的,你仍然需要将像数据库一个的重负载放到虚拟机或者裸机里。由于这个原因,单个控制面板是最好的选择

  • 覆盖——与多租户相关。几乎每一个 OpenStack Neutron 配置都会使用覆盖(VXLAN,GRE,MPLSoverGRE,MPLSoverUDP),我们可以使他们之间互相联系。

  • 分布式路径引擎——东西和南北流量无法通过同一个中央软件服务。网络流量不得不在 OpenStack 计算节点和 Kubernetes 节点之间走动。最优方案就是在路由器上面提供路由,而不是专用网关设备。


基于这些需求,我们决定首先开始使用 OpenContrail SDN,我们的任务是将 OpenStack 和 Kubernetes 整合到一起,然后为实际负载测试找一个合适的应用程式堆栈。

OpenContrail 概述

OpenContrail 是一个开源 SDN&NFV 解决方案,从 Havana 开始,跟 OpenStack 有着些许的联系。它和 Nicira(现在的 VMware NSX-VH)是第一个产品 Neutron 插件,上一届峰会调查显示,它也是最常被配置的解决方案,排名仅在 OpenVwitch 之后,是第一个基于 Vendor 的解决方案。


OpenContrail 已经整合到 OpenStack、VMware、Docker 和 Kubernetes 上了。Kubernetes 网络插件 kube-network-manager 早在去年于温哥华举办的 OpenStack 峰会的时候已经在开发当中了,于去年年底首次发布。

架构

我们从两个独立的 Contrail 配置开始测试,然后安装 BGP 联盟。联盟的原因是 kube-network-manager 的重点验证。当启用 contrail-neutron-plugin 开启的时候,contrail API 启用 keystone 验证的时候,contrail API 用 keystone 验证,这个功能还没有在 Kubernetes 插件实施。Contrail 联盟等下会详细描述。


下面的这个架构是一个高水平架构图,图中左边是 OpenStack 集群,右边是 Kubernetes 集群。OpenStack 和 OpenContrail 被部署在高可得性的最佳实践设计中,这个设计可以被扩容成成百上千个计算节点。



下图展示了两个 Contrail 集群的联盟。总体上,这个功能在不需要物理网关的情况下可以连接 Contrail controllers 与多站点数据中心的站点。每个站点的控制节点和其它使用 BGP 的站点一样。有可能的话,可以用这种方法延伸到 L2 和 L3 网络在多个数据中心上面。


通常,两个独立的 OpenStack 云端或者两个 OpenStack 区域会用到这个设计。所有的 Contrail 的组件(包括 vRouter)是一样的。Kube-network-manager 和 neutron-contrail-plugin 为不同的平台转换 API 请求。网络解决方案的核心功能还是没有改变。这不仅带来强大的网络引擎,还带来了分析。


应用程序堆栈

概述


让我们来看看典型的场景。我们的开发人员给了我们docker compose.yml,这也是为在笔记本上的开发和本地测试所用。这个方法更加轻松,但是我们的开发者已经了解过 docker 和应用程序工作负载。这个应用程序堆栈包括以下组件:


  • 数据库——PostgreSQL 或者 MySQL 数据库集群

  • 下载并安装——为内容缓存

  • Django 应用 Leonardo——Django CMS Leonardo 被用于应用程序堆栈测试

  • Nginx——网络代理

  • 负载均衡——容器缩放的 HAProxy 负载均衡器

  • 当我们想将之运用到产品中的时候,我们可以将所有东西和 service 一起转移到 Kubernetes RC 上面,但是就如我们在一开始提到的,不是所有的东西都适用于容器。因此,我们将数据库集群分开到 OpenStack 虚拟机,然后将剩下的部分重写到 Kubernetes 密钥清单。

应用程序部署

这个部分描述了在 OpenStack 和 Kubernetes 上的应用程序供应的工作流程。

OpenStack 方面

第一步,我们已经在 OpenStack 上正式推出数据库堆栈。这就用 PostgreSQL 和数据库网络创建了 3 个虚拟机。数据库网络是私人租户隔离网络。


Kubernetes 方面

在 Kubernetes 这边,我们不得不用 Leonardo 和 Nginx services 发布表明。点击这里查看:https://github.com/pupapaik/scripts/tree/master/kubernetes/leonardo


为了使之顺利在网络隔离情况下运行,来看以下部分。


  • leonardo-rc.yaml-Leonardo 应用的 RC,replicas3,和虚拟网络 leonardo

  • leonardo-svc.yaml-leonardo service 用虚拟 IP 在端口 8000 从集群网络挂载应用程序 pods。



nginx-rc.yaml-3 个副本的 NGINX RC,虚拟网络 nginx 和策略,这三者允许与 leonardo-svc 网络通信。这个例子不使用 SSL。(NGINX replication controller with 3 replicas and virtual networknginx and policy allowing traffic to leonardo-svc network. This sample does notuse SSL.)



  • nginx-svc.yaml-用集群 vip IP 和虚拟 IP 创建 service,从网络上访问应用程序



我们来调用 kubecl 来运行所有的密钥清单。



在 Kubernetes 里创建了以下的 pods 和 services。



只有 Nginx service 有公共 IP 185.22.97.188,这是一个负载均衡的浮动 IP。所有的流量现在已经在 Juniper MX 上面被 ECMP 平衡。


为了让集群完全运行起来,就必须在 OpenStack 上的数据库虚拟网络和 Kubernetes Contrail 上的 leonardo 虚拟网络。进入这两个 Contrail UI,然后为这两个网络设置一样的 Route Target。这也可以通过 contrail 资源(heat resource)来进行自动化。



下面的这张图展示了应该怎样查看产品应用程序堆栈。在最上面是两个有 Public VRF 的 Juniper MXs,就是浮动 IP 传播的地方。流量通过 ECMP 到 MPLSoverGRE 隧道传播到 3 个 nginx pods。Nginx 代理请求到 Leonardo 应用程序服务器,它将会议和内容存储到运行在 OpenStack 虚拟机上的 PostgreSQL 数据库集群。


pods 和虚拟机间的连接是直接的,没有任何路由中心点的。Juniper MXs 只运用于外向连接到互联网。多亏存储应用程序会话到数据库(通常来说是下载安装或者是 redis),我们不需要特定的 L7 负载均衡器,ECMP 运行完全没有问题。


其它的输出

这个部分展示的是其它从应用堆栈的有趣输出。用负载均衡器描述的 Nginx service 展示了浮动 IP 和私有集群 IP。然后是 nginx pods 的 3 个 IP 地址。流量通过 vRouter ECMP 分布。



Nginx 路由表展示了 pods 和 route10.254.98.15/32 间的内部路由,指向 leonardo service。



之前的 route10.254.98.15/32 是 leonardo service 里面的描述。



Leonardo 路由表跟 nginx 十分相似,除了 routes 10.0.100.X/32,他在不同的 Contrail 里指向 OpenStack 虚拟机。



最近的输出是从 Juniper MXs VRF 出来的,展示了多个到 nginx pods 的路径。


结语

我们已经证明,OpenStack、Kubernetes、裸机和 VMware vCenter 可以使用单个 SDN 解决方案。


更重要的一点是,这个使用案例实际上可以为生产环境所用。


本文转载自才云 Caicloud 公众号。


原文链接:https://mp.weixin.qq.com/s/7dxT1phl9OKoHrJO0Rtexw


2020-03-11 19:531030

评论

发布
暂无评论
发现更多内容

暑期读书指南 | 用缤纷字体读精品好书,华为阅读上新啦!

最新动态

前端程序员入门:先学Vue3还是Vue2?

互联网工科生

vue.js Vue 前端

英特尔合作埃森哲推出一套共计34个开源AI参考套件

E科讯

用友发布业界首个企业服务大模型YonGPT

用友BIP

HTML5智慧景区三维可视化管理平台

2D3D前端可视化开发

智慧景区 智慧旅游 景区三维可视化 数字景区 智慧景区系统

NineData已支持「最受欢迎数据库」PostgreSQL

NineData

postgresql 客户端 数据源 NineData 集成AI

HBase Compaction 原理与线上调优实践

vivo互联网技术

HBase 调优参数 Minor Compaction Compaction策略 Major Compaction

暑假提升休闲两不误,与华为阅读一起开启高质量听书

最新动态

【观察】智能运维的“下半场”,看云智慧如何“开新局”

云智慧AIOps社区

算法 运维 智能运维 大模型 IT运维

架构训练营模块一作业

Kleven

架构实战营

开发语音APP源码的小知识

山东布谷网络科技

app源码

初探webAssembly | 京东物流技术团队

京东科技开发者

前端 webassembly JavaScrip Blazor WebAssembly 企业号 7 月 PK 榜

用Rust生成Ant-Design Table Columns | 京东云技术团队

京东科技开发者

rust swagger 企业号 7 月 PK 榜 Columns

一文让你知道等保测评和渗透测试的区别与联系

行云管家

信息安全 渗透测试 等级保护 等保测评

在langchain中使用带简短知识内容的prompt template

程序那些事

人工智能 AI 程序那些事 AI大语言模型 大语言模型

Inpaint Anything:一键进行多种图像修补

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 7 月 PK 榜

再获权威认可!MIAOYUN荣获中国信通院一云多芯优秀案例,荣登《云管理产品与服务图谱》

MIAOYUN

中国信通院 一云多芯解决方案 一云多芯 可信云大会 云管理产品与服务图谱

从税务管理的数智化转型之路中我们能看到什么?

用友BIP

税务管理

JAVA和JVM运行原理是什么?

java易二三

Java 编程 JVM 计算机 程序猿

澜舟科技CEO周明:不过度追求AGI,更看重大模型语言理解能力和应用落地性 | 1号位

澜舟孟子开源社区

印刷行业MES系统解决方案

万界星空科技

开源 MES系统 印刷

伙伴云「页面」上线!网站、博客、资源库、文档、周报,拖拽即刻实现

联营汇聚

Java一维数组是什么,怎么用?

java易二三

Java 编程 程序员 数组 计算机

长连接:ChatGPT流式响应背后的逻辑 | 京东物流技术团队

京东科技开发者

websocket 长连接 企业号 7 月 PK 榜 sse

并发编程-FutureTask解析 | 京东物流技术团队

京东科技开发者

并发编程 源码剖析 FutureTask 企业号 7 月 PK 榜

AREX:携程新一代自动化回归测试工具的设计与实现

AREX 中文社区

开源 测试工具 回归测试 流量回放

资源成本降低70%!华为MetaERP资产核算的Serverless架构实践

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

Qualcomm WiFi7 Routerboard,IPQ9574,4X4,4XM.2,SFP,Industrial High Power|DR9574

wallyslilly

ipq9574

数仓现网案例丨超大结果集接收异常

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

Java Web应用开发案例|使用AJAX实现省市区三级联动效果

TiAmo

Java Java web 开发实例

大文件传输过程中的网络拥塞控制方法研究

镭速

大文件传输 网络拥塞问题

Kubernetes和OpenStack相虐相杀,还是珠联璧合?_行业深度_才云科技_InfoQ精选文章