什么是 Kubernetes


一、什么是Kubernetes

Kubernetes(简称 K8s),K8s 是云原生生态的核心组件,也是云技术最核心的内容。

k8s 是一个开源的容器编排平台。它的主要目标是自动化部署、扩展和管理容器化应用程序。

k8s 也是一个全新的基于容器技术的分布式架构领先方案,确切地说,Kubernetes是谷歌严格保密十几年的秘密武器Borg的一个开源版本。

Borg 是谷歌内部使用的大规模集群管理系统,它基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。

1.png

环境不一致使得应用部署出现了各种问题,从而产生了Docker容器来解决应用部署的问题。而大集群上容器的部署、伸缩和管理的各种问题,衍生出来了容器编排引擎,比较出名的有K8S(Kubernetes) 和 Docker Swarm。

Kubernetes是一个针对容器应用,进行自动部署,弹性伸缩和管理的开源系统。主要功能是生产环境的容器编排,Kubernetes名字太长了,叫起来有点麻烦,而Kubernetes首字母与结尾字母之间有8个字母,因此被称作K8S。

如果我们使用Kubernetes:

1、与业务无关的底层代码或功能模块,都可以立刻从我们的视线中消失

2、不必再费心于负载均衡器的选型和部署实施问题

3、不必再考虑引入或自己开发一个复杂的服务治理框架

4、不必再头疼于服务监控和故障处理模块的开发

二、Kubernetes发展史

K8S是建立在谷歌内部有超过15年的历史,来源于谷歌内部的Borg系统,集结了Borg的精华。

2014年6月 谷歌云计算专家埃里克·布鲁尔(Eric Brewer)在旧金山的发布会为这款新的开源工具揭牌。

2015年7月22日K8S迭代到 v 1.0并正式对外公布

大约每100天更新一次,如今已是 1.29.2 版 (发布日期: 2024-02-14)

三、Kubernetes架构图

Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统。Borg是谷歌内部的大规模集群管理系统,负责对谷歌内部很多核心服务的调度和管理。Borg的目的是让用户不必操心资源管理的问题,让他们专注于自己的核心业务,并且做到跨多个数据中心的资源利用率最大化。

2.png

Kubernetes借鉴了Borg的设计理念,整体架构跟Borg非常像,如下图所示:

3.png

四、Kubernetes特点

Kubernetes是一个开放的开发平台,它不局限于任何一种语言,没有限定任何编程接口,所以不论是用Java、Go、C++还是用Python编写的服务,都可以被映射为Kubernetes的Service(服务),并通过标准的TCP通信协议进行交互。此外,Kubernetes平台对现有的编程语言、编程框架、中间件没有任何侵入性,因此现有的系统也很容易改造升级并迁移到Kubernetes平台上。

Kubernetes作用

Kubernetes提供了完善的管理工具(开发、部署、测试、运维、监控)因此,Kubernetes是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式完备的分布式系统开发和支撑平台。

Kubernetes同时具有完备的集群管理能力:

1、故障自愈

2、服务发现与负载均衡

3、自动部署与回滚

4、自动伸缩(扩容与缩容)

Kubernetes 的一些关键特性和用途:

1.容器编排

  • 自动化部署:Kubernetes 可以自动化地部署应用程序容器,并通过滚动更新或回滚来管理应用的升级过程。
  • 负载均衡:Kubernetes 可以自动将流量分配到多个容器实例,确保服务的高可用性和负载均衡。

2.扩展和管理

  • 自动扩展:Kubernetes 可以根据资源使用情况自动扩展或缩减应用程序的实例数量,以适应流量或资源需求的变化。
  • 自愈能力:如果某个容器或节点发生故障,Kubernetes 可以自动重启或重新调度容器,确保应用程序的持续运行。

3.存储管理

  • 持久化存储:Kubernetes 支持多种存储解决方案,可以为应用程序提供持久化存储。
  • 存储编排:Kubernetes 可以动态地为应用程序分配存储资源,并管理存储的生命周期。

4.服务发现和负载均衡

  • 服务发现:Kubernetes 提供了内置的服务发现机制,使得不同的服务可以相互发现和通信。
  • 负载均衡:Kubernetes 支持多种负载均衡策略,确保流量在多个容器实例之间均匀分布。

5.配置和密钥管理

  • 配置管理:Kubernetes 允许用户通过配置文件或环境变量来管理应用程序的配置。
  • 密钥管理:Kubernetes 提供了安全的密钥管理机制,用于存储和管理敏感信息,如数据库密码或 API 密钥。

6.多环境支持

  • 混合云和多云:Kubernetes 可以在不同的云环境(如 AWS、Azure、Google Cloud)和本地数据中心中运行,实现混合云和多云部署。
  • 集群管理:Kubernetes 可以管理多个集群,允许用户跨多个集群部署和管理应用程序。

7.社区和生态系统

  • 丰富的插件和扩展:Kubernetes 拥有一个庞大的社区和生态系统,提供了大量的插件和扩展,用于增强 Kubernetes 的功能。
  • 持续演进:Kubernetes 是一个活跃的开源项目,不断引入新的特性和改进,以满足不断变化的容器化需求。

五、谁在用k8s

Kubernetes(K8s)已经成为容器编排领域的行业标准,许多大型企业和中小型公司都在使用它。以下是一些广泛使用 Kubernetes 的知名公司:

1.Google Google Kubernetes Engine (GKE):Google 是 Kubernetes 的创始者之一,它的 GKE 是托管的 Kubernetes 服务,广泛用于管理和部署容器化应用。

2.Amazon Amazon Elastic Kubernetes Service (EKS):Amazon 提供了一个托管的 Kubernetes 服务,EKS,帮助用户在 AWS 上轻松运行和管理 Kubernetes 集群。

3.Microsoft Azure Kubernetes Service (AKS):Microsoft Azure 提供了 AKS,一个托管的 Kubernetes 服务,帮助用户在 Azure 云上部署、管理和扩展容器化应用。

4.IBM IBM Cloud Kubernetes Service:IBM 提供了一个托管的 Kubernetes 服务,帮助用户在 IBM Cloud 上运行和管理容器化应用。

5.Red Hat OpenShift:Red Hat 的 OpenShift 是一个企业级的 Kubernetes 平台,提供了额外的功能和集成,如 CI/CD、存储管理等。

6.阿里巴巴 Alibaba Cloud Container Service for Kubernetes (ACK):阿里巴巴提供了 ACK,一个托管的 Kubernetes 服务,帮助用户在阿里云上管理容器化应用。

7.腾讯 Tencent Kubernetes Engine (TKE):腾讯云提供了 TKE,一个托管的 Kubernetes 服务,帮助用户在腾讯云上部署和管理容器化应用。

8.Uber Uber 使用 Kubernetes 来管理其大规模的微服务架构,确保应用的高可用性和可扩展性。

9.eBay eBay 使用 Kubernetes 来管理和扩展其电子商务平台,提高应用的可靠性和性能。

10.GitHub GitHub 使用 Kubernetes 来管理其代码托管平台,确保应用的高性能和可扩展性。

总结

许多大型企业和中小型公司都在使用 Kubernetes 来管理和扩展他们的容器化应用。由于其强大的功能和广泛的社区支持,Kubernetes 已经成为现代云原生应用开发和部署的首选平台之一。

Kubernetes 是一个强大的容器编排平台,广泛应用于生产环境中,帮助企业实现高效、可靠的容器化应用部署和管理。