Kubernetes在10分钟内
Kubernetes是一项允许我们隔离应用程序的技术。很好,但是我们如何扩展呢?当然,我们应该创建新的容器。
但是,我们应该同时拥有几个容器?应该涉及多少台服务器?谁将监视所有节点以平衡负载并将查询重定向到负载较小的节点?此外,我们如何不停止就更新我们的应用程序?答案是Kubernetes。
什么是Kubernetes?
Kubernetes是一个开放源代码的容器编排系统,用于自动化应用程序的部署,扩展和管理。它最初是由Google设计的,现在由Cloud Native Computing Foundation维护。
Kubernetes管理容器,为我们提供了高级API来控制整个系统。这对开发人员意味着什么?这意味着他不必担心节点的数量,容器的确切启动位置或它们之间的交互方式。他不必处理硬件优化,也不必担心节点可能出现故障。
另一个好消息是我们有一个来自云解决方案提供商(CSP)的抽象层。当然,不同的CSP具有不同的API,但是Kubernetes将始终相同。因此,您可以轻松地更改提供商以获取更好的关税。
Kubernetes架构
Kubernetes有一个Master节点。该节点管理所有其他节点。主机包括:etcd,API服务器,控制器管理器,调度程序。
主节点
等
它存储集群中每个节点可以使用的配置信息。它是一个高可用性键值存储,可以在多个节点之间分布。Kubernetes API服务器只能访问它,因为它可能具有一些敏感信息。它是所有人都可以访问的分布式键值存储。
API服务器
Kubernetes是一个API服务器,它使用该API提供集群上的所有操作。API服务器实现了一个接口,这意味着不同的工具和库可以轻松地与其进行通信。 Kubeconfig 是一个软件包,以及可用于通信的服务器端工具。它公开了Kubernetes API。
财务经理
该组件负责调节群集状态并执行任务的大多数收集器。通常,可以将其视为在非终止循环中运行的守护程序,它负责收集信息并将其发送到API服务器。它致力于获取群集的共享状态,然后进行更改以使服务器的当前状态达到所需状态。关键控制器是复制控制器,端点控制器,名称空间控制器和服务帐户控制器。控制器管理器运行不同种类的控制器以处理节点,端点等。
排程器
这是Kubernetes master的关键组件之一。它是主服务器中负责分配工作负载的服务。它负责跟踪群集节点上工作负载的利用率,然后将工作负载放在可用资源上并接受该工作负载。换句话说,这是负责将Pod分配给可用节点的机制。调度程序负责工作负载利用率,并将Pod分配给新节点。
从节点
最小可运行实体称为 Pod 。容器是一组使用相同资源并具有公共目录的容器。每个吊舱运行一个容器是一种常见的做法。为什么最小单位是吊舱而不是集装箱?对于某些情况,例如,两个容器需要共享对同一数据仓库的访问权限,或者使用进程间通信技术进行连接,或者由于某些其他原因而紧密连接。
使用pod的另一个原因是,我们不仅可以使用Docker容器,还可以使用其他容器化技术作为Rkt。。
我们需要的下一个实体是 Service 。Kubernetes服务充当Pod的访问点,这些Pod提供与Pod相同的功能。服务执行解决吊舱和平衡吊舱之间的负载这一艰巨任务的解决方案。
但是服务如何识别应该服务的Pod? 标签 是一个键值对,可让我们过滤实体。每个吊舱可以有多个标签。例如,微服务名称和版本。您可以为服务或部署策略定义目标过滤器以定义职责。该服务会将查询重定向到负载较小的节点,并且如果其他节点掉落,则可以在一个节点中设置新容器。
但是 部署呢?更新代码时能否达到零停止时间?如果我们的代码将出现致命错误,该怎么办?只需提一下,我们的应用程序可以分布在数千个节点上,并可以操作数千个容器。这就是部署组件存在的原因。它允许以零停止时间模式更新每个节点,并轻松签出到我们应用的先前版本。最好的部分是我们可以调整此过程的所有方面。您还可以配置CI流程。
另一个好处是Kubernetes有一个特殊的pod kube-dns , 它可以作为默认的DNS服务器。kube-dns 的重要功能之一 是该子程序为每个群集服务创建一个DNS记录。这意味着当我们创建名为 my-service的服务时,将为其分配IP地址。在kube-dns 中创建一个条目, 其中 包含有关服务的名称和IP地址的信息。这允许所有提交者将http:// my-service形式的地址转换为IP地址。
用例
微服务
微服务是软件开发中的一个重要趋势,它允许应用程序通过水平扩展来处理非常大量的请求。Kubernetes提供容错能力和高可用性。并且配置的CI进程可以轻松地更新数千个节点。
机器学习
机器学习技术现已广泛用于解决现实生活中的问题。但是,建立有效的AI模型并将其用于生产的过程既复杂又耗时。因此,许多公司希望通过引入工具包来加速整个过程,从而简化此过程,并简化数据科学家或ML工程师的工作。这样,将大大减少部署此类应用程序所需的操作数量,从而缩短了该应用程序的上市时间。在这种情况下,企业可以利用Kubernetes的力量,因为训练ML模型所需的所有计算都是在K8s集群内部执行的。数据科学家或ML工程师只需清理数据并编写代码。其余的将由基于Kubernetes的工具包处理。
重型计算和高性能计算
与Docker合作的任何人都可以欣赏容器可以实现的效率方面的巨大收益。但是,有时我们需要执行非常复杂的操作,这些操作所需要的不仅仅是一台机器。有2种方法:垂直和水平缩放。垂直缩放的成本太高,并且受技术发展的限制,但是水平缩放需要能够协调不同机器中所有容器的内容。Kubernetes可以在这一领域为我们提供帮助。
结论
Kubernetes是功能强大的编排工具。它为您提供了许多功能,例如轻松的零停止时间应用程序更新,容错控制,平衡负载和通信配置,以执行繁重的计算和高负载处理等出色的工作。此外,配置Kubernetes而非基础架构(IaaS),您将能够轻松更改基础架构提供商,而不会损失进度。

关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!