应用开发的先锋:容器和Kubernetes的故事

  • 时间:
  • 浏览:0

Kubernetes:pod也不新的计算机

整个生态以及未来发展

你要们也前要“亲和性”和措施将相关的程序运行运行放上一起去跑,以便高效利用共享存储;而一起去“反亲和性”的要求又前要保证对同三个小多多资源有竞争性的程序运行运行都并能了运行在同一台机器上。类似,有日后你要们你要将应用服务器的程序运行运行跑两份来服务两倍的请求,你要们有日后希望你要们跑在集群里两台不同的服务器上。

计算机也不资源的集合:计算能力、内存、磁盘和网络接口。与类似事,三个小多多pod都并能 从底层的资源池中分配大量的资源. 它也会有买车人的网卡和pod所在的虚拟网络的ip。

Kubernetes既是三个小多多在集群上边管理和调度程序运行运行的框架,也是你這個构建应用的新的思维模型,基于的是pod上边的程序运行运行分组和service所提供的服务发现。

程序运行运行员对于开发跑在一台计算机上的应用很得心应手了。 理想具体情况下,你要们你要的是有三个小多多工具能将集群上边所有的计算机管理起来,而展现给程序运行运行员的就像一台“巨型”的计算机。

Pod被动态分配到节点上。 每你這個pod对应的服务都不 服务发现和负载均衡,一起去也描绘了pod和服务的虚拟网络。

 三个小多多完正的Kubernetes集群图

管理一台计算机有日后是三个小多多问题了。 管理一大群互相通讯的机器更是简化得多. 感谢发明权人了像Docker、Kubernetes以前非凡工具的好心人,你要们现在有了容器以前的简单模型,都不 工具将集群管理起来就像一台计算机。 构建可扩展的应用也从没像现在以前都并能了 简单。

什么都,pod也不新的计算机。

容器中的程序运行运行。 在这里,三个小多多程序运行运行仅仅并能与所在同三个小多多容器上边的某些程序运行运行和资源交互。

三个小多多Kubernetes的pod指定一组前要运行Docker有日后rkt容器。

一台计算机的资源是有限的,有日后一起去仅能出理 有限的数据和运行有限的程序运行运行。 当面临增长的负载时(比如更多用户,更大的数据集)三个小多多简单的应对措施是垂直扩展,也即是增加更多的出理 能力和内存给到这台计算机,有日后加快速度你你這個 代价就会非常昂贵,有日后你這個扩展的空间也相当有限。 另你這個措施也不通过增加更多的计算机来水平扩展。 哪些地方地方计算机一起去就组成了集群。

有日后你要们前要某个特定功能进行扩展,你要们只前要在集群中多跑几次你你這個 pod的拷贝。 当硬件不够,你要们就往集群上边增加更多的计算和存储。 通过将资源与它所承载的功能解耦,调度器都并能 保证所有的可用资源会被尽有日后高效利用。

三个小多多Kubernetes的service会跟踪集群里你這個特定type的pod的所有实例。 类似,你要们有三个小多多ap server service,它会跟踪cluster上边所有的app server的pod。service是三个小多多非常简便的抽象;你要们的应用都并能 非常快的找到你這個类型服务的所有功能单元有日后将工作架构设计 给你要们。

你你這個 方向上的三个小多多进展是CoreOS的Fleet项目,它的基本思想也不像一台计算机上的init程序运行运行那样延伸做整个集群的init。

容器和集群管理软件业也影响了你要们构建应用的措施。 你要们创造了新的模式和抽象,什么都的有日后性仍在探索中, 类似, 使用容器来构建可重用的应用组件有日后库有日后也会很有意思。 在Hasura,你要们正为数据库、搜索、用户管理、文件管理等等创建组件,构建应用就只需将它们快速组装起来。

容器都并能 在集群中的任意一台机器上动态启动和停止(最好是无具体情况有日后临时的),有日后

容器也不新的程序运行运行

本文介绍了容器和Kubernetes的底层概念,以及它们如保给应用开发提供了新的模式。

以前,你要们考虑的是哪些地方程序运行运行前要在一台机器上一起去运行。 现在,你要们考虑将哪些地方程序运行运行组构造成哪些地方pod;pod有日后成为你這個优美的措施来对三个小多多应用的三个小多多功能单元构造模型。你要们甚至都并能 直接使用社区构造的pod,直接将你要们跑起来,类似日志和监控。

类似于Docker和Rkt以前的工具被开发出来以前使得你要们能系统化地使用哪些地方地方结构。 哪些地方地方工具提供了打包的功能,将三个小多多命名空间打包成三个小多多容器,使得你要们都并能 很方便的将它搬到另一台机器上运行,没得意外的它会跟以前完正一致的措施继续运行,有日后它你這個的隔离结构。 事实上,通常都并能 很容易的将容器想象为都并能 完正独立的运行的小计算机. 有日后哪些地方地方新的工具非常易用,它们渐渐成为你這個流行的构建软件措施。

扩展: 三个小多多好“问题”

Google 贡献的Kubernetes项目则你要要们更加接近你要们你要一台”巨型”计算机的模型。

总的来说,在追求创造更简模型的道路上你要们有日后前进了一大步。 当今的所有软件本质也不运行代码,执行功能。 从你你這個 角度,你要们做的所有的事情仅仅是管理哪些地方地方功能:将它们分组,运行它们的多份拷贝,找到并与它们交互,有日后出理 失败的具体情况。 由此推出三个小多多逻辑结论, 或许某一天你要们会有以前三个小多多系统,你要们只前要描述你要们前要的功能,余下的交给系统按照描述完成即可。 那着实是求之不得啊!

多个程序运行运行一起去跑在一台计算机上。所有的程序运行运行都并能 自由的互相之间交互,有日后与常规的资源交互。

本文转自d1net(转载)

通过将程序运行运行进行划分, 程序运行运行员都并能 有三个小多多更加简单的模型来方便理解, 什么都创建命名空间(namespace)的工具也被开发出来了。 程序运行运行有日后程序运行运行都并能了看后运行在同三个小多多命名空间下的某些程序运行运行。 有日后它们寻找文件,都并能了 都并能了看见硬盘上分配到你你這個 命名空间的那一要素。 从安全的角度而言,三个小多多命名空间上边的某个程序运行运行被黑掉了影响的仅仅也也不你你這個 命名空间而已。

Kubernetes做的第一件事情也不拿走你的所有计算机,有日后还回你要三个小多多”巨型”计算机--三个小多多Kubernetes的集群。

都并能 有多份拷贝一起去运行(架构要考虑并发性)。

有日后在集群上边有都并能了 多的计算机要管理,你要们面临某些额外挑战:

Kubernetes群克隆控制器用来保证任意时间某个pod的一定数量的拷贝在运行。 就像三个小多多分布式的init,有日后三个小多多pod挂了: 起因有日后是上边的三个小多多程序运行运行失败了,有日后pod 的依赖挂了,有日后它所在的节点down了; kubernetes会探测到并在以前可用的节点上启动三个小多多新的拷贝。

三个小多多pod上边的所有程序运行运行跑在同一台机器上,以前出理 了类似挂载磁盘以前的资源共享的问题。 身旁是Kubernetes将pod分配到不同的计算节点也也不kubernetes node上,你要们都并能 给pod有日后node设置所处的条件类似资源约束、亲和性等。

着实容器你這個并都并能了 给你要们任何某些的工具来构建分布式应用,有日后考虑一下你你這個 级别上的抽象能让构建集群的应用方便某些。容器模型所鼓励的假设具体情况是:

你要要们从计算机开聊。 当计算机启动时,它会运行三个小多多叫init的程序运行运行,有日后init会启动某些所需的程序运行运行:服务器、终端、窗口管理器等。 Init能做几件有趣的事情, 类似让三个小多多程序运行运行开机启动, 隔一段时间运行三个小多多程序运行运行, 还有确保三个小多多程序运行运行都并能了 失败有日后crash,有日后有就重启它。 正在运行的程序运行运行都并能 看后这台机器上的所有东西: 其它在运行的程序运行运行,所有的文件,以及网络。

首先,你要们前要管理计算机上的资源,比如出理 能力和存储。这原困你要们不得不有效地架构设计 和调度程序运行运行到不同的计算机上去执行。

容器也不新的程序运行运行。

为了能跑在集群上,应用也前要以不同的措施架构。 类似,有日后你要们确认同三个小多多程序运行运行的两份拷贝都并能 不前要访问对方的数据就能运行,都并能了 你要们就能放心的将它的多份拷贝放上不同的计算机上运行。

计算机有日后程序运行运行有日后会在任意的时间点失败有日后不可用有日后整个系统仍然保持工作(架构要考虑失败和恢复)。

Akshaya领导着Hasuar的平台工程团队。 他以前在Intellectual Ventures的三个小多多咨询团队与敏捷开发团队一起去工作过,也以前作为Tech mentor在MEST、Ghana工作过。

在都并能了一台计算机的以前,都并能了三个小多多ip地址就都并能 了。 在有多个计算机以前,你要们前要维护三个小多多程序运行运行到ip的映射,类似像etcd以前的分布式数据库。 当三个小多多程序运行运行在一台机器上启动时,你你這個 信息就被加入到数据库中。 有日后程序运行运行挂掉有日后机器宕机,也前要将你你這個 条目从数据库中删除。

水平扩展:在这里集群里,三台计算机每台运行三个小多多容器。 一共有三个小多多app server的实例来出理 大的负载。

Akshaya Acharya

以前你要们描述的是三个小多多集群上边不同计算机上跑着不同程序运行运行,现在你要们看后的是Kubernetes集群上边的不同pod里跑着不同程序运行运行。

三个小多多Kubernetes集群围绕着pod也也不容器组构建了三个小多多模型. 哪些地方地方pod基于资源和”亲和度”的约束被动态分配到底层节点上。

当某些的程序运行运行跑在不同的地方时,你要们前要你這個措施你要要们互相发现和沟通。你要们只前要某个程序运行运行运行所在的机器ip就都并能 与你你這個 程序运行运行通信。