Kubernetes:过去、现在与未来

简介: 本文讲的是Kubernetes:过去、现在与未来【编者的话】本文讨论了Kubernetes的过去、现在和将来,包括了Kubernetes的优点和缺点等等。
本文讲的是Kubernetes:过去、现在与未来【编者的话】本文讨论了Kubernetes的过去、现在和将来,包括了Kubernetes的优点和缺点等等。

有些人将自动化、云计算和人工智能称为第四次工业革命。IT行业中自动化的日渐兴起也就不足为奇,尤其是在应用程序部署与管理方面(我保证这绝不是吹嘘)。几年前,Google宣布启动一个名为Kubernetes的项目,即大家所熟知的K8s。Kubernetes是一个开源的容器集群管理器,其目标是成为容器应用程序自主部署与扩展平台。

Kubernetes简史

Kubernetes出自希腊语“helmsman”,由Google于2014年公布。它由Joe Beda、Brendan Burns及Craig McLuckie创建。Kubernetes v1.0于2015年7月21日正式发布,并立即作为云原生计算基金会(Cloud Native Computing Foundation)的一部分捐赠给了Linux基金会。

容器的兴起

在说明Kubernetes的兴起之前,很重要的一点是要理解如果没有容器,Kubernetes将不复存在。从高层次看,容器与虚拟机类似,不过一个主要差异在于:容器与其他容器共享宿主机的内核。之所以说它是主要差异因素,是因为容器共享物理主机的操作系统,这使得它们易于迁移。同时,一台宿主机能容纳的容器比虚拟机多得多,因为它们共享了内核、库文件及二进制文件。举个例子,一个虚拟机可能会占用20GB,而一个运行相同应用程序的容器可能只占用200MB。

容器(不论是Docker或是CoreOS的rkt)让开发人员可以无缝地专注于运行时的应用程序。敏捷应用程序开发过程中碰到凌乱的基础设施问题的日子一去不复返。使用容器,开发人员只需要考虑如何正确地扩展、部署及管理新写的应用程序即可。不过,现有的容器方案自身还不能进行跨多节点环境的容器管理、调度和部署。

Kubernetes应运而生

Kubernetes在容器环境中是作为该环境的管理与部署引擎而存在的。使用最基本的Kubernetes就可以在物理硬件或虚拟机上调度和运行应用程序。Kubernetes的更高级用法让开发人员得以从以宿主机为中心的世界中脱身,进入一个以容器为中心的环境。

Kubernetes的工作原理

Kubernetes的入门很简单。有一个REST API用于操作Kubernetes内部的主要组件。虽然Kubernetes被称为一个平台,但它具有多个组件服务于自身特有的角色。 Master 是Kubernetes集群的控制服务(它也被称之为控制平面)。Master非常重要,因为对那些与它交互的组件来说它起着API调用的作用。它位于主服务器内,这是集群单元规则生效及调度服务存在的所在。

Kubernetes工作单元

kubernetes-architecture.png

在主服务器之下是Kubernetes工作单元,它们定义了相关实体编程所要实现的指定工作。虽然最终目标是交付一个应用程序,这些单元还是拥有更具体的功能。

Pod :最基本的单元是一个pod,在分配容器时,它实际上并不会被分配到物理硬件上,而是被分配到一个pod上。Pod通常包含了基础容器或提供单一应用程序的容器。这意味着一个pod里的所有容器可以共享数据卷和IP空间,从而作为一个单一应用程序进行扩展。

服务 :一旦开始构建一个更加强健的容器化策略,“服务”的概念就变得很重要。服务作为资源均衡器,可在容器之间做切换。后端容器可通过一个单一的、稳定的入口与前端应用程序通信。这项功能为用户提供了易用性和可扩展性。

复制控制器(Replication Controller,简称RC) :这些单元的任务是确保在任何时间点都有指定数量的容器启动及运行。假如出现内核错误,一个容器(或一组容器)崩溃,RC会负责启动一个复制的pod,直到原pod重新启动上线。一旦原pod再次启动并运行,RC将杀掉复制的pod。

标签 :尽管标签不是一个真正的工作单元,但对组织而言却至关重要。标签用作组的名称,让用户可以设定一个单元组作为目标或进行操作。让你可以组织你的容器环境。

在最基本的层面上,这些就是组成Kubernetes平台的实体。

虚拟化类比

想想如今大家熟知的一项技术,让我们从虚拟化的视角来说明Kubernetes。Kubernetes里的Master类似于VMware里的vCenter。Master知晓集群的节点以及节点的容量。此外,Master调度和放置Pod与vCenter将虚拟机部署到vSphere宿主机相类似。Pod的作用与vApp非常相近,它们都是将多个容器放置在一个扁平化的网络里。容器与VM类似,除非被赋予了网络中定义的路径,它们相互之间是独立的。最后,复制控制器与HA类似,RC会持续对环境轮询以确保正确数量的pod处于运行状态,如果数量短缺,它将调度一个新的实例。

Kubernetes的优点

Kubernetes并不是市面上唯一的容器管理平台(其他如Docker Swarm或Mesos),但它是行业首选。为何会这样?从一个高层次角度看,Kubernetes吸引人的一点是它提供了一个平台,实现容器化应用程序的一次编写并在各类型云基础设施上运行。它将公有云与私有云之间存在的复杂的基础设施差异抽象化掉了。并且,Kubernetes下一步将允许开发人员运行任何他们觉得适合在Kubernetes运行的应用程序。Box的合伙人Sam Ghods相信只要一个二进制文件可以运行,那它就能在Kubernetes里运行。

使用Kubernetes,开发人员可以快速地部署应用程序而无须面对传统平台所具有的风险(想象一下跨多操作系统环境的横向扩展)、动态地扩展应用程序以及更佳的资源分配。

硬件使用率的下降也是企业推动Kubernetes的另外一个原因。有些公司报告说,由于容器的轻量特性以及(相比传统架构)更快速杀掉未使用的实体,对硬件的需求降低了40-50%。EBay是Kubernetes著名的支持者及用户,它声称在转换到该平台后服务器的开销支出急剧减少。

最后,Kubernetes的一个最大的优势是它面向的是社区而不是一个技术规范,这让它的功能更加强大。Google将其作为一个开源项目发布,获得超过1千个社区贡献者及3万4千个提交的支持。其社区比Mesos(第二大的竞争社区)要大5倍,比所有竞争社区加起来还大。

Kubernetes的缺点

Kubernetes赢得了行业的广泛赞誉,不过也存在一些显著的缺点。当涉及初始部署时(扩展时),据说要进行正确地设置会很复杂和困难。它需要一个具有特定技能组的工程师,而这在如今的工程行业很难找到。

另外,Kubernetes是容器的第三方管理系统。容器技术自身存在的缺点和痛苦的成长经历对Kubernetes能提供的服务也存在影响。

Kubernetes缺少的一个领域是调度器。Kubernetes默认的规化器依赖于应用程序属主提供的资源分配需求,而无视实时的消耗。这一做法将在每个节点上产生资源碎片。

最后,容器内允许运行的负载范围将限制Kubernetes的普及,不过这是一个Kubernetes无法直接解决的问题。举个例子,很多工程师对在容器中运行“关键性任务”负载会比较犹豫,一是因为其崩溃的倾向,二是因为容器设计之初就不打算用于存储数据。一个通常做法是只在容器中运行那些崩溃时不会造成停机时间的应用程序。

即便存在这些缺点,也不妨碍像高盛、Box、SAP及纽约时报这类公司将该平台列为下一代数据中心计划的一部分。

Kubernetes的未来

应用程序已经成为当今多数企业不可或缺的部分。所有公司对更快的部署及高质量的应用程序提出了更高的要求。这些要求也是开发人员涌向容器的原因。随着容器的爆发,若要说Kubernetes对其市场定位不佳的话那是不明智的。这个平台具有很大的潜力,但上了规模就变得难以管理。Kubernetes初始设置与其在生产环境中大规模运行之间存在着巨大的鸿沟。未来几年,在管理这些部署和负载方面,它将面临第三方强有力的竞争。对Kubernetes而言,不要迷失在过去成就它的因素之中将显得格外重要。如果其社区能正确地扩展该平台,Kubernetes的未来一片文明。

原文链接:Kubernetes: Its Past, Present & Future(翻译:梁晓勇

原文发布时间为:2017-01-13

本文作者:梁晓勇

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:Kubernetes:过去、现在与未来

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
机器学习/深度学习 移动开发 编解码
RepVGG(一)论文解析
RepVGG(一)论文解析
588 0
|
机器学习/深度学习 人工智能 自然语言处理
深入探索智能问答:从检索到生成的技术之旅
深入探索智能问答:从检索到生成的技术之旅
742 0
|
11月前
|
云安全 存储 数据采集
带你读《阿里云安全白皮书》(二)—— 数智化趋势下的安全挑战
本文探讨了数智化发展带来的安全隐患与挑战,强调信息系统安全性对经济社会稳定的重要性。涉及政府管理、金融服务、关键基础设施等领域,指出数据安全问题日益突出,需加强数据治理和安全防护,确保数字经济的健康发展。点击链接下载完整版《阿里云安全白皮书(2024版)》。
|
7月前
|
人工智能 Cloud Native 安全
销售易与纷享销客:中国CRM市场的未来格局分析
中国企业级SaaS市场近期因腾讯“接手”销售易而备受关注。销售易定位为“营销服一体化客户经营平台”,强调全场景覆盖和技术深度应用,与腾讯云深度融合;纷享销客则聚焦“移动社交化CRM”,注重销售过程管理。销售易凭借与腾讯的战略合作,在技术、市场和AI能力上占据优势,有望成为中国CRM市场的领导者。纷享销客面临资源劣势和生态孤岛挑战,需寻求战略转型。未来,中国CRM市场将呈现生态化趋势,科技巨头与专业SaaS厂商的合作模式将成为主流。企业用户应综合考虑产品功能、技术实力及生态整合能力,选择合适的CRM供应商。
|
11月前
|
Go vr&ar 图形学
重塑体验:AR/VR技术在游戏与娱乐行业的创新应用
【10月更文挑战第29天】本文探讨了AR/VR技术如何改变游戏与娱乐行业,介绍了AR和VR的基本概念及其在游戏和娱乐中的应用实例,包括《精灵宝可梦GO》的AR开发和VR视频播放器的实现代码,并展望了未来的发展趋势。
742 2
|
Unix Linux Shell
振南技术干货集:各大平台串口调试软件大赏(3)
振南技术干货集:各大平台串口调试软件大赏(3)
|
Linux Android开发 iOS开发
Windows平台RTSP|RTMP播放器如何实现实时录像功能
Windows平台RTSP、RTMP播放器实时录像接口设计,实际上,除了Windows平台,我们Linux、Android、iOS平台也是一样的设计,单纯的录像模块,如果做的全面,也不是一两个接口可以搞定的
331 1
|
Unix Shell Linux
轻松编写 AIX Shell 脚本
轻松编写 AIX Shell 脚本
239 1
|
Java Python
如何设置代理ip服务器地址
如何设置代理ip服务器地址
470 0
|
新零售 算法 搜索推荐
理解图表示学习中的负采样 | KDD论文解读
本文“Understanding Negative Sampling in Graph Representation Learning”已被KDD 2020录用。
理解图表示学习中的负采样 | KDD论文解读