Kubernetes 实际上做了什么?
What does Kubernetes actually do?
Kubernetes 被称为容器集群 "scheduler/orchestrator",但我不知道这是什么意思。在阅读了 Kubernetes 站点和(模糊的)GitHub wiki 之后,我能说的最好的是它以某种方式弄清楚 运行 你的 Docker 容器的 available/capable 是什么虚拟机,并且然后将它们部署在那里。但这只是我的猜测,我还没有在他们的文档中看到任何具体的措辞来支持这一点。
那么什么是 Kubernetes,确切地说,它解决了哪些具体问题?
正如您从其 Github page 中读到的那样:
Kubernetes is an open source system for managing containerized
applications across multiple hosts, providing basic mechanisms for
deployment, maintenance, and scaling of applications.
Kubernetes is:
lean: lightweight, simple, accessible
portable: public, private, hybrid, multi cloud
extensible: modular, pluggable, hookable, composable
self-healing: auto-placement, auto-restart, auto-replication
Kubernetes builds upon a decade and a half of experience at Google
running production workloads at scale, combined with best-of-breed
ideas and practices from the community.
对我来说,Kubernetes 是来自 Google 的容器编排工具。由于其设计,您可以实现与任何容器引擎的兼容性,但我认为现在它仅限于 Docker。它的架构中有一些重要的概念:
Kubernetes works with the following concepts:
Clusters are the compute resources on top of which your containers are
built. Kubernetes can run anywhere! See the Getting Started Guides for
instructions for a variety of services.
Pods are a colocated group of Docker containers with shared volumes.
They're the smallest deployable units that can be created, scheduled,
and managed with Kubernetes. Pods can be created individually, but
it's recommended that you use a replication controller even if
creating a single pod. More about pods.
Replication controllers manage the lifecycle of pods. They ensure that
a specified number of pods are running at any given time, by creating
or killing pods as required. More about replication controllers.
Services provide a single, stable name and address for a set of pods.
They act as basic load balancers. More about services.
Labels are used to organize and select groups of objects based on
key:value pairs. More about labels.
因此,您有一组机器组成一个集群,您的容器所在的集群 运行。 Yo 还可以定义一组提供服务的容器,就像您使用 fig 等其他工具一样(即:webapp pod 可以是 rails 服务器和 postgres 数据库)。您还可以使用其他工具来确保多个 containers/pods 服务同时 运行,键值存储,一种内置负载平衡器...
如果您对 coreos 有所了解,这是一个非常相似的解决方案,但来自 Google。 Algo Kubernetes 与 Google Cloud Engine 集成良好。
Kubernetes 的目的是让您更轻松地在一组机器上组织和调度您的应用程序。在高层次上,它是您的集群的操作系统。
基本上,它让您不必担心每个应用程序 运行 在数据中心的具体机器上。此外,它还提供用于在这些机器上进行健康检查和复制您的应用程序的通用原语,以及用于将您的应用程序连接到微服务中的服务,以便您的应用程序中的每一层都与其他层分离,以便您可以 scale/update/maintain 它们独立。
虽然可以在应用层做很多这样的事情,但这样的解决方案往往是一次性的和脆弱的,最好是分离关注点,编排系统担心如何运行 你的应用程序,你担心组成你的应用程序的代码。
Kubernetes 提供了很多与基础设施即服务 API 相同的功能,但其目标是动态调度容器而不是虚拟机,并且作为平台即服务系统,但具有更大的灵活性,包括:
- 安装存储系统,
- 分发秘密,
- 应用程序健康检查,
- 复制应用程序实例,
- 水平自动缩放,
- 命名和发现,
- 负载均衡,
- 滚动更新,
- 资源监控,
- 记录访问和摄取,
- 支持内省和调试,并且
- 身份和授权。
如果你已经在使用其他机制进行服务发现、秘密分发、负载均衡、监控等,当然你可以继续使用它们,但我们的目标是让现有的 IaaS 和 Kubernetes 更容易过渡提供此功能的 PaaS 系统。
Kubernetes 被称为容器集群 "scheduler/orchestrator",但我不知道这是什么意思。在阅读了 Kubernetes 站点和(模糊的)GitHub wiki 之后,我能说的最好的是它以某种方式弄清楚 运行 你的 Docker 容器的 available/capable 是什么虚拟机,并且然后将它们部署在那里。但这只是我的猜测,我还没有在他们的文档中看到任何具体的措辞来支持这一点。
那么什么是 Kubernetes,确切地说,它解决了哪些具体问题?
正如您从其 Github page 中读到的那样:
Kubernetes is an open source system for managing containerized applications across multiple hosts, providing basic mechanisms for deployment, maintenance, and scaling of applications.
Kubernetes is:
lean: lightweight, simple, accessible portable: public, private, hybrid, multi cloud extensible: modular, pluggable, hookable, composable self-healing: auto-placement, auto-restart, auto-replication
Kubernetes builds upon a decade and a half of experience at Google running production workloads at scale, combined with best-of-breed ideas and practices from the community.
对我来说,Kubernetes 是来自 Google 的容器编排工具。由于其设计,您可以实现与任何容器引擎的兼容性,但我认为现在它仅限于 Docker。它的架构中有一些重要的概念:
Kubernetes works with the following concepts:
Clusters are the compute resources on top of which your containers are built. Kubernetes can run anywhere! See the Getting Started Guides for instructions for a variety of services.
Pods are a colocated group of Docker containers with shared volumes. They're the smallest deployable units that can be created, scheduled, and managed with Kubernetes. Pods can be created individually, but it's recommended that you use a replication controller even if creating a single pod. More about pods.
Replication controllers manage the lifecycle of pods. They ensure that a specified number of pods are running at any given time, by creating or killing pods as required. More about replication controllers.
Services provide a single, stable name and address for a set of pods. They act as basic load balancers. More about services.
Labels are used to organize and select groups of objects based on key:value pairs. More about labels.
因此,您有一组机器组成一个集群,您的容器所在的集群 运行。 Yo 还可以定义一组提供服务的容器,就像您使用 fig 等其他工具一样(即:webapp pod 可以是 rails 服务器和 postgres 数据库)。您还可以使用其他工具来确保多个 containers/pods 服务同时 运行,键值存储,一种内置负载平衡器...
如果您对 coreos 有所了解,这是一个非常相似的解决方案,但来自 Google。 Algo Kubernetes 与 Google Cloud Engine 集成良好。
Kubernetes 的目的是让您更轻松地在一组机器上组织和调度您的应用程序。在高层次上,它是您的集群的操作系统。
基本上,它让您不必担心每个应用程序 运行 在数据中心的具体机器上。此外,它还提供用于在这些机器上进行健康检查和复制您的应用程序的通用原语,以及用于将您的应用程序连接到微服务中的服务,以便您的应用程序中的每一层都与其他层分离,以便您可以 scale/update/maintain 它们独立。
虽然可以在应用层做很多这样的事情,但这样的解决方案往往是一次性的和脆弱的,最好是分离关注点,编排系统担心如何运行 你的应用程序,你担心组成你的应用程序的代码。
Kubernetes 提供了很多与基础设施即服务 API 相同的功能,但其目标是动态调度容器而不是虚拟机,并且作为平台即服务系统,但具有更大的灵活性,包括:
- 安装存储系统,
- 分发秘密,
- 应用程序健康检查,
- 复制应用程序实例,
- 水平自动缩放,
- 命名和发现,
- 负载均衡,
- 滚动更新,
- 资源监控,
- 记录访问和摄取,
- 支持内省和调试,并且
- 身份和授权。
如果你已经在使用其他机制进行服务发现、秘密分发、负载均衡、监控等,当然你可以继续使用它们,但我们的目标是让现有的 IaaS 和 Kubernetes 更容易过渡提供此功能的 PaaS 系统。