Kubernetes被称为容器集群“调度程序/协调器”,但是我不知道这意味着什么。在阅读Kubernetes网站和(模糊的)GitHub Wiki之后,我能说的最好的是,它以某种方式找出了可用的/能够运行Docker容器的VM,然后将其部署到那里。但这只是我的猜测,我还没有看到他们的文档中有任何具体的说法可以支持这一说法。
那么,什么是Kubernetes,准确,并有一些什么具体的,它解决的问题?
Kubernetes被称为容器集群“调度程序/协调器”,但是我不知道这意味着什么。在阅读Kubernetes网站和(模糊的)GitHub Wiki之后,我能说的最好的是,它以某种方式找出了可用的/能够运行Docker容器的VM,然后将其部署到那里。但这只是我的猜测,我还没有看到他们的文档中有任何具体的说法可以支持这一说法。
那么,什么是Kubernetes,准确,并有一些什么具体的,它解决的问题?
Answers:
Kubernetes的目的是使跨机器队列的应用程序的组织和调度变得更加容易。从总体上讲,它是集群的操作系统。
基本上,它使您不必担心每个应用程序在数据中心中的特定计算机上运行。此外,它提供了用于在这些计算机上进行健康检查和复制应用程序的通用原语,以及用于将应用程序连接到微服务的服务,从而使应用程序中的每一层都与其他层分离,以便您可以扩展/更新/维护它们独立地。
尽管可以在应用程序层中完成许多这些事情,但是这样的解决方案往往是一次性的且很脆弱,最好是将关注点分离开,因为编排系统担心如何运行应用程序,而您担心组成您的应用程序的代码。
当您从其Github页面上阅读时:
Kubernetes是一个开源系统,用于跨多个主机管理容器化的应用程序,提供了用于部署,维护和扩展应用程序的基本机制。
Kubernetes是:
lean: lightweight, simple, accessible portable: public, private, hybrid, multi cloud extensible: modular, pluggable, hookable, composable self-healing: auto-placement, auto-restart, auto-replication
Kubernetes拥有Google在大规模运行生产工作负载上十五年的经验,并结合了社区中最好的想法和实践。
对我来说,Kubernetes是Google提供的容器编排工具。由于其设计,您可以实现与任何容器引擎的兼容性,但是我认为现在仅限于Docker。它的体系结构中有一些重要概念:
Kubernetes使用以下概念:
群集是在其上构建容器的计算资源。Kubernetes可以在任何地方运行!有关各种服务的说明,请参阅《入门指南》。
Pods是一组具有共享卷的Docker容器,位于同一位置。它们是可以使用Kubernetes创建,计划和管理的最小的可部署单元。可以单独创建Pod,但是即使创建单个Pod,也建议您使用复制控制器。有关豆荚的更多信息。
复制控制器管理容器的生命周期。它们通过根据需要创建或终止Pod来确保指定数量的Pod在任何给定时间运行。有关复制控制器的更多信息。
服务为一组Pod提供单个,稳定的名称和地址。它们充当基本的负载平衡器。有关服务的更多信息。
标签用于根据key:value对组织和选择对象组。有关标签的更多信息。
因此,您拥有一组计算机,这些计算机形成了运行容器的群集。您还可以定义一组提供服务的容器,就像使用无花果等其他工具一样(即:webapp pod可以是Rails服务器和postgres数据库)。您还拥有其他工具来确保服务的多个容器/容器同时运行,键值存储,一种内置的负载平衡器...
如果您对coreos有所了解,那是一个非常相似的解决方案,但来自Google。Algo Kubernetes与Google Cloud Engine集成良好。
Kubernetes提供了与基础架构即服务API相同的功能,但针对动态调度的容器而不是虚拟机,以及针对平台即服务系统,但具有更大的灵活性,其中包括:
如果您已经使用其他机制进行服务发现,秘密分发,负载平衡,监视等,您当然可以继续使用它们,但是我们的目标是通过提供此机制来简化从现有IaaS和PaaS系统过渡到Kubernetes的过程。功能。