What is Kubernetes?

Kubernetes is a portable, extensible open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.

Google open-sourced the Kubernetes project in 2014. Kubernetes builds upon a decade and a half of experience that Google has with running production workloads at scale, combined with best-of-breed ideas and practices from the community.

什么是Kubernetes?

它是一个开源平台,用于管理容器化的负载和服务。

它具有可移植性和可扩展性,有助于声明性配置和自动化。

它的生态系统规模庞大且增长快速。

它的服务、支持和工具的使用范围十分广泛。

它于2014年被谷歌开源。

它结合了谷歌15年的大规模实际生产负载经验,以及来自社区的最好的想法和实践。


Why do I need Kubernetes and what can it do?

Kubernetes has a number of features. It can be thought of as:

  • a container platform
  • a microservices platform
  • a portable cloud platform and a lot more.

Kubernetes provides a container-centric management environment. It orchestrates computing, networking, and storage infrastructure on behalf of user workloads. This provides much of the simplicity of Platform as a Service (PaaS) with the flexibility of Infrastructure as a Service (IaaS), and enables portability across infrastructure providers.

我为什么需要Kubernetes,它能干什么?

Kubernetes有很多的功能,它可以作为:

  •   一个容器平台
  •   一个微服务平台
  •   一个可移植的云平台等等

Kubernetes提供了一个以容器为中心的管理环境。它可以对用户工作负载上的计算、网络和存储等基础资源进行调配。这使得平台即服务(PaaS)变得更加简单,基础设施即服务(IaaS)变得更加灵活,并实现了支持跨基础设施提供商的可移植性。


How is Kubernetes a platform?

Even though Kubernetes provides a lot of functionality, there are always new scenarios that would benefit from new features. Application-specific workflows can be streamlined to accelerate developer velocity. Ad hoc orchestration that is acceptable initially often requires robust automation at scale. This is why Kubernetes was also designed to serve as a platform for building an ecosystem of components and tools to make it easier to deploy, scale, and manage applications.

Labels empower users to organize their resources however they please. Annotations enable users to decorate resources with custom information to facilitate their workflows and provide an easy way for management tools to checkpoint state.

Additionally, the Kubernetes control plane is built upon the same APIs that are available to developers and users. Users can write their own controllers, such as schedulers, with their own APIs that can be targeted by a general-purpose command-line tool.

This design has enabled a number of other systems to build atop Kubernetes.

Kubernetes是一个怎样的平台?

尽管Kubernetes已经提供了很多功能,但依旧能在新的应用场景中获取新的功能。

可以简化特定应用程序的工作流程以提高开发人员的效率。

最初,特定的编排通常需要大规模且健壮的自动化操作。

这就是为什么Kubernetes还被设计成一个构建组件和工具生态系统的平台,以便更容易地部署、扩展和管理应用程序。

标签允许用户随意组织他们的资源。

注释使用户可以用自定义信息装饰资源,以方便其形成工作流,并为管理工具提供一种简单的方法来检查状态。

此外,开发人员和用户的Kubernetes控制面板是基于相同的API构建的。

用户可以用自己的API编写自己的控制器(例如调度程序),只要这些API可以被通用命令行工具所操作。

这种设计可以使其他系统都能够在Kubernetes的基础上构建。


What Kubernetes is not

Kubernetes is not a traditional, all-inclusive PaaS (Platform as a Service) system. Since Kubernetes operates at the container level rather than at the hardware level, it provides some generally applicable features common to PaaS offerings, such as deployment, scaling, load balancing, logging, and monitoring. However, Kubernetes is not monolithic, and these default solutions are optional and pluggable. Kubernetes provides the building blocks for building developer platforms, but preserves user choice and flexibility where it is important.

Kubernetes:

  • Does not limit the types of applications supported. Kubernetes aims to support an extremely diverse variety of workloads, including stateless, stateful, and data-processing workloads. If an application can run in a container, it should run great on Kubernetes.
  • Does not deploy source code and does not build your application. Continuous Integration, Delivery, and Deployment (CI/CD) workflows are determined by organization cultures and preferences as well as technical requirements.
  • Does not provide application-level services, such as middleware (e.g., message buses), data-processing frameworks (for example, Spark), databases (e.g., mysql), caches, nor cluster storage systems (e.g., Ceph) as built-in services. Such components can run on Kubernetes, and/or can be accessed by applications running on Kubernetes through portable mechanisms, such as the Open Service Broker.
  • Does not dictate logging, monitoring, or alerting solutions. It provides some integrations as proof of concept, and mechanisms to collect and export metrics.
  • Does not provide nor mandate a configuration language/system (e.g., jsonnet). It provides a declarative API that may be targeted by arbitrary forms of declarative specifications.
  • Does not provide nor adopt any comprehensive machine configuration, maintenance, management, or self-healing systems.

Additionally, Kubernetes is not a mere orchestration system. In fact, it eliminates the need for orchestration. The technical definition of orchestration is execution of a defined workflow: first do A, then B, then C. In contrast, Kubernetes is comprised of a set of independent, composable control processes that continuously drive the current state towards the provided desired state. It shouldn’t matter how you get from A to C. Centralized control is also not required. This results in a system that is easier to use and more powerful, robust, resilient, and extensible.

Kubernetes不是什么

Kubernetes不是一个传统的、包罗万象的PaaS(平台即服务)系统。由于Kubernetes是在容器级别而不是硬件级别运行的,因此它提供了一些通常适用于PaaS产品的特性,例如部署、扩展、负载平衡、日志记录和监视。但是,kubernetes不是单片的,这些默认的解决方案是可选的和可插入的。Kubernetes为构建开发人员平台提供了构建块,但在重要的地方保留了用户选择和灵活性。

Kubernetes:

  • 不限制支持的应用程序类型。Kubernetes旨在支持各种各样的工作负载,包括无状态、有状态和数据处理工作负载。如果一个应用程序可以在容器中运行,那么它应该在kubernetes上运行得很好。
  • 不部署源代码,也不生成应用程序。持续集成、交付和部署(CI/CD)工作流由组织文化和偏好以及技术要求决定。
  • 不提供应用程序级服务,如中间件(如消息总线)、数据处理框架(如Spark)、数据库(如MySQL)、缓存,也不作为内置服务提供集群存储系统(如CEPH)。这些组件可以在kubernetes上运行,和/或通过可移植的机制(如开放服务代理)在kubernetes上运行的应用程序可以访问这些组件。
  • 不指示日志记录、监视或警报解决方案。它提供了一些集成作为概念证明,以及收集和导出度量的机制。
  • 不提供也不要求配置语言/系统(如jsonnet)。它提供了一个声明性API,可以以任意形式的声明性规范为目标。
  • 不提供或采用任何综合的机器配置、维护、管理或自愈系统。

此外,Kubernetes不仅仅是一个编排系统。实际上,它消除了对编排的需要。编排的技术定义是执行一个已定义的工作流:首先执行A,然后执行B,然后执行C。相反,Kubernetes由一组独立的、可组合的控制过程组成,这些过程持续地将当前状态驱动到所提供的所需状态。无论你从A到C怎么走都不重要。也不需要集中控制。这就产生了一个更易于使用、更强大、更健壮、更具弹性和可扩展性的系统。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐