什么是IaaS
简单来说是一个可以通过调用API或者使用控制台(console)来管理虚拟化基础设施(计算/存储/网络)的服务。有了IaaS之后,用户只需要关注如何安装操作系统/中间件/运行时/应用等。
有什么优势
IaaS能给用户提供无限扩缩的资源能力,可以随时按需创建或销毁,并且只需按实际使用时间付费。
解决用户什么问题
主要是帮助用户降本增效:
不可预测的业务高峰,如何提高资源利用率?
为了能及时响应短时间段内的访问高峰,需要准备大量资源,但高峰过后这些资源完全空闲。
业务高速增长时,如果快速提供资源?
自建的建设周期长,不能快速响应业务增长的资源需求。
homelab期望一个什么样的IaaS
资源和服务
homelab并不需要无限的资源,也不需要应对不可预测高峰的问题,以API方式提供服务来控制和管理资源也不是必选项。
虚拟化
2个主要方向:
硬件资源的虚拟化
在裸金属上实现虚拟化的技术,在独立隔离的虚拟机上运行各自的操作系统,有ZEN/KVM/ESXi等。
操作系统的虚拟化
轻量级的虚拟化,在同一个操作系统上实现进程和资源的隔离,有LXC/Docker/OCI等。
根据最小依赖
原则,IaaS只需要提供给PaaS最基础的操作系统和软件的运行环境即可,其他的功能可以不需要。所以选择:不需要API和控制台 + 裸金属 + 操作系统 + 容器虚拟化
工具链
ESXi
VMWare公司提供的商业软件,支持从裸金属开始自动化安装,支持ESXi和容器。
OpenStack
开源的整套解决方案,包含IaaS/PaaS/SaaS。支持从裸金属开始自动化安装,支持KVM/ZEN和容器。
Proxmox
开源的IaaS。官方暂不支持从裸金属开始自动化安装,需结合第三方工具实现。支持KVM,容器只支持LXC(也就是PaaS层不支持Kubernetes)。
从零开始实现
无论是ESXi/OpenStack还是Proxmox,在裸金属上实现无人值守的自动化的安装操作系统时,都是使用了相同的底层技术:网络启动的PXE/iPXE,自动化安装配置的kickstart/cloud-init。
有了操作系统后,更进一步的软件环境的配置工作,可以使用ansible/chef等开源工具。这些工具以及PaaS需要使用的工具中,都要求能远程通过网络登录和控制操作系统,绝大部分都使用安全可靠的SSH协议。
目标
根据从零开始
和最小依赖
原则,选择的方案:从零开始实现 + 不需要API和控制台 + 裸金属 + 网络启动的自动安装和配置操作系统 + 安全的远程网络操控