什么是Kubernetes以及为什么要使用它容器编排
什么是Kubernetes以及为什么要使用它Container Orchestration是今天的主题。 Docker简介,容器生态系统得到了显着的发展。 Kubernetes是一个开源容器编排工具,旨在自动部署,扩展和操作容器化应用程序。
Kubernetes是一个可移植,可扩展的开源平台,用于管理容器化的工作负载和服务,有助于声明性配置和自动化。
它拥有庞大,快速发展的生态系统。
Kubernetes支持,服务和工具广泛可用。在我们深入研究之前,让我们首先定义容器。
内容概述
- 1什么是容器
- 2 Docker System的核心元素
- 2.1 Docker引擎
- 2.2 Docker商店
- 3容器和虚拟机之间的区别
- 4容器的优点
- 5什么是Container Orchestration
- 6什么是Kubernetes
- 7 Kubernetes能做什么
- 8 Kubernetes建筑
- 9 Kubernetes术语
- 10个Kubernetes集群
- 11个Kubernetes节点和pods
- 12为什么使用Kubernetes
什么是容器
Container是由一个名称空间统一的软件进程的集合,可以访问与其他容器共享的操作系统内核,有些不能访问不同的容器。
您创建Docker镜像并将其推送到注册表,然后在Kubernetes窗格中引用它。
Kubernetes不会取代Docker,但会增加它。
但是,Kubernetes确实取代了Docker中出现的一些顶级技术。
docker镜像的运行时实例包含以下三件事。
- Docker镜头
- 执行环境
- 标准的指令集
Docker系统的核心元素
Docker生态系统具有以下两个核心要素。
- Docker引擎
- Docker商店
Docker引擎
Docker Engine由运行时和打包工具组成。
它必须安装在运行Docker的主机上。
Docker商店
Docker商店是一种在线云服务,用户可以在其中存储和共享他们的图像。它也被称为Docker Hub。
容器和虚拟机之间的区别
虚拟机包含一个或多个包含必要二进制文件和库的应用程序。
虚拟机(VM)包含与应用程序交互的整个客户机操作系统。
另一方面,容器包括应用程序及其所有依赖项,并与其他容器共享内核。
容器不与任何基础设施相连。它只需要在主机上安装Docker引擎。
容器在主机OS上的用户空间中运行隔离的进程。
容器的优点
容器应用程序是便携式的。
容器应用程序以标准方式打包。
部署简单且可重复。 DevOps工程师喜欢它们,因为它可以直接在不同的主机上进行管理。
自动化测试,打包和集成可以更自然地自动化。
容器支持更新的微服务架构。
它消除了平台兼容性问题。
DevOps团队可以在容器级别隔离和调试问题。
什么是Container Orchestration
Container业务流程是在由多个节点组成的计算机集群上部署容器的过程。容器化方法是将构成应用程序的不同服务打包到单独的计算容器中,并在物理或虚拟机集群中部署这些容器。
Container Orchestration是一个自动化部署,管理,扩展,网络和基于容器的应用程序可用性的过程。
容器支持VM(虚拟机)式的关注点分离,但开销更小,灵活性更高。作为输出,容器重塑了人们对开发,维护和部署软件的思考方式。在容器化体系结构中,构成应用程序的不同服务被打包到单独的容器中,并跨物理或虚拟机集群进行部署。但它引发了对容器编排的需求:一种自动化基于容器的应用程序的部署,管理,扩展,网络和可用性的工具。
什么是Kubernetes
Kubernetes是一个开源平台,旨在自动部署,扩展和运行应用程序容器。 Kubernetes的主要目标是培养组件和工具的生态系统,以减轻在公共云和私有云中运行应用程序的负担。
Kubernetes平台始于Google。它是继承者 – 虽然不是Google Borg项目的直接后裔。
Kubernetes是在虚拟机集群上安排和运行容器的平台。它运行在裸机,虚拟机,私有数据中心和公共云上。
Kubernetes是一个容器平台。您可以将它与Docker容器一起使用来开发和构建应用程序,然后使用Kubernetes在您的基础架构上运行这些应用程序。
您不仅限于使用Docker容器。您也可以使用其他容器。
Kubernetes是一个开源项目,它支持各种规模的软件团队,从小型创业公司到财富500强公司,可以自动部署,扩展和管理服务器计算机组或集群上的应用程序。
Kubernetes是分布式系统。它引入了自己的编排空间。因此,了解其架构至关重要。
Kubernetes“集群”由称为“节点”的术语组成。
术语“群集”在聚合中表示“节点”。
“群集”指的是整个运行系统。
“节点”是Kubernetes中的工作机器(以前称为“minion”)。 “节点”可以是VM或物理机器。
每个节点都配置了运行由Kubernetes控制平面管理的容器的软件。
控制平面是一组API和软件(例如 kubectl
)Kubernetes用户与之互动。
控制平面服务在主节点上运行。
群集可能具有多个主要用于高可用性方案。
Kubernetes能做什么
Kubernetes的功能提供了部署容器化应用程序所需的一切。以下是一些要点。
- 容器部署和部署控制。使用“部署”描述我们所有的容器以及我们想要的数量.Kubernetes将跟踪这些容器的运行并处理部署更改,例如更新图像或使用“rollout”更改环境变量。您可以暂停,恢复,并根据需要进行回滚更改。
- 资源仓盘点。您可以为所有容器声明最小和最大计算资源(CPU和内存)。 Kubernetes将我们的容器插入他们认为合适的地方。它提高了我们的计算效率并最终降低了成本。
- 内置服务发现和自动扩展。 Kubernetes可以自动将我们的容器暴露给互联网或集群中的其他容器。它会自动对匹配容器之间的流量进行负载平衡。 Kubernetes通过环境变量和DNS支持服务发现,开箱即用。您还可以为容器配置基于CPU的自动缩放,以提高资源利用率。
- 异构集群。 Kubernetes可以随处运行。您可以为运行云,内部部署或数据中心裸机的虚拟机(VM)组合构建Kubernetes集群。根据要求选择您的成分。
- 持久存储。 Kubernetes包括对连接到无状态应用程序容器的持久存储的支持。支持Amazon Web Services EBS,Google Cloud Platform永久磁盘以及许多更多云服务。
- 高可用性功能。 Kubernetes是一个行星尺度。它需要特别注意高可用性功能,例如多主服务器或集群联合。群集联合允许我们将群集链接在一起,以便在一个群集关闭时,容器可以自动移动到另一个群集。
这些关键特性使Kubernetes非常适合运行从单一Web应用程序到高度分布式微服务应用程序甚至批处理驱动应用程序的不同应用程序体系结构。
Kubernetes建筑
Kubernetes容器被分组为“容器”。容器可包括一个或多个容器。 pod中的所有容器都在同一节点上运行。
“pod”是Kubernetes建筑中最低的构建块。更复杂的抽象出现在“豆荚”之上。
“服务”定义用于将窗格暴露给其他窗格或将窗格暴露给公共互联网的网络规则。
Kubernetes使用“部署”来管理对正在运行的pod和水平扩展的部署配置更改。
“部署”是用于创建窗格的模板。通过从模板创建更多“副本”窗格,可以水平缩放“部署”。
对“部署”模板的更改会触发推出。 Kubernetes使用滚动部署将更改应用于部署中的所有正在运行的pod。
Kubernetes提供了两种与控制平面交互的方式。
主要方法是kubectl命令与Kubernetes做任何事情。
第二种方法是使用具有基本功能的Web UI。
Kubernetes术语
让我们看一些更常见的术语来帮助您理解Kubernetes。
Master:控制Kubernetes节点的机器。这是所有任务分配的起源。
节点:这些计算机执行请求和分配的任务。 Kubernetes主控制节点。
Pod:部署到单个节点的一个或多个容器的组。 pod中的所有容器共享IP地址,IPC,主机名和其他资源。 Pod将网络和存储从底层容器中抽象出来。它允许您更轻松地在集群周围移动容器。
复制控制器:它控制在群集上某处运行的pod的相同副本数量。
服务:它将工作定义与pod分离。 Kubernetes服务代理会自动将服务请求发送到正确的pod,无论它在集群中移动到哪里,或者即使它已被替换。
Kubelet:Kubelet服务在节点上运行并读取容器清单,并确保已定义的容器已启动并正在运行。
kubectl:kubectl是Kubernetes的命令行配置工具。
Kubernetes集群
最高级别的Kubernetes抽象集群指的是运行Kubernetes(本身就是集群应用程序)的一组计算机以及由它管理的容器。
Kubernetes集群必须具有master,即命令和控制集群中所有其他Kubernetes机器的系统。
Kubernetes节点和pods
每个群集都包含Kubernetes节点。节点可能是物理机器或VM。同样,这个想法是抽象的:无论运行什么应用程序,Kubernetes都会处理该基板上的部署。
Kubernetes甚至可以确保特定容器仅在VM上运行或仅在裸机上运行。节点运行pod,这是可以创建或管理的最基本的Kubernetes对象。每个pod代表Kubernetes中的应用程序或运行进程的单个实例,由一个或多个容器组成。
Kubernetes作为一个组启动,停止和复制pod中的所有容器。 Pod将用户的注意力中心化在应用程序上,而不是容器本身上。
为什么使用Kubernetes
真正的制作应用程序跨越多个容器。必须跨多个服务器主机部署这些容器。
容器的安全性是多层的,并且可能很复杂。这就是Kubernetes可以提供帮助的地方。
Kubernetes为我们提供了大规模部署容器或这些工作负载所需的编排和管理功能。
Kubernetes orchestration允许我们构建跨多个容器的应用程序服务,在整个集群中调度这些容器,扩展这些容器,并随着时间的推移管理这些容器的运行状况。使用Kubernetes,您可以采取实际步骤,以实现更好的IT安全性。
Kubernetes还需要与网络,存储,安全,遥测和其他服务集成,以提供全面的容器基础设施。
Kubernetes还可以使用符合容器图像格式和运行时的Open Container Initiative(OCI)标准的任何容器系统。
最后,什么是Kubernetes以及为何使用它Container Orchestration解释文章结束了。