What does Kubernetes actually do?

Kubernetes is billed as a container cluster "scheduler/orchestrator", but I have no idea what this means. After reading the Kubernetes site and (vague) GitHub wiki, the best I can tell is that its somehow figures out what VMs are available/capable of running your Docker container, and then deploys them there. But that is just my guess, and I haven't seen any concrete verbiage in their documentation to support that.

So what is Kubernetes, exactly, and what are some specific problems that it solves?

29689 次浏览

正如你从它的 Github 页面中读到的:

Kubernetes 是一个用于管理集装箱化的开源系统 跨多个主机的应用程序,为 应用程序的部署、维护和伸缩。

库伯内特是:

lean: lightweight, simple, accessible
portable: public, private, hybrid, multi cloud
extensible: modular, pluggable, hookable, composable
self-healing: auto-placement, auto-restart, auto-replication

库伯内特斯在谷歌工作了15年,积累了丰富的经验 大规模运行生产工作负荷,结合最佳品种 来自社区的想法和实践。

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

Kubernetes 的工作原理如下:

集群是容器所在的计算资源 建立。库伯内特可以运行任何地方! 参见入门指南 各种服务的说明。

Pods 是一组共享卷的 Docker 容器。 他们是最小的可部署单位,可以创建,计划, 并且由库伯内特管理。豆荚可以单独创建,但是 建议您使用复制控制器,即使 创建一个单一的豆荚。更多关于豆荚。

复制控制器管理吊舱的生命周期 一个指定数量的吊舱在任何给定的时间运行,通过创建 或根据需要杀死豆荚。更多关于复制控制器的信息。

服务为一组 pods 提供一个单一的、稳定的名称和地址。 它们充当基本的负载平衡器。

标签用于组织和选择基于 键: 值对。更多关于标签。

因此,您有一组机器,它们形成一个集群,在集群中运行容器。Yo 还可以定义一组提供服务的容器,这与使用其他工具(如: webapp pod 可以是 Rails 服务器和 postgres 数据库)所做的类似。您还可以使用其他工具来确保一个服务的多个容器/pods 同时运行,一个键值存储,一种内置的负载平衡器..。

如果你知道一些关于 coreos 的事情,这是一个非常类似的解决方案,但来自谷歌。AlgoKubernetes 与 Google 云计算引擎有很好的集成。

Kubernetes 的目的是让你的应用程序在一系列的机器上更容易组织和安排。在较高的层次上,它是您的集群的操作系统。

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

虽然在应用程序层可以做很多这样的事情,但是这样的解决方案往往是一次性的和脆弱的,最好有一个关注点分离,一个编排系统担心如何运行你的应用程序,而你担心组成你的应用程序的代码。

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

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

如果您已经使用其他机制来进行服务发现、秘密分发、负载平衡、监视等,当然您可以继续使用它们,但是我们的目标是通过提供此功能使从现有的 IaaS 和 PaaS 系统转换到 Kubernetes 变得容易。

Https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/#why-do-i-need-kubernetes-and-what-can-it-do