【k8s连载系列】k8s介绍

k8s是Kubernetes的缩写,Google 于 2014 年开源了 Kubernetes 项目 。
一、k8s的历史演变

【k8s连载系列】k8s介绍

文章插图
k8s的演变过程:首先从传统的服务-->虚拟机部署-->容器部署-->k8s 。
k8s的由来,归根结底是容器的由来 , 搞清楚容器的来历,k8s是在容器的基础上,方便容器管理、维护,包括声明式配置和自动化 。
1、 Docker的由来Docker 是一个开源的应用容器引擎,是一种资源虚拟化技术,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,虚拟化技术演历路径可分为三个时代:
1)物理机时代物理机时代,多个应用程序可能跑在一台物理机器上 。
【k8s连载系列】k8s介绍

文章插图
当多个应用程序跑在一台物理机上的时候,无法为物理机中的应用程序定义资源边界,这会导致资源分配问题 。例如,如果多个应用程序在同一台物理服务器上运行,则可能会出现一个应用程序占用大部分资源,而导致其他应用程序的性能会不佳的情况 。一个解决方案是在不同的物理服务器上运行每个应用程序 。但这并没有扩展,因为资源没有得到充分利用,而且组织维护许多物理服务器的成本很高 。
2)虚拟机时代一台物理机器启动多个虚拟机实例,一个虚拟机跑多个应用程序,每个虚拟机都是完整的独立的系统 。
【k8s连载系列】k8s介绍

文章插图
为了解决多个应用部署在同一台物理机资源分配不均的问题 , 引入了虚拟化 。它可以在单个物理服务器的 CPU 上运行多个虚拟机 (VM) 。应用程序在虚拟机之间可以实现隔离,并提供一定程度的安全性,一个应用程序的信息不能被另一个应用程序自由访问 。
虚拟化更好地利用物理服务器中的资源并有更好的可扩展性,可以轻松添加或更新应用程序 , 降低硬件成本等等 。
每个 虚拟机 都是在虚拟化硬件之上运行所有组件的完整机器,包括它自己的操作系统 。
虚拟机的性能损耗是非常大的
3)容器化时代容器化时代,一台物理机上启动多个容器实例,一个容器跑多个应用程序 。
【k8s连载系列】k8s介绍

文章插图
容器类似于虚拟机,但它们具有松隔离性,可以在应用程序之间共享操作系统(OS) 。因此,容器被认为是轻量级的 。
与 VM 类似,容器有自己的文件系统、CPU 、内存、进程等 。由于它们与底层基础架构分离,因此它们可以跨云和操作系统分布移植 。
容器之所以流行,是因为它们提供了额外的好处,例如:
  • 敏捷的应用程序创建和部署:与使用 VM 映像相比,容器映像创建的简便性和效率更高 。
  • 持续开发、集成和部署:提供可靠且频繁的容器映像构建和部署以及快速高效的回滚(由于映像不变性) 。
  • Dev 和 Ops 的关注点分离:在构建/发布时而不是部署时创建应用程序容器映像,从而将应用程序与基础架构解耦 。
  • 可观察性:不仅可以显示操作系统级别的信息和指标,还可以显示应用程序运行状况和其他信号 。
  • 开发、测试和生产之间的环境一致性:在笔记本电脑上运行与在云中运行环境相同 。
  • 以应用程序为中心的管理:将抽象级别从在虚拟硬件上运行操作系统提高到使用逻辑资源在操作系统上运行应用程序 。
  • 松散耦合、分布式、弹性、自由的微服务:应用程序被分解成更小的、独立的部分,并且可以动态部署和管理——而不是在一台大型单一用途机器上运行的单一堆栈 。
  • 资源隔离:可预测的应用程序性能 。
  • 资源利用:高效率、高密度 。
Docker 由镜像、镜像仓库、容器三个部分组成:镜像: 跨平台、可移植的程序+环境包镜像仓库: 镜像的存储位置,有云端仓库和本地仓库之分,官方镜像仓库地址容器: 进行了资源隔离的镜像运行时环境
2 、从Docker到Kubernetes随着容器的火爆,越来越多的业务系统利用容器来搭建部署,像 Docker 之类的容器引擎,部署少量还可以,但随着业务的增多,服务越来越多,动辄就要使用成百上千的容器,要管理这么多容器,Docker 们就力不从心了 。随着容器技术越来越多的使用 , 出现了很多问题