(译)An introduction to Kubernetes
原文:https://www.jeremyjordan.me/kubernetes/(博客园团队推荐的)
这篇博客文章将对Kubernetes进行介绍,以便您了解该工具背后的动机,含义以及使用方式。在后续文章中,我将讨论如何使用更具体的(数据科学)示例来利用Kubernetes增强数据科学工作负载。但是,这有助于您首先了解基本原理-这是本文的重点。
先决条件:我将假设您熟悉Docker等容器技术。如果您没有构建和运行容器映像的经验,建议您先熟悉之后,在继续阅读本文
总览这是我们将在本文中讨论的内容。
Kubernetes通常被描述为容器编排平台。为了理解确切的含义,它有助于重新审视容器的用途,缺少的内容以及Kubernetes如何填补这一空白。
注意:您还将看到Kubernetes其简称numeronym,K8S。这意味着同一件事,只是更容易键入。
为什么我们喜欢容器?容器提供了一种轻量级的机制来隔离应用程序的环境。对于给定的应用程序,我们可以指定要安装的系统配置和库,而不必担心与可能在同一台物理计算机上运行的其他应用程序产生冲突。我们将每个应用程序封装为容器映像(container image)可以在任何机器上可靠地执行*(只要它能够运行容器映像),从而为我们提供了可移植性,以实现从开发到部署的平稳过渡。此外,由于每个应用程序都是独立的,无需担心环境冲突,因此将多个工作负载放置在同一台物理计算机上并实现更高的资源(内存和CPU)利用率更加容易-最终降低了成本。
缺少的东西?但是,如果您的容器死了怎么办?甚至更糟的是,如果运行您的容器的计算机发生故障,会发生什么?容器没有提供容错(fault tolerance)解决方案。或者,如果您有多个需要通信的容器,该如何在容器之间实现联网?当您旋转单个容器时,此变化如何?容器网络(networking )很容易变成一团糟。最后,假设您的生产环境由多台机器组成-您如何决定使用哪台机器来运行容器?
Kubernetes作为容器编排平台。我们可以使用容器编排平台解决上述许多问题。
乐团的负责人拥有音乐表演的愿景,并与音乐家沟通,以协调他们个人的乐器演奏,以实现总体愿景。作为系统的架构师,您的工作只是简单地创作音乐(指定要运行的容器),然后将控制权移交给乐团总监(容器编排平台)以实现该愿景。
容器编排平台管理单个容器的整个生命周期,根据需要扩展和关闭资源。如果某个容器意外关闭,编排平台将通过在其位置启动另一个容器来作出反应。
最重要的是,编排平台为应用程序之间的通信提供了一种机制,即使底层的单个容器被创建和销毁也是如此。
最后,在给定(1)一组要运行的容器工作负载和(2)集群上的一组计算机的情况下,容器协调器将检查每个容器并确定最佳的计算机来调度该工作负载。要了解为什么这很有价值,请观看Kelsey Hightower(17:47-20:55)使用俄罗斯方块示例游戏来说明自动化部署和容器编排之间的区别。
设计原则。现在我们大致了解了容器编排的动机,让我们花一些时间来讨论Kubernetes背后的动机设计原则。它有助于理解这些原理,以便您可以按预期使用该工具。
陈述式也许Kubernetes中最重要的设计原则是,我们仅定义系统的期望状态,并让Kubernetes自动化工作以确保系统的实际状态反映这些期望。这使您免于在大多数事物损坏时进行修复的责任;你只需说明你的系统是什么应该看起来像一个理想的状态。Kubernetes将检测到系统的实际状态何时不符合这些期望,它将代表您进行干预以解决问题。这使我们的系统能够自我修复并对问题做出反应,而无需人工干预。
系统的“状态”由一组对象定义。每个Kubernetes对象具有(1)一个规范在其中提供所期望的状态和(2)的状态反映了对象的当前状态。Kubernetes维护所有对象规范的列表,并不断轮询每个对象,以确保其状态与规范相等。如果对象无响应,Kubernetes将启动一个新版本来替换它。如果对象的状态偏离了规范,Kubernetes将发出必要的命令以将该对象驱动回到其所需状态。
分布式温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/40491.html