一、什么是Kubernetes
Kubernetes(简称 K8s),K8s 是云原生生态的核心组件,也是云技术最核心的内容。
k8s 是一个开源的容器编排平台。它的主要目标是自动化部署、扩展和管理容器化应用程序。
k8s 也是一个全新的基于容器技术的分布式架构领先方案,确切地说,Kubernetes是谷歌严格保密十几年的秘密武器Borg的一个开源版本。
Borg 是谷歌内部使用的大规模集群管理系统,它基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。
环境不一致使得应用部署出现了各种问题,从而产生了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的目的是让用户不必操心资源管理的问题,让他们专注于自己的核心业务,并且做到跨多个数据中心的资源利用率最大化。
Kubernetes借鉴了Borg的设计理念,整体架构跟Borg非常像,如下图所示:
四、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 是一个强大的容器编排平台,广泛应用于生产环境中,帮助企业实现高效、可靠的容器化应用部署和管理。