icon-cookie
The website uses cookies to optimize your user experience. Using this website grants us the permission to collect certain information essential to the provision of our services to you, but you may change the cookie settings within your browser any time you wish. Learn more
I agree
blank_error__heading
blank_error__body
Text direction?

如何零停机为混合云架构中的Kubernetes集群进行扩缩容

原创: Calin RancherLabs 2019-03-21


引    言



很多时候,对于在线类型的业务,企业可能会拥有自己的数据中心,然后拥有用于运行网站的私有云。要想运行应用程序并存储其数据,企业可能需要部署许多服务器。

可能大多数时候,网站的整体流量都是稳定的。但也不排除有时,网站的流量会面临突然的增长,这时企业该如何应对?

想应对流量增加,扩展应用程序是必须的。但需要为了这偶尔的流量增加来购置新的硬件吗?额外的花费加上每年只使用几次的频率,是划算的吗?可能不少企业会权衡这个问题。这种时候,混合云模式可能是个不错的选择。

从私有云转向混合云,可以大大节省时间和成本。将应用程序(部分)扩展到公有云后,您就只需在使用它们时、仅为您所使用的资源付费。

但是,您该如何选择公有云?您可以选择多个公有云吗?

简单来说,回答是肯定的。不少企业会选择多个公有云提供商。因为企业也许有不同的团队,需要处理不同的应用程序,有不同的要求,因此单一的云提供商可能无法满足所有需求。此外,许多组织需要遵守某些法律、法规和政策,这些法律、法规和政策要求他们的数据必须实际驻留在某些特定地点。使用多种、多地的公有云,可以帮助组织满足这些严格的、多样化的要求。同时,也许企业的最终用户分布在不同地域,这时候企业还可以从多个数据中心区域或可用区域中进行选择,以尽可能地在地理位置上接近最终用户,从而为用户提供最佳性能和最小延迟。



跨云扩展的挑战



决定使用混合云架构后,我们来回头思考一下最初的问题。您的应用程序具有针对您的应用程序的微服务部署架构,这一架构上运行着需要扩展的容器。而这,就是Kubernetes发挥作用的地方。Kubernetes可以帮助您管理和编排节点集群中的容器化应用程序。然而,尽管Kubernetes能帮助您管理和扩展部署、节点和集群,但它无法帮助您轻松地跨云提供商管理和扩展它们。这一点我们会在稍后详细介绍。

Kubernetes集群是一组机器(物理/虚拟),Kubernetes为集群提供资源以运行应用程序。首先,您需要了解的基本Kubernetes概念有:

  • Pod是控制一个或多个容器的单元,它会作为一个应用程序来被调度。通常,您应该为每个应用程序创建一个Pod,以便您可以单独扩展和控制它们。

  • 节点组件是Kubernetes中的worker machine。节点可以是虚拟机(VM)或物理机,具体取决于集群。每个节点都包含运行pod所需的服务,并由主组件管理。

  • 主组件管理着Pod的生命周期。如果Pod死亡,Controller会创建一个新的Pod;如果你对Pod进行扩容或缩容,那么Controller会创建/销毁你的Pod。有关Controller类型的更多信息,可以参阅此处:

    https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/

这三个组件的作用是扩展和调度容器。主组件指示调度和扩容的命令,然后节点相应地根据命令来编排pod。





上述只是Kubernetes非常基础的概念,这篇《零基础入门│带你理解Kubernetes》可以带你更详细地理解Kubernetes。

尝试使用Kubernetes解决跨云扩展的问题时,会遇到一些关键挑战:

  • 难以管理多个云、多个集群,设置用户,设置策略

  • 安装和配置的复杂性

  • 不同环境的用户或团队会有不同体验

Rancher可以帮助您解决上述难题。Rancher是一个开源的容器管理平台,用于在生产中运行Kubernetes。Rancher的下述功能可以帮助我们管理和扩展我们的应用程序,无论计算资源是在本地托管还是在多个云上托管:

  • 跨多个集群和云的通用基础架构管理

  • 简单易用的Kubernetes配置和部署界面

  • 一键轻松扩展Pod和集群

  • 访问控制和用户管理(ldap,AD)

  • 工作负载、RBAC、政策和项目管理

在多云、甚至有可能是多个任何可以运行Kubernetes的基础架构上,Rancher都可以成为您的多个Kubernetes集群的单一控制点。

下面让我们看看我们如何管理两个不同区域的多个Kubernetes集群。



启动Rancher 2.0实例



首先,启动Rancher 2.0实例。具体方法可以参照这个快速上手指南:https://rancher.com/quick-start/



上手Rancher和Kubernetes



让我们在两个不同的地区的GCP中创建两个托管的Kubernetes集群。为此,您需要一个服务帐户密钥。

在Global选项卡中,我们可以看到所有可用的集群及其状态。从Provisioning状态开始,集群准备好后,状态会变成Active。 







现在我们已经从Kubernetes集群中为每个节点部署了许多pod。这些pod将由Kubernetes和Rancher的内部系统使用。

下面继续为两个集群部署工作负载。按顺序选择默认项目; 这将打开Workloads选项卡。单击Deploy,将第一个集群的名称及Docker镜像设置为httpd,第二个集群的设置为nginx,因为我们希望将我们的Web服务器暴露给Port映射区域。选择一个四层负载均衡中的Internet流量。 















如果单击nginx / httpd工作负载,您将看到Rancher实际上按照Kubernetes的建议创建了一个部署来管理ReplicaSet。您还将看到这个ReplicaSet创建的Pod。



扩展Pod和集群



Rancher实例正在管理两个集群:

  • us-east1b-cluster,运行5个httpd Pod

  • europe-west4-a cluster,运行1个 nginx Pod

单击Scale列下的“-”(减号图标),可以减少httpd Pod。我们很快就看到Pod数量减少了。 







若想要扩展pod,请单击Scale列下的“+”(加号图标)。完成后,您可以立即看到Pod正在被创建,以及ReplicaSet正在扩展事件。使用Pod的右侧菜单尝试删除其中一个pod,留意观察ReplicaSet如何重新创建它,以匹配所需的状态。 









如此一来,第一个集群的httpd Pod数从5个变到了2个,第二个集群的nginx Pod从1个变到了7个。现在,第二个集群看起来几乎耗尽了资源。





通过Rancher,我们还可以通过添加额外的节点来扩展集群。下面尝试这样做一下,让我们将节点数编辑为5。 





虽然是Rancher向我们展示了“协调集群”,但其实是Kubernetes在幕后升级了集群主服务器并调整节点池的大小。





稍等一下,最终你应该看到5个节点启动并运行。 





让我们检查一下Global选项卡,这样我们就可以对Rancher正在管理的所有集群有一个全局的了解。 





现在我们可以添加更多Pod(如果我们想的话),因为现在我们有新的可用资源了。下面试着把pod数变为13。





最重要的是,所有这些操作都是在没有停机的情况下完成的。在向上或向下扩展Pod或调整集群大小时,为httpd / nginx部署命中公有IP,HTTP响应状态代码始终为200。 







总    结



让我们回顾一下本文中的扩展Kubernetes集群的过程:

  • 我们使用Rancher创建了两个集群

  • 我们部署了含有1个 nginx  Pod和5个httpd  Pod的工作负载

  • 对这两个部署进行扩容和缩容

  • 调整了集群的大小

所有这些操作,都是通过在Rancher友好且直观的UI上,通过一些简单点击而完成的。当然,您也可以完全使用API完成这些操作。

在任何一种情况下,您都有一个中心点,您可以从中管理所有Kubernetes集群,观察其状态或根据需要扩展部署。如果您正在寻找一种工具来帮助您在混合/多云、多区域集群中进行基础架构管理和容器编排,那么开源的Rancher Kubernetes平台可能非常适合您。


拓展阅读

深挖Kubernetes存储为何如此难及其解决方案

Kubernetes网络全解:机制、方法、实操的超强指南

Rancher全新开源力作Submariner:实现Kubernetes跨集群网络




“ 


Rancher Labs由硅谷云计算泰斗、CloudStack之父梁胜创建,致力于打造创新的开源软件,帮助企业在生产环境中运行容器与Kubernetes。旗舰产品Rancher是一个开源的企业级Kubernetes平台,是业界首个且唯一可以管理所有云上、所有发行版、所有Kubernetes集群的平台。解决了生产环境中企业用户可能面临的基础设施不同的困境,改善Kubernetes原生UI易用性不佳以及学习曲线陡峭的问题,是企业落地Kubernetes的不二之选。

Rancher在全球拥有超过一亿的下载量,超过20000家企业客户。全球知名企业如中国人寿、华为、中国平安、民生银行、兴业银行、上汽集团、海尔、米其林、天合光能、丰田、本田、霍尼韦尔、金风科技、普华永道、海南航空、厦门航空、恒大人寿、中国太平、巴黎银行、美国银行、HSCIS恒生指数、中国水利、暴雪、CCTV等均是Rancher的付费客户。







本站仅按申请收录文章,版权归原作者所有
如若侵权,请联系本站删除
Measure
Measure
Related Notes
Get a free MyMarkup account to save this article and view it later on any device.
Create account

End User License Agreement

Summary | 11 Annotations
网站的流量会面临突然的增长,这时企业该如何应对
2020/07/13 10:42
混合云模式
2020/07/13 10:43
多个公有云
2020/07/13 10:43
微服务部署架构
2020/07/13 10:44
管理和编排节点集群中的容器化应用程序
2020/07/13 10:44
无法帮助您轻松地跨云提供商管理和扩展它们
2020/07/13 10:44
worker machine
2020/07/13 10:45
难以管理多个云、多个集群,设置用户,设置策略
2020/07/13 10:45
安装和配置的复杂性
2020/07/13 10:45
不同环境的用户或团队会有不同体验
2020/07/13 10:45
访问控制和用户管理
2020/07/13 10:45