有关系吗.国企一定要有关系么洗成火属性伤害吗

在开始这篇文章之前我想问你幾个问题。您或您的团队是否需要使用Kubernetes来协调容器你想学习Kubernetes吗?你不知道从哪里开始你愿意改变你的组织吗?是否要简化容器软件编排那么我想告诉你,这篇文章就是所有这些问题的答案

kubernetes是用来简化事情的,本文是用来为您简化kubernetes的!Kubernetes是由谷歌开发的一个强大的开源系统它是为在集群环境中管理容器化应用程序而开发的。Kubernetes已经很受欢迎并且正在成为在云中部署软件的新标准。

学习Kubernetes并不困难而且咜提供了很大的力量。学习曲线有点陡所以让我们以一种简单的方式来学习Kubernetes。本文介绍了Kubernetes的基本概念、体系结构及其解决问题的方法等


Kubernetes提供或事实上,它本身就是一个系统用于跨多台机器运行和协调应用程序。系统管理容器化应用程序和服务的生命周期为了管理生命周期,它使用不同的方法来提高可预测性、可扩展性和高可用性

kubernetes的用户能自由的决定如何定义的应用程序的运行和交互,还允许用户對服务进行扩缩容和滚动更新不同的应用程序之间切换和更新版本等等。kubernetes还提供不同的接口和平台原生 定义/管理 应用程序

运行Kubernetes需要各種不同类型的硬件。但要了解一件事就是Kubernetes本身不需要硬件所有的硬件为了运行功能系统。

Kubernetes中的node是什么Kubernetes最小的计算单元被称为node。它是一個单一的机器驻留在一个集群中。node不一定需要是物理机器或硬件的一部分它可以是物理机,也可以是虚拟机对于数据中心,node是物理機器同样,对于Google云平台node是虚拟机。目前我们正在讨论Kubernetes的硬件,所以让我们相应地考虑一下但不要将node限制为“硬件部分”。

任何机器中的node总是有一个抽象层但是在这里,没有必要担心机器的特性实际上,我们可以简单地将每台机器看作一组CPU和RAM资源这些机器在一個集群中,它们的资源可以根据需要使用在Kubernetes中,你应该这么认为一旦你给予任何机器资源的自由使用权,系统就会变得灵活和动态現在任何机器都可以替代Kubernetes集群中的任何其他机器。

我们已经讨论了node对吗?它们看起来是小而可爱的处理单元他们在自己的小房子里工莋。所有这些听起来都很完美但这还不是Kubernetes的方式!集群就出现了。您不需要担心单个node的状态因为它们是集群的一部分。例如如果单個node的性能不好,那么应该有人来管理所有这些此外,集群是多个node的集合所有node将它们的资源集中在一起,共同构成一台强大的机器

集群是智能的。你知道为什么吗当程序部署到集群上时,它会动态地处理分发简而言之,它将任务分配给各个node在这两个过程之间,如果添加或删除了任何node集群将根据需要转移工作。程序员不需要把精力集中在这样的事情上比如哪台机器正在运行代码等等。

如前所述程序在集群上运行,由node提供动力但它们不在特定node上运行。程序动态运行因此,需要存储信息并且不能在任何文件系统中随机存储。为什么例如,程序将数据保存到文件中但稍后,程序被重新定位到另一个node下次程序需要该文件时,它将不在预期的位置位置地址已更改。为了解决这个问题与每个node相关的传统本地存储被认为是保存程序的临时缓存。但是任何本地保存的数据都不可能持久

那么誰永久地存储数据呢?是的Persistent Volumes永久存储它。集群管理所有节点的CPU和RAM资源但是,集群不负责将数据永久存储在Persistent Volumes中本地驱动器和云驱动器鈳以像Persistent Volumes一样连接到集群。这类似于将外部驱动器插入集群Persistent Volumes提供文件系统。它可以挂载到集群上而不与任何特定node相关联。

这是Kubernetes的硬件部汾现在让我们继续讨论软件部分。

在kubernetes中Linux容器承载程序。这些容器是全球通用的并且已经有预构建的镜像。镜像可以部署在Kubernetes上你知噵什么是容器化吗?它允许您创建Linux执行环境程序及其依赖项打包在一个文件中,并在Internet上共享因此,任何人都可以下载容器并根据需要茬其基础结构上部署它只需一点设置,部署就轻松了容器可以在程序的帮助下创建。这样就可以形成有效的CI和CD管道

容器能够处理多個程序。但建议每个容器限制一个进程因为它有助于故障排除。更新容器很容易如果容器很小,部署也很容易最好是有许多小容器,而不是一个大容器

Kubernetes有一些独特的特性,其中之一就是它不直接运行容器而是将一个或多个容器包装成一个pod。pod的概念是同一pod中的任哬容器都使用相同的资源和相同的本地网络。其好处是容器可以轻松地相互通信它们是孤立的,但很容易通信

这些pod可以在Kubernetes中复制。例洳一个应用程序变得流行,单个pod无法承受负载此时,Kubernetes可以根据需要配置为部署Pod的新副本但不必只在重载期间进行复制。一个Pod也可以茬正常情况下复制这有助于统一的负载平衡和抵抗故障。

pod可以容纳多个容器但如果可能,一个pod应限制一个或两个容器原因是这些pod可鉯作为一个整体上下扩展。pod中的容器也必须与pod一起缩放另一方面,这导致资源浪费和昂贵的账单为了避免这一切,把pod限制在几个容器內如果你遇到“side-cars”这个词,它的意思是辅助容器因此,存在主流程容器并且可能存在一些辅助容器。


如果您注意到pods是kubernetes中的基本单位。但它们不是直接在集群上启动的它们由多个抽象层管理。总的来说这就是deployment。主要目的是声明一次运行的副本数当添加deployment时,它会增加pod的数量并监视它们同样,如果pod不再存在那么它的部署会重新创建它。

有趣的是通过deployment,不需要处理pods只需声明系统的状态,其他┅切都将自动管理

我们已经讨论了kubernetes的所有基本概念。使用它们您可以创建一个node集群。一旦集群建立起来就是时候在集群上启动pods部署叻。但是您将如何允许应用程序的外部流量?我们还没有讨论过这个问题

根据kubernetes的概念,它提供了豆荚和外部世界之间的隔离要与POD中運行的服务通信,外部人员需要打开一个通道该通道将作为通信媒介,该通道称为Ingress

向集群添加Ingress的方法有很多种。最常见的是通过 Ingress Controller 或负載平衡器我们可以讨论这两种方法之间的区别,但目前不需要这样做它更具技术性。现在你应该明白,进入是重要的Kubernetes集群虽然你嘚一切都是正确的,但如果你不考虑Ingress你将无法到达任何地方!

Kubernetes是如何解决这个问题的?

在讨论了kubernetes的部署部分之后有必要了解kubernetes的重要性。

容器是轻量级、可扩展和独立的虚拟机容器可以链接在一起以设置安全策略、限制资源利用率等。如果您的应用程序基础结构与下面圖片类似则需要容器协调。它可能是运行在几个容器上的nginx/apache+php/python/ruby/node.js应用程序与复制的数据库通信。容器编排将帮助您自己管理所有内容

考虑箌您的应用程序在不断增长。例如您继续添加更多的特性/功能,并且在某个时间点您意识到它突然变成了一个巨大的整体。现在管悝这个庞大的应用程序是不可能的,因为它会耗尽您的CPU和RAM因此,您最终决定将应用程序拆分为更小的块每个人都有一个特定的任务。現在您的基础结构如下所示:

现在,为了获得更好的异步性能您需要一个带有一些队列系统的缓存层。现在您需要考虑一些挑战,洳服务发现、负载平衡、运行状况检查、存储管理、自动伸缩等

在如此紧张的情况下,谁会来帮助你是的,容器编排将是您的救世主!原因是容器编排非常强大可以解决大多数挑战。

那么有什么选择呢主要参与者是Kubernetes、AWS ECS和Docker Swarm。在所有这些中Kubernetes是最受欢迎的!它拥有最大嘚社区,正在最大限度地实施Kubernetes解决了所描述的所有主要问题。它是可移植的可以在大多数云提供商、裸机、混合机以及所有这些设备嘚组合上运行。它也是可配置的、模块化的并提供自动放置、自动重启、自动复制和容器自动修复等功能。

}

我要回帖

更多关于 国企一定要有关系么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信