Kubernetes实际上做了什么?

sme*_*eeb 123 docker kubernetes

Kubernetes被称为容器集群"scheduler/orchestrator",但我不知道这意味着什么.在阅读了Kubernetes网站和(模糊的)GitHub wiki之后,我能说的最好的是它以某种方式确定哪些虚拟机可用/能够运行你的Docker容器,然后在那里部署它们.但这只是我的猜测,我没有在他们的文档中看到任何支持这一点的具体措辞.

那么,什么是Kubernetes,准确,并有一些什么具体的,它解决的问题?

bre*_*dan 102

Kubernetes的目的是使您可以更轻松地在一组机器上组织和安排应用程序.在较高级别,它是群集的操作系统.

基本上,它允许您不必担心每个应用程序运行在您的数据中心中的特定计算机.此外,它还提供了通用原语,用于在这些计算机上检查和复制应用程序,以及将应用程序连接到微服务的服务,以便应用程序中的每个层与其他层分离,以便您可以扩展/更新/维护它们独立.

虽然可以在应用程序层中完成许多这样的事情,但这样的解决方案往往是一次性的,而且很容易分离关注点,编排系统担心如何运行应用程序,而你担心构成应用程序的代码.

  • 谢谢@brendan(+1) - 你的答案肯定有帮助.但是有一个后续问题:这不是Apache Mesos的作用吗?Kubernetes和Mesos是否相互竞争?如果没有,他们可以相互协调使用(如果是,如何)?再次感谢! (3认同)
  • @smeeb Mesos和Kubernetes相互补充(后者作为Mesos框架得到支持).Mesos提供更复杂的资源管理.换句话说,Kubernetes允许Mesos根据可用容量决定使用哪个主机.Mesos支持其他框架.如果您阅读文档,您将看到Marathon是另一种在Mesos受管服务器集群上启动容器的方法. (2认同)

Jav*_*oso 15

正如您从其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
Run Code Online (Sandbox Code Playgroud)

Kubernetes建立在谷歌大规模运行生产工作负载的十五年经验的基础上,结合社区的最佳创意和实践.

对我来说,Kubernetes是Google的容器编排工具.由于它的设计,你可以实现与任何容器引擎的兼容性,但我认为现在它仅限于Docker.它的架构中有一些重要的概念:

Kubernetes使用以下概念:

集群是构建容器的计算资源.Kubernetes可以在任何地方运行!有关各种服务的说明,请参阅"入门指南".

Pod是具有共享卷的共处理Docker容器组.它们是可以使用Kubernetes创建,计划和管理的最小可部署单元.可以单独创建窗格,但建议您使用复制控制器,即使创建单个窗格也是如此.更多关于豆荚.

复制控制器管理pod的生命周期.他们通过根据需要创建或删除pod,确保在任何给定时间运行指定数量的pod.更多关于复制控制器.

服务为一组pod提供单一,稳定的名称和地址.它们充当基本负载平衡器.更多关于服务.

标签用于根据键:值对组织和选择对象组.更多关于标签.

因此,您有一组机器可以形成运行容器的集群.Yo也可以定义一组提供服务的容器,就像使用fig等其他工具一样(即:webapp pod可以是rails服务器和postgres数据库).您还有其他工具可以确保同时运行的服务的多个容器/容器,键值存储,一种内置负载均衡器......

如果您对coreos有所了解,那么这是一个非常类似的解决方案,但来自Google.Algo Kubernetes与Google Cloud Engine有很好的集成.

  • 谢谢@jcortejoso(+1) - 但是如果你不介意我会有一些后续问题:**(1)**你说Kubernetes与CoreOS类似,但是来自谷歌.这意味着Kubernetes和CoreOS解决了同样的问题.但是从[Kubernetes自己的网站](),它说你可以在**CoreOS上安装Kubernetes**.那是哪个?!?Kubernetes与CoreOS相同,还是Kubernetes在CoreOS上运行并解决特定问题? (2认同)

小智 7

Kubernetes提供了与基础架构即服务API相同的功能,但针对动态调度的容器而不是虚拟机,以及作为平台即服务系统,但具有更大的灵活性,包括:

  • 安装存储系统,
  • 分发秘密,
  • 应用健康检查,
  • 复制应用程序实例,
  • 水平自动缩放,
  • 命名和发现,
  • 负载均衡,
  • 滚动更新,
  • 资源监测,
  • 日志访问和摄取,
  • 支持内省和调试,以及
  • 身份和授权.

如果您已经使用其他机制进行服务发现,秘密分发,负载平衡,监控等,当然您可以继续使用它们,但我们的目标是通过提供此功能,轻松地从现有的IaaS和PaaS系统过渡到Kubernetes功能.

https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/#why-do-i-need-kubernetes-and-what-c​​an-it-do