Kubernetes被称为容器集群" scheduler / orchestrator",但我不知道这意味着什么。在阅读了Kubernetes网站和(模糊的)GitHub wiki之后,我能说的最好的是它以某种方式确定哪些虚拟机可用/能够运行你的Docker容器,然后在那里部署它们。但这只是我的猜测,我还没有在他们的文档中看到任何支持这一点的具体措辞。
那么什么是Kubernetes,完全,以及它解决了哪些特定的问题?
答案 0 :(得分:90)
Kubernetes的目的是让您更轻松地在一组机器上组织和安排您的应用程序。在较高级别,它是您的群集的操作系统。
基本上,它允许您不必担心每个应用程序运行在您的数据中心中的特定计算机。此外,它还提供了通用原语,用于在这些计算机上检查和复制应用程序,以及将应用程序连接到微服务的服务,以便应用程序中的每个层与其他层分离,以便您可以扩展/更新/维护它们独立地
虽然可以在应用程序层中完成许多这样的事情,但是这样的解决方案往往是一次性的,并且很脆弱,关注点分离会更好,编排系统担心如何运行您的应用程序,并且您担心构成应用程序的代码。
答案 1 :(得分:14)
正如您从其Github page:
中读到的那样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可以在任何地方运行!请参阅入门指南 各种服务的说明。
Pod是具有共享卷的共处理Docker容器组。 它们是可以创建,安排的最小可部署单元, 并与Kubernetes一起管理。 Pod可以单独创建,但是 它建议您即使使用复制控制器 创建一个pod。关于豆荚的更多信息。
复制控制器管理pod的生命周期。他们确保这一点 通过创建,在任何给定时间运行指定数量的pod 或根据需要杀死豆荚。有关复制控制器的更多信息。
服务为一组pod提供单一,稳定的名称和地址。 它们充当基本负载平衡器。更多关于服务的信息。
标签用于组织和选择基于的对象组 key:值对。有关标签的更多信息。
因此,您有一组机器构成了运行容器的集群。 Yo也可以定义一组提供服务的容器,就像你使用其他工具一样(例如:webapp pod可以是rails服务器和postgres数据库)。您还有其他工具可以确保同时运行服务的多个容器/容器,键值存储,一种内置负载均衡器......
如果您对coreos有所了解,那么它就是一个非常类似的解决方案,但来自Google。 Algo Kubernetes与Google Cloud Engine有很好的集成。
答案 2 :(得分:7)
Kubernetes提供了与基础架构即服务API相同的功能,但针对动态调度的容器而非虚拟机,以及作为平台即服务系统,但具有更大的灵活性,包括:
如果您已经使用其他机制进行服务发现,秘密分发,负载平衡,监控等,当然您可以继续使用它们,但我们的目标是从现有的IaaS和PaaS系统轻松过渡到Kubernetes通过提供此功能。