菜单图标

Kubernetes

Kubernetes是一个开源容器编排平台,可自动化应用程序的部署,管理和缩放。了解Kubernetes如何实现经济高效的云原生开发。

什么是kubernetes?

Kubernetes. - 也称为“K8S”或“Kube” - 是一个容器编排平台,用于调度和自动化集装箱应用程序的部署,管理和缩放。

Kubernetes.首次由Google的工程师开发,然后于2014年开放。它是Borg的后代,一个在谷歌内部使用的集装工理平台。 Kubernetes是希腊人 舵手 或者 飞行员 ,因此掌舵 Kubernetes.标志 (链接驻留在IBM之外)。

如今,Kubernetes和更广泛的集装箱生态系统正在成熟到竞争对手的通用计算平台和生态系统中 - 如果没有超越 - 虚拟机(VM)作为现代云基础架构和应用的基本构建块。此生态系统使组织能够提供高生产率 平台 - AS-AS-Service(PAAS) 解决了多个基础设施相关的和与运营相关的任务和周围问题 云天然 发展使开发团队可以完全关注编码和创新。     

在下面的视频中,Sai Vennam提供了Kubernetes基础知识的解释(10:59):

什么是容器?

让我们从一个定义开始:一个容器是一个可执行单元的软件,其中应用程序代码与库和依赖关系一起打包 - 以常见的方式,使其可以在桌面上的任何位置,传统的IT或云运行。

容器利用操作系统(OS)的形式 虚拟化 允许多个应用程序通过隔离进程和控制CPU,内存和磁盘的数量来共享操作系统,这些进程可以访问这些进程。

容器与虚拟机与传统基础架构

理解容器作为IT基础架构自动化和抽象连续之内的最新点可能更容易或更有助于。

在传统的基础架构中,应用程序在物理服务器上运行并抓住他们可以获得的所有资源。这使您可以选择在单个服务器上运行多个应用程序,并希望一个人不会以牺牲其他服务器耗费资源,或者每个应用程序专用一个服务器,这些应用程序浪费资源并不会缩放。

虚拟机(VM)是从实际计算机硬件抽象的服务器,使您可以在一个物理服务器上运行多个VM或跨越多个物理服务器的单个VM。每个VM都运行其自己的操作系统实例,您可以在自己的VM中隔离每个应用程序,从而减少在同一底层物理硬件上运行的应用程序的可能性相互影响。 VMS更好地利用资源,比传统的基础设施更容易和更具成本效益。而且,它们是一次性 - 当您不再需要运行应用程序时,即可取下VM。

有关VM的详细信息,请参阅“虚拟机:基本指南 。“

容器将此抽象取得更高的级别 - 具体而言,除了共享底层虚拟化硬件之外,它们还共享一个底层虚拟化的OS内核。容器提供相同的隔离,可扩展性和VMS的可处理性,但由于它们不会携带自己的操作系统实例的有效载荷,它们的重量较轻(即,它们占用的空间较少)比VMS更轻。它们更富有资源效率 - 他们让您在更少的机器(虚拟和物理)上运行更多的应用程序,操作系统实例更少。容器更轻松地跨桌面,数据中心和云环境进行便携。他们非常适合敏捷和 德沃斯 发展实践。

"容器:一个基本指南“提供了对容器和集装箱化的完整解释。和博客文章”容器与VMS:有什么区别?“给出完全差异的差异。

什么是码头?

Docker. 是用于创建和运行Linux®容器的最流行的工具。虽然几十年前推出了早期形式的容器(具有FreeBSD监狱和AIX工作负载分区等技术,但在码头将它们带到群众时,集装箱在2013年将其带到群众,并具有新的开发人员友好和云友好的实施。

Docker. 始于一个开源项目,但今天它还指的是生产Docker的Docker Inc. - 一种商业集装箱工具包,它在开源项目上建立(并贡献回到开源社区的改进)。

Docker. 建于传统的Linux容器(LXC)技术,但实现了Linux内核进程的更粒度虚拟化,并添加了功能,使开发人员更容易构建,部署,管理和安全。

虽然今天存在替代集装箱平台(例如打开容器主动(OCI),CoreO和Coronical(Ubuntu)LXD),但Docker是如此广泛的优选,它与容器几乎是同义词,有时被误认为是互补技术,如互联网Kubernetes(参见视频“Kubernetes vs,Docker:它不是下面进一步的/或疑问)。

与kubernetes的容器编排

由于集装箱增殖 - 今天,组织可能有数百或数千美元 - 需要安排和自动化集装箱部署所需的操作团队, 联网,可伸缩性和可用性。因此,集装箱编排市场出生。

虽然其他容器编排方案 - 最值得注意的是,obacher mesos - 早期获得了一些牵引力,Kubernetes迅速成为最广泛的采纳(实际上,在一点,它是开源软件历史上增长最快的项目) 。

开发人员选择(并继续选择)Kubernetes以其宽度的功能,其庞大和不断增长的开源生态系统,以及跨领先的云提供商的支持和可移植性(现在的一些人提供完全管理的Kubernetes服务)。

有关容器编排的更多信息,请参阅“解释的”视频“Container Orchestration”(08:59):

Kubernetes.做了什么?

Kubernetes.计划和自动化这些和其他与容器相关的任务:

  • 部署: 将指定数量的容器部署到指定的主机,并使它们以所需状态运行。
  • 卷展栏: 卷展栏是一种部署的变化。 Kubernetes允许您启动,暂停,恢复或回滚卷展栏。
  • 服务发现: Kubernetes.可以自动将容器暴露在互联网上或使用A的其他容器 DNS名称 或者 IP address.
  • 存储配置: 将Kubernetes设置为根据需要将持久本地或云存储安装在内。
  • 负载平衡和缩放: 当流量到集装箱尖峰时,Kubernetes可以雇用 负载均衡 并缩放以在网络上分发它以保持稳定性。
  • 自我修复 高可用性: 当容器失败时,Kubernetes可以重新启动或自动替换;它还可以取消符合您的健康检查要求的容器。

Kubernetes. vs. docker.

如果你读到了这一点,你已经明白了 Kubernetes.是Docker Swarm的替代方案 , 它是 不是 (违反持续流行的误解)码头本身的替代或竞争对手。

事实上,如果您热情地采用Docker并正在创建基于大规模的基于Docker的容器部署,Kubernetes Orchestration是管理这些工作负载的逻辑下一步。要了解更多信息,请观看“Kubernetes vs. docker.:它不是一个/或问题”(08:03):

Kubernetes.架构

Kubernetes.架构的主要组件包括以下内容:

集群和节点(计算)

簇生 是Kubernetes架构的构建块。群集是由 节点 ,每个表示单个计算主机(虚拟或物理机器)。

每个集群由多个组成 工人节点 部署,运行和管理 集装箱 应用程序和一体 主节点 该控件并监视工作者节点。

主节点运行调度程序服务,该计划是根据开发人员设置部署要求和可用的计算容量部署的何时何地和位置。每个工人节点都包括用于管理容器的工具 - 例如Docker - 以及一个名为a的软件代理 kubelet. 从主节点接收并执行订单。

对于Kubernetes集群的更深潜水,请查看此博客文章:“Kubernetes.集群:快速,受控云应用交付的架构 。“

豆荚和部署(软件)

豆荚 是共享相同计算资源和同一网络的容器组。它们也是Kubernetes中可扩展性的单位:如果POD中的容器比可以处理更多的流量,Kubernetes将将POD复制到群集中的其他节点。出于这个原因,保持豆荚紧凑的良好做法,使它们仅包含必须共享资源的容器。

部署 控制集装箱应用程序的创建和状态并保持运行。它指定群集在群集中运行的副本的副本。如果POD失败,部署将创建一个新的。

有关Kubernetes部署的更多信息,请手表“Kubernetes部署:快速开始”(03:54):

更详细地了解Kubernetes架构的元素,请尝试此自定节定的在线课程:“Kubernetes. 101. “。

您也可以使用博客文章更深入潜水“Kubernetes.架构:用于集装箱解决方案的四种方法 。“

ISTIO服务网格

Kubernetes.可以部署和缩放吊舱,但它无法在它们之间进行管理或自动化路由,并且不提供用于监视,安全或调试这些连接的任何工具。随着集群中的容器的数量而增加,它们之间的可能连接路径的数量呈指数升级(例如,两个容器具有两个潜在的连接,但是10个POD具有90),创建了潜在的配置和管理噩梦。

输入ISTIO,一个开源 服务网格 Kubernetes.集群的层。对于每个Kubernetes集群,Istio添加了一个 旁章 容器 - 程序员和管理员基本上不可见 - 配置,监视器和管理其他容器之间的交互。

使用ISTIO,您可以设置一个配置容器之间的连接的策略,以便您不必单独配置每个连接。这使得容器之间的连接更易于调试。

ISTIO还提供了一个仪表板,Devops团队和管理员可以用于监视容器之间连接的延迟,运行时间错误和其他特征。并且,它在安全性中构建 - 特别是,保留未经授权的用户欺骗容器之间的服务调用的身份管理 - 以及安全专业人员可以用于监视群集的身份验证,授权和审核(AAA)功能。

看文章“什么是istio?“有关更多详细信息,包括视频和使用ISTIO的一些示例。

编织和无服务器计算

Knative(发音'Kay-Native')是一个开源平台,位于Kubernetes的顶部,为云本机开发提供了两个重要的好处:

Knative为无服务器计算提供了一个简单的ondamp

无服务器计算 是一种相对较新的方式部署代码,使云本机应用程序更高效和成本效益。而不是在等待请求时部署闲置的持续的代码实例,而是根据需要将代码缩放 - 随着需求波动,然后在不使用时缩小代码。无操作系统可防止浪费计算能力和功率,并降低成本,因为您只需在其实际运行时运行代码即可。

ReNave使开发人员能够构建一个容器一次并将其运行为软件服务 或者 作为无服务器功能。它对开发人员来说都是透明的:Knative处理背景中的细节,开发人员可以专注于代码。

JAVED简化了集装箱开发和管弦乐

对于开发人员来说,集装箱代码需要大量的重复步骤,并编排容器需要大量的配置和脚本(例如生成配置文件,安装依赖项,管理日志和跟踪以及编写 持续集成/连续部署 (CI/CD) scripts.)

编织通过三个组件自动化使这些任务更容易:

  • 建造: JANVEN的构建组件会自动将源代码转换为云本机容器或功能。具体来说,它从存储库中取出代码,安装所需的依赖项,构建容器映像,并将其放入用于其他开发人员的容器注册表中。开发人员需要指定这些组件的位置,所以编织可以找到它们,但一旦完成,编织自动化构建。
  • 服务: 服务组件运行容器作为可扩展服务;它可以扩展到 成千上万 集装箱实例或缩小到无(称为 缩放到零)。此外,服务有两个非常有用的功能:
    • 配置,保存容器版本(调用 快照)每次将容器推到生产并允许您同时运行这些版本。
    • 服务 路由 ,这允许您对这些版本指定不同的流量。您可以将这些功能一起使用,逐渐阶段阶段阶段,或者在将集装箱应用程序中逐步进行阶段,然后进入全球生产。
  • 事件: 事件使指定的事件能够触发基于容器的服务或功能。这对于针对创新的无服务能力尤为一体;某些东西需要告诉系统在需要时会出现功能。事件允许团队表达对事件类型的兴趣,然后它会自动连接到事件生成器并将事件路由到容器,从而消除了对这些连接进行编程的需要。

通过阅读,您可以了解有关JRENATIVE的更多信息“编织:一个基本指南 。“

为企业的开源PaaS的OPS引擎

企业开源PAAS的OPS引擎。 Kubernetes,Istio和JREN是一个完整的开源,MultiCloud平台的一部分,作为使用相同的开发和管理工具的构建和运行容器,应用和无服务环境的服务(PAAS)。

Kubernetes. Github提交和更多的兴起的证据

Kubernetes.是历史上增长最快的开源项目之一,而且增长正在加速。通过开发商和雇用他们的公司的采用继续飙升。值得注意的一些数据点:

  • 在这篇文章中,已经向超过86,200个提交 GitHub上的Kubernetes存储库 (链接驻留在IBM之外) - 在过去的四个月内包括近6000个提交 - 该项目有超过2,300名有效贡献者。根据这一点 云本机计算基础 (链接驻留在IBM之外),所有与Kubernetes相关的存储库(包括Kubernetes仪表板和Kubernetes Minikube)有超过148,000个提交。
  • 超过1,500家公司在其生产软件堆栈中使用Kubernetes。这些包括世界知名企业,如Airbnb,Bose,Capitalone,Intuit,Nordstrom,Philips,Reddit,Slack,Spotify,Cinder,以及当然IBM。 阅读这些和其他采用案例研究 (链接驻留在IBM之外)
  • 2019年7月调查引用 集装箱杂志 (链接驻留在IBM之外)发现前六个月内通过Kubernetes采用51%。
  • 超过12,000人参加了 Kubecon + Cloudnative Con North America 2019 (链接驻留在IBM之外)会议,从上一年的记录设定出勤率超过3,000。
  • 根据 ziprecruiter. (链接驻留在IBM之外),Kubernetes相关工作的平均年薪(北美)是144,628美元。在这篇文章中,目前列出了超过21,000个与Kubernetes相关的职位 linkedin (链接驻留在IBM之外)。

Kubernetes.教程

如果您已准备好开始使用Kubernetes或者希望使用Kubernetes和Kubernetes生态系统工具构建您的技能,请尝试其中一个教程:

Kubernetes.和IBM云

托管容器编排解决方案, IBMCloud®Kubernetes服务 在计算主机集群中自动部署,操作,缩放和监视集装箱化应用程序,同时在特定于IBM的功能中添加。它可以快速地传递应用程序,可以绑定到高级服务 区块链IBMWatson®..

概述了管理的Kubernetes服务如何帮助您在云之旅中,观看我们的视频,“托管Kubernetes的优势”(03:14):

IBM云上的RedHat®OpenShift® 是一个全面的服务,在IBM云平台上提供完全管理的OpenShift集群。 (OpenShift是在Red Hat Enterprise Linux上运行的企业Kubernetes平台。)

阅读更多关于新的OpenShift Forrester Wave:Multi机箱集装箱开发平台报告(PDF,415 KB)。

要开始,请注册IBMID和 创建IBM云帐户.