目录
序言
1简介
1.1 物理机时代
物理服务器的缺点
1.2 虚拟机
虚拟机优缺点
1.3 容器时代
1.4 总结
2 容器编排
2.1 什么是容器编排
序言
人生犹如一股奔流,没有暗礁,激不起美丽的浪花。
三言两语,不如细心探索
今天学习一下K8s架构相关内容,希望此文,能帮助读者对K8s架构有一个初步的了解
文章标记颜色说明:
- 黄色:重要标题
- 红色:用来标记结论
- 绿色:用来标记一级论点
- 蓝色:用来标记二级论点
1简介
在介绍K8S架构之前,先介绍一下服务器的演变过程:
- 物理机时代
- 虚拟机时代
- 容器化时代
1.1 物理机时代
物理服务器是指独立服务器,也就是指物理上的单独服务器,
物理服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似
物理机,对应采购的服务器设备,又叫裸设备,是相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境
物理服务器的缺点
- 部署慢 :每台服务器都要安装操作系统、相关的应用程序所需要的环境,各种配置
- 成本高:物理服务器的价格十分昂贵
- 资源浪费:硬件资源不能充分利用
- 迁移成本高:扩展和迁移需要重新配置一模一样的环境
- 产品性能:难以确保获得持续可控的产品性能
- 管理能力高:日趋复杂的业务管理能力
- 扩展能力低:服务环境缺乏灵活的业务弹性
1.2 虚拟机
虚拟机,与现在流行的“云计算”的概念的有着紧密联系
虚拟机的概念在IaaS层,即基础设施即服务部分,
在几百上千台物理机上部署虚拟化软件,如vmware等等,使得他们的表现就像一台巨大的计算机。
同时它还具有灵活性和解耦性,可以在一台物理机上部署10台虚拟机,使得一台物理机的表现就像10台性能略差的服务器,当不需要他们时,
又可以随时的回收资源重新分配。
虚拟机优缺点
虚拟机时代很好的解决了物理机时代的缺点,虚拟机时代的优缺点:
优点:
- 易部署-集中化管理:每台物理机可部署多台虚拟机,且可以通过模板,快照等方式,快速部署,成本低
- 资源池-提高硬件利用率:开出来的虚拟机可作为资源池备用,充分压榨服务器性能
- 资源隔离:每个虚拟机都有独立分配的内存磁盘等硬件资源,虚拟机之间不会互相影响
- 易扩展-高可靠性:把操作系统和应用程序与服务器硬件分离开来,增强的灵活性,随时都能在一个物理机上创建或销毁虚拟机
缺点:
- 降低性能:当一台物理机上并行运行多个虚拟机时,物理机资源的使用率越高,虚拟机性能下降的越剧烈
- 实施配置复杂,管理复杂:IT管理员并不能很好的排查并解决虚拟化使用过程中的问题
- 建设成本不低:前期建设成本甚至有可能超过单买PC机的价格。
1.3 容器时代
容器,也是虚拟层的概念,相对虚拟机而言,容器更加轻量级。容器技术的代表就是docker
虚拟机中需要模拟一台物理机的所有资源,比如要模拟出有多少CPU、网卡、显卡等等,这些都是在软件层面通过计算资源实现的,这就给物理机凭空增加了不必要的计算量。
容器仅仅在操作系统层面向上,对应用的所需各类资源进行了隔离。
这也是为何微服务、PaaS和Docker如此火爆的原因,
- 资源消耗少
- 迁移部署简单
- 成本低
注意:容器可以建在物理机和虚拟机上。一个物理机可以建很多个容器。每个容器都是一个小系统。比虚拟机消耗更少
优点:
- 更高效的利用硬件资源:所有容器共享主机操作系统内核,不需要安装操作系统。
- 一致的运行环境:相同的镜像产生相同的行为
- 更小:较虚拟机而言,容器镜像更小,因为不需要打包操作系统
- 更快:容器能达到秒级启动,其本质是主机上的一个进程
1.4 总结
- 一台物理机上可以部署多个虚拟机
- 一个虚拟机,可以运行多个容器
- 资源的利用单元,越来越小
2 容器编排
容器时代,成千上万的容器运行,需要按照一定的管理规则,这就延伸出了容器编排
2.1 什么是容器编排
容器编排是指自动化容器的部署、管理、扩展和联网。
容器编排可以为需要部署和管理成百上千个容器和主机的企业提供便利。
容器编排可以实现自动化和管理任务:
- 置备和部署
- 配置和调度
- 资源分配
- 容器可用性
- 根据平衡基础架构中的工作负载而扩展或删除容器
- 负载平衡和流量路由
- 监控容器的健康状况
- 根据运行应用的容器来配置应用
- 保持容器间交互的安全
容器编排工具提供了用于大规模管理容器和微服务架构的框架。容器生命周期的管理有许多容器编排工具可用。
一些常见的方案包括:Kubernetes、Docker Swarm 和 Apache Mesos。
Kubernetes 是一个最初由 Google 工程师开发和设计的开源容器编排工具。2015 年,Google 将 Kubernetes 项目捐赠给新成立的云原生计算基金会。
Kubernetes 编排功能,可以构建跨多个容器的应用服务、跨集群调度容器、扩展这些容器,并长期持续管理它们的健康状况。
Kubernetes 可以省去应用容器化过程的许多手动部署和扩展操作。可以将运行 Linux 容器的多组主机(物理机或虚拟机)聚集在一起,由 Kubernetes 平台来轻松高效地管理这些集群。