您正在查看Kubernetes版德赢是不是大平台本:v1.19的文档

Kubernetes v1.19文德赢是不是大平台件不再积极维护。您当前正在查看的版本是静态快照。对于最新的文档,请参阅德赢是不是大平台最新版本。

Kubernetes是什么?

Kubernetes是一个可移植的、可扩展的、开源的平台,用于管理容器化的工作负载和服务,有助于声明式配置和自动化。它拥有一个庞大的、快速增长的生态系统。Kubernetes的服务、支持和工具广泛可用。

本页是Kubernetes的概述。

Kubernetes是一个可移植的、可扩展的、开源的平台,用于管理容器化的工作负载和服务,有助于声明式配置和自动化。它拥有一个庞大的、快速增长的生态系统。Kubernetes的服务、支持和工具广泛可用。

Kubernetes这个名字来源于希腊语,意思是舵手或领航员。谷歌在2014年开放了Kubernetes项目。Kubernetes结合超过15年的谷歌经验使用来自社区的最佳想法和实践来大规模运行生产工作负载。

回到过去

让我们来看看为什么kubernetes及时kubernetes非常有用。

部署进化

传统部署时代:早期,组织在物理服务器上运行应用程序。没有办法定义物理服务器中的应用程序的资源边界,这导致资源分配问题。例如,如果多个应用程序在物理服务器上运行,则可以存在一个应用程序占用大部分资源的实例,因此,其他应用程序将低于uport。解决方案是在不同的物理服务器上运行每个应用程序。但这并未将资源未充分利用,而且组织维护许多物理服务器昂贵。

虚拟化部署时代:作为解决方案,引入了虚拟化。它允许您在单个物理服务器的CPU上运行多个虚拟机(vm)。虚拟化允许应用程序在虚拟机之间隔离,并提供了一种安全级别,因为一个应用程序的信息不能被另一个应用程序自由访问。

虚拟化允许更好地利用物理服务器中的资源,并允许更好的可扩展性,因为可以轻松地添加或更新应用程序,从而降低硬件成本等等。使用虚拟化,您可以将一组物理资源显示为一次性虚拟机群集。

每个VM都是一个全机运行所有组件,包括其自己的操作系统,在虚拟化硬件的顶部。

容器部署时代:容器类似于VM,但它们具有放宽的隔离属性以在应用程序中共享操作系统(OS)。因此,容器被认为是轻量级的。类似于VM,容器具有自己的文件系统,CPU,内存,流程空间等的共享。由于它们与底层基础设施分离,它们跨越云和OS分布。

容器变得流行,因为它们提供了额外的好处,例如:

  • 敏捷的应用程序创建和部署:与使用VM映像相比,容器映像的创建更加容易,效率更高。
  • 持续开发、集成和部署:提供可靠和频繁的容器映像构建和部署,并提供快速和简单的回滚(由于映像的不变性)。
  • 开发和ops关注的分离:在构建/释放时间而不是部署时间创建应用程序容器图像,从而从基础架构解耦应用程序。
  • 可观察性不仅显示操作系统级别的信息和指标,还显示应用程序运行状况和其他信号。
  • 跨开发、测试和生产的环境一致性:在笔记本电脑上运行与在云中运行相同的环境。
  • 云和操作系统发行版的可移植性:可在Ubuntu、RHEL、CoreOS、本地、主要公共云以及其他任何地方运行。
  • 以应用程序为中心的管理:提高在虚拟硬件上运行操作系统的抽象级别以使用逻辑资源在OS上运行应用程序。
  • 松散耦合,分布式,弹性,解放的微服务:应用程序被丢进到较小,独立的件中,可以动态部署和管理 - 不是一个在一个大型单一的机器上运行的单片堆栈。
  • 资源隔离:可预测的应用程序性能。
  • 资源利用:效率高,密度大。

为什么你需要kubernetes和它可以做的事情

容器是捆绑和运行应用程序的好方法。在生产环境中,您需要管理运行应用程序的容器,并确保没有停机。例如,如果一个容器宕机,则需要启动另一个容器。如果这个行为由系统来处理不是更简单吗?

这就是Kubernetes的救命之道!Kubernetes为您提供了一个可弹性地运行分布式系统的框架。它负责应用程序的扩展和故障转移,提供部署模式等等。例如,Kubernetes可以轻松地为您的系统管理canary部署。

Kubernetes为您提供:

  • 服务发现和负载平衡Kubernetes可以使用DNS名称或使用自己的IP地址公开容器。如果一个容器的流量很大,Kubernetes能够对网络流量进行负载均衡和分配,从而保证部署的稳定性。
  • 存储编排Kubernetes允许您自动挂载选择的存储系统,例如本地存储、公共云提供商等等。
  • 自动rollout和rollback您可以使用Kubernetes描述已部署容器所需的状态,并且它可以以可控的速率将实际状态更改为所需状态。例如,您可以自动化Kubernetes为您的部署创建新容器,删除现有容器并将其所有资源采用到新容器中。
  • 自动箱包装您可以使用它可以用于运行容器化任务的节点集群提供Kubernetes。您告诉Kubernetes CPU和内存(RAM)每个容器需求量。Kubernetes可以将容器装配到您的节点上,以充分利用您的资源。
  • 自愈Kubernetes会重新启动失败的容器,替换容器,杀死不响应用户定义的健康检查的容器,并且在它们准备好服务之前不会向客户端发布它们。
  • 机密和配置管理Kubernetes允许您存储和管理密码,OAuth令牌和SSH键等敏感信息。您可以在不重建容器图像的情况下部署和更新秘密和应用程序配置,而不会在堆栈配置中泄露秘密。

Kubernetes不是

Kubernetes不是传统的全包PAAS(平台作为服务)系统。由于Kubernetes在容器级别而不是在硬件级别运行,因此它为PAAS产品提供了一些通常适用的功能,例如部署,缩放,负载平衡,并让用户集成他们的日志记录,监控和警报解决方案。但是,Kubernetes不是单片,这些默认解决方案是可选和可插拔的。Kubernetes提供了构建开发人员平台的构建块,但保留了用户的选择和灵活性。

Kubernetes:

  • 不限制所支持的应用程序类型。Kubernetes的目标是支持极其多样化的工作负载,包括无状态、有状态和数据处理工作负载。如果一个应用程序可以在容器中运行,那么它应该在Kubernetes上运行得很好。
  • 不部署源代码,不会构建您的应用程序。连续集成,交付和部署(CI / CD)工作流程由组织文化和偏好以及技术要求确定。
  • 不提供应用级服务,如中间件(如消息总线)、数据处理框架(如Spark)、数据库(如MySQL)、缓存、集群存储系统(如Ceph)等。这些组件可以在Kubernetes上运行,并且/或者可以被运行在Kubernetes上的应用程序通过可移植机制访问,例如开放的服务代理
  • 不决定日志记录,监控或警报解决方案。它提供了一些作为概念证明的集成以及收集和导出指标的机制。
  • 不提供或要求配置语言/系统(例如,Jsonnet)。它提供了一个声明性API,任意形式的声明性规范都可以针对该API。
  • 不提供或采用任何全面的机器配置、维护、管理或自愈系统。
  • 此外,Kubernetes不是仅仅是编排系统。事实上,它消除了对编排的需求。业务流程的技术定义是执行定义的工作流程:首先执行A,然后B,然后是C.相反,Kubernetes包括一组独立的,可交换控制过程,其连续地将当前状态朝向所提供的所需状态驱动。无论您如何从A到C如何得到C.也不需要集中控制。这导致系统更容易使用和更强大,强大,弹性和可扩展性。

接下来是什么

最后修改于2020年10月22日上午6:45太平洋标准时间:容器没有自己的CPU (#24659) (fcdcfba35)