在了解Kubernetes
之前,我们十分有必要先了解一下应用程序部署的发展历程,下面让我们一起来看看!
应用部署的发展历程
我们先来看看应用程序部署的3个阶段:从物理机部署到虚拟机部署,再到容器化部署,他们之间有何优劣势呢?
1、物理机部署 :多个应用进程部署在同一个物理机上,但是容易出现进程间抢占资源的问题。
2、虚拟机部署 :虚拟化技术出现,从物理机虚拟出多个虚拟机,每台虚拟机部署一个应用进程,不同的虚拟机上运行不同的进程,没有资源冲突,从而解决了进程间资源抢占的问题。但是在集群部署的情况下,文件的版本和配置文件容易碎片化,当线上出现问题时,排查问题很棘手。而且由虚拟机管理系统负责控制和管理所有的虚拟机,这也造成了额外的性能、存储、网络开销。
3、容器部署 :容器技术的出现,解决了虚拟机部署的痛点。容器技术通过镜像文件,如果要修改软件版本,只需要修改镜像文件,部署时所有容器重新拉取新的镜像,所以解决了软件版本的问题。
可以看到,所有的技术并不是凭空出现的,他一定是为了解决某些问题,容器技术的出现无疑是应用部署的里程中最闪亮的星之一。
虚拟机和容器部署的特性对比:
容器技术相较于虚拟机来说,在性能、内存、运行密度、迁移性等各个方面都具有较大的优势。
Docker 是容器化部署的课代表!Docker
相比传统的虚拟机技术更轻量级,它可以将应用程序打包成容器镜像,每个容器都具有自己的应用程序和系统依赖,并共享宿主机的操作系统内核和系统资源。容器启动和停止比较快,占用的系统资源比虚拟机少, Docker
适用于快速部署和迁移应用程序的场景。
使用Docker部署的优势是什么?
- 更快速的交付和部署:使用
Docker
镜像可以快速构建应用程序的运行环境,快速的创建和删除容器,实现快速迭代。 - 更高效的资源利用:
Docker
是内核级的虚拟化,不需要额外的虚拟机管理系统,相比传统虚拟机方式能够更高效的利用硬件资源。 - 更轻松的迁移和扩展:由于
Docker
确保了执行环境的一致性,使得应用的迁移更加容易。Docker
可以在任意平台上运行,支持主流的操作系统版本,用户可以在不用的平台之间轻松的迁移应用 - 更简单的更新管理:使用
DockerFile
只需要简单的修改版本,就可以替代大量的更新工作。
📢 相比物理机和虚拟机,Docker容器技术的优势显而易见,但是Docker仍然有以下问题没有解决:比如无法实现自动化扩容和故障后的自愈,但是在企业级应用来说,通常有成千上万的容器,这使得管理起来极其的复杂,此时,就需要容器编排系统来解决这些问题。
为了解决自动扩缩容和故障后自愈等问题,容器编排技术应运而生!
Kubernetes起源与发展
Kubernetes起源
所谓容器编排技术,就是为了更好的管理和部署容器化的应用程序!容器编排系统提供了如下的能力:
- 集群管理与基础设施抽象:将多个虚拟机或物理机构建成协同运行的集群,并将这些硬件基础设施抽象为一个统一的资源池
- 资源分配和优化:基于配置清单中指定的资源需求与现实可用的资源量,利用成熟的调度算法合理调度工作负载
- 应用部署:支持跨主机自动部署容器化应用,支持多版本并存、滚动更新和回滚
- 应用伸缩:支持应用实例规模的自动或手动伸缩
- 应用隔离:支持为租户、项目或应用进行访问隔离
- 服务可用性:利用状态能监测和应用重构等机制确保服务始终健康运行
目前比较流行的容器编排技术开源框架有如下几种,其中 Kubernetes
是最流行的:
Kubernetes:
是目前最流行的容器编排工具之一,由Google开发并维护。它提供了完整的容器编排解决方案,包括自动化部署、资源管理和调度、服务发现和负载均衡等功能。Docker Swarm
:是Docker官方提供的容器编排工具,支持自动扩展和管理多个Docker主机上的容器。它提供了简单的命令行界面和RESTful API,方便用户进行操作和管理。Apache Mesos
:是Apache软件基金会的一个项目,旨在提供一个可扩展的分布式系统内核,支持多种编程语言和应用程序。它提供了资源管理和调度功能,可以管理多个容器实例和集群中的任务。Nomad
:是一个轻量级的容器编排工具,支持跨平台和多云环境。它提供了简单易用的API和CLI工具,方便用户进行操作和管理。
⭐️ Kubernetes
一词源于希腊语,意为“舵手”或“飞行员”。因为 K
和s
中间有8个单词(ubernete
),又简称K8s
。它最初是由Google
基于GO语言
开发的,旨在简化容器部署和管理。Kubernetes
的设计灵感来自于Google
内部使用的Borg
系统,而Borg
系统则是由Google
工程师根据他们在大规模应用程序管理方面的经验开发的,用于调度数十亿的容器和工作负载。
此后,谷歌基于在公有云底层基础设施方面商业增长的考虑,开发了 Kubernetes
并进行了开源。
Kubernetes发展
Kubernetes
的发展历程可以分为以下几个阶段:
- 2014年6月 谷歌云计算专家 Eric Brewer在旧金山的发布会上为这款开源工具揭牌。
- 2015年7月 Kubernetes迭代到 v1.0并在OSCON大会上正式对外公布。
- 2015年 CNCF基金会成立,Kubernetes 成为CNCF最为核心的项目之一。
- 2018年 超过1700开发者成为 Kubernetes 项目社区的贡献者,全球有500多长沙龙
- 2020年 Kubernetes 项目成为贡献者仅次于 Linux项目的第二大开源项目,各大厂商纷纷宣布支持 Kubernetes 作为容器编排的解决方案。
- 2023年
贡献者
3458,starts
99.6k,forks
36.6k ,数百家厂商和技术社区共同共建了非常强大的云原生生态!
🎉 如果喜欢这篇文章,点赞👍 收藏⭐ 关注 ✅ 哦,创作不易,感谢!😀