写点什么

教你如何在混合云环境中扩展 Kubernetes

  • 2020-04-23
  • 本文字数:2728 字

    阅读完需:约 9 分钟

教你如何在混合云环境中扩展Kubernetes

引言

假设您的业务是在线的:您拥有自己的数据中心,拥有用于运行您网站的私有云。您需要部署许多服务器来运行应用程序并存储其数据。


也许大多数时候,您的网站的整体流量非常稳定。但也许也有时候,网站的流量会面临突然的增长,这时您该如何应对?


首先,您需要能够扩展应用程序,以应对流量增加。若您不想在每年只使用几次的新硬件上额外花钱,您可以考虑转向混合云模式。


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


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


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

跨云扩展的挑战

你已经决定使用云了,所以让我们回过头来思考一下最初的问题。您的应用程序具有针对您的应用程序的微服务部署架构,这一架构上运行着需要扩展的容器。而这,就是 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 平台可能非常适合您。


2020-04-23 17:22839

评论

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

Pinduoduo API丨Pinduoduo commodity details data interface丨Pinduoduo commodity data interface

tbapi

拼多多API接口 pinduoduo API 拼多多商品详情数据接口

NFTScan | 12.11~12.17 NFT 市场热点汇总

NFT Research

NFT NFT\ NFTScan nft工具

制造业进项税额转出全场景数智化管理

用友BIP

突破!金淑杰成功研发中空纤维纳滤膜技术,助力全民健康饮水!

科技热闻

软件测试/测试开发/人工智能丨GraphWalker自动化测试用例生成

测试人

人工智能 软件测试

外贸各个大洲客户的特点

九凌网络

5个免费、跨平台的SQLite数据库可视化工具

不在线第一只蜗牛

sqlite sql 开源 数据可视化

基于Stable Diffusion的智能绘画大模型

百度开发者中心

人工智能 大模型

用友出席操作系统大会,携手麒麟软件深度服务企业数智化

用友BIP

集成开发环境(IDE)的用途?

小魏写代码

腾讯捐赠编译器基础软件,为中国开发者“添了双筷子”

腾讯云大数据

大数据

文心大模型助力企业级NLP模型快速定制

百度开发者中心

人工智能 nlp 文心大模型

前端框架如何帮助开发者构建应用程序?

互联网工科生

软件开发 前端框架 应用开发 JNPF

聊聊kube-scheduler如何完成调度和调整调度权重

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟

软件测试/测试开发/人工智能丨模型通过什么原理帮助业务解决问题

测试人

人工智能 软件测试

社招邀请|阿里云热招岗位简历投递中!

阿里云CloudImagine

云计算

展位火爆!TDengine 受邀参加EDT2023中国能源化工数字科技峰会

TDengine

tdengine 时序数据库

Curve 文件系统为 AI 业务降本增效

OpenCurve

云计算 大数据 AI 分布式 文件存储

Google SEO服务的常见坑人套路

九凌网络

多家公司荣获Autodesk Design & Make大中华区杰出贡献奖

E科讯

交大安泰行研五周年,“第六届中国行业发展高峰论坛”成功举行

科技热闻

Python在人工智能领域的应用案例分析

技术冰糖葫芦

API

变革自然语言处理的新型大模型架构

百度开发者中心

nlp 大模型

软件测试/测试开发/人工智能丨机器学习特征,离散特征和连续特征

测试人

人工智能 软件测试

数云100|神州数码X浙江联通:以算力支撑面向“互联网+”的隐私保护系统,保护用户的隐私数据安全

科技热闻

TDengine 签约中船九院,助力航运业智能化转型升级

TDengine

tdengine 时序数据库 国产时序数据库

4种Python中基于字段的不使用元类的ORM实现方法

华为云开发者联盟

Python 开发 华为云 华为云开发者联盟

大型媒体网站霸占86.1% Google首位排名:普通网站如何突围?

九凌网络

教你如何在混合云环境中扩展Kubernetes_文化 & 方法_Rancher_InfoQ精选文章