基于Harvester实现容器与虚拟机的混合应用架构
如果无法正常显示,请先停止浏览器的去广告插件。
1. 基于Harvester实现
容器与虚拟机的混合应用
张志龙
SUSE 解决方案架构师
2.
3. 张志龙
SUSE 中国北区担任解决方案架构师
擅长K8S容器技术,曾从事基础架构运维、解决方
案设计工作,具备丰富的架构设计和项目实施经
验 。
4. • 容器与虚拟化平台割裂的痛点
• Harvester架构简介
• Harvester功能简介
• 案例:容器与虚拟机混合应用
5. 开发和部署模式的演变
~ 1980
开发流程 应用架构 部署形式 基础设施
瀑布模式 单体架构 物理机 数据中心
敏捷开发 分层架构 虚拟机 托管
DevOps 微服务架构 容器 云
~ 1990
~ 2000
~ 2010
至今
Plan
Monitor
Code
Operat
e
Build
Deply
Test
Releas
e
6. 数据中心架构的演变
集计算、存储、网络和相关的管理
功能于一体,通过软件定义的方式
提供基础架构。
Virtualization
Server
Ser
Server
ver
•
Server
Virtualization
Server Server Server Server
Server Server Server Server
Network
Storage
• 降低成本: 由通用的服务器代替
专用的计算、存储软硬件设备
• 简化管理:更简单的配置和集中
化的管理
• 弹性伸缩:服务器和存储的扩缩
容更加容易和快速
HCI
7. 虚拟机+容器:用户必然面临的场景
容器需求量呈指数增长 虚拟化技术非常成熟
预计到2024年底,75%的企业使用容器管理软件
(Gartner) 超过90%的企业正在使用服务器虚拟化技术
数据来源:Gartner - Forecast Analysis: Container Management
(Software and Services), Worldwide 29 May 2020
数据来源:Spiceworks - The 2020 State of Virtualization Technology
https://www.spiceworks.com/marketing/reports/state-of-virtualization
8. 同时构建虚拟化和容器平台带来的问题
Kubernetes Cluster
Application
Application
企业已有虚拟化/HCI平台,新建一套容器平台,可能存在如下
VM
Application
Control Plane
Node
Node
Node Node
Node Node
01 新建容器平台+已有虚拟化平台
Legacy App
的问题:
• 两个平台完全独立,各自为政
• 技术栈完全不同,难以集成
Database etc.
VM
02 虚拟化厂商提供容器解决方案
由已有的虚拟化/HCI厂商提供自己的容器解决方案,消除割裂
VM
的问题,可能面临新的问题:
• 多为专有的、闭源的方案,投入大
• 用户完全锁定在特定的生态系统/解决方案
9. 容器与虚拟化平台割裂的痛点与需求
01 统一管理
02 统一编排
03 降本增效
各类虚拟化基础设施与Kubernetes采 以应用为中心的DevOps协作方式往往 现有虚拟化/HCI平台并不是为了容器
用不同的技术栈,各自的运维管理工 需要统一的应用编排方式,以便于快 和虚拟机工作负载之间的集成而设计
具和方法不同,避免为构建平台而陷 速的应用更新迭代。虚拟机及容器等 的,在此基础上满足容器环境的解决
入简单的技术栈堆叠中,增加管理复 各种资源对象如果可以通过标准的描 方案是昂贵的,不是开源的,需要额
杂度和不必要的资源投入,需要可靠 述文件进行定义和编排,实现“基础设 外的授权;而且二者的技术栈难以集
的解决方案简化混合环境的管理运 施即代码”。 成,构建敏捷的基础设施变得困难,
维。
阻碍了业务创新、迭代增长的能力。
10. Harvester的应对之道
采用云原生现代技术
基于Kubernetes、Longhorn、KubeVirt等技术实现,提供完整的HCI功
能,虚拟化与容器采用相同的技术栈,保障基础设施跟随技术发展趋势,
为基础设施创新提供可能。
降低基础设施复杂度
提供生产就绪的用户体验,与Rancher集成,提供统一的管理UI和API接
口,多租户的认证和基于角色的访问控制,实现从数据中心到边缘侧的容
器和虚拟机管理能力。
100%开源、开放、可互操作的
超融合基础架构解决方案
https://github.com/harvester/harvester
降级基础设施构建成本
100%开源,没有锁定,不依赖复杂的硬件,减少用户对专有解决方案的
依赖,在不影响功能的前提下,有效的降低同时构建虚拟化平台和容器平
台的成本。
11. 应用场景:虚拟机+K8S混合管理
针对需要从单一管理平面同时管理虚拟机和容器的场景
12. 应用场景:虚拟机管理
针对以虚拟机类型工作负载为主的场景
13. 应用场景:Kubernetes管理
针对需要将基础设施变为Kubernetes的场景
14. 应用场景:混合云管理
使用Rancher统一管理公有云、数据中心、边缘场景的虚拟机和Kubernetes
15. • 容器与虚拟化平台割裂的痛点
• Harvester架构简介
• Harvester功能简介
• 案例:容器与虚拟机混合应用
16. Harvester架构概览
RKE2
17. Harvester架构-操作系统
• 基于OpenSUSE Kernel的定制化OS,支持一键式升级的
不可变基础设施架构
•
当前版本内核为OpenSUSE Leap 15.3
•
基于OCI镜像,支持A/B模式升级
• 内置K8S集群(默认为RKE2)
•
自动安装并支持基于Harvester进行升级
• 系统支持Cloud-init样式的配置
• 基于Kubernetes Operators的运维模式
18. Harvester架构-编排引擎(RKE2)
基于Kubernetes,提供分布式的调
度与管理:
•
自动恢复
•
弹性伸缩
•
统一的API风格(/api/v1)
•
容器化应用管理
•
强大的生态系统
19. Harvester架构-计算(KubeVirt)
Kubevirt提供了基于KVM的虚拟化支持,通过
CRD定义Libvirt的API接口配置,kubevirt创
建虚拟机的核心就是:创建了一个特殊的
pod virt-launcher,其中的子进程包括libvirt
和qemu。
(1)
(3)
(1)client 向 k8s API server 发送创建VMI
命令,K8S API 创建VMI
(2)virt-controller监听到VMI创建时,根据
VMI spec生成pod spec文件
(3)k8s根据pod spec 调度并创建pods
(4)virt-controller监听到pods创建后,根
据pods的调度node,更新VMI 的nodeName
(5)virt-handler监听到VMI nodeName与自
身节点匹配后,与pod内的virt-launcher通信,
virt-laucher创建虚拟机,并负责虚拟机生命
周期管理
(3)
(5)
(2) (4)
20. Harvester架构-存储(Longhorn)
Longhorn提供高可用、分布式块存
储,向虚拟机提供磁盘,以及作为
K8S的存储类向工作负载提供存储。
•
•
•
支持NVMe与SSD类型硬盘
支持ext4与xfs格式文件系统目录
内置Longhorn UI
(https://{{HARVESTER_IP}}/dashboard/c/lo
cal/longhorn)
21. Harvester架构-网络
• 集群内置管理网络(Canal)
•
为虚拟机提供临时的IP(重启后变化)
•
支持集群内服务直接的相互通讯和集
群内主机可达
• 多网卡支持与VLAN网络
•
支持多网卡Bond冗余
•
交换机需开启Trunk模式
•
可添加Untagged Vlan(默认PVID 1)
•
支持不同Vlan间的网络隔离
•
未来支持每个Vlan使用一个独立物理
网卡
22. • 容器与虚拟化平台割裂的痛点
• Harvester架构简介
• Harvester功能简介
• 案例:容器与虚拟机混合应用
23. Harvester的安装部署
•
•
•
•
•
•
•
•
•
环境配置与安装
支持ISO、USB、PXE安装
支持在线/离线环境安装
交互式安装过程
组建集群
支持多个节点组建为一个集群
前三个节点自动组成高可用的管
理节点,同时可作为工作节点
其余节点为工作节点
快速横向扩容
24. Harvester功能概览
• 主机管理
• 节点维护、封锁节点、节点磁盘管理
• 虚拟机管理
• CRUD、SSH key注入、Cloud-init
• 备份恢复、热迁移、热插拔
• 图形和串口控制台
• 卷管理
• 生命周期管理
• 卷克隆
• 导出为虚拟机
• 镜像管理
• 支持ISO、raw、qcow2格式
25. Harvester功能概览
•
•
•
•
•
•
•
•
•
•
•
模板管理
内置iso、raw格式镜像的虚拟机模板
支持linux、windows的虚拟机模板
支持Cloud-init的网络和用户数据模板
备份/恢复管理
在虚拟机上执行备份,支持备份到 nfs、S3
支持恢复到元虚拟机,或恢复为新虚拟机
网络管理
支持使用K8S的管理网络或VLAN网络
支持使用不同VLAN隔离虚拟机
VLAN支持DHCP或手配置
26. Harvester与Rancher集成
• 虚拟化管理
• 利用Rancher管理多个Harvester集群
• 利用Rancher的认证和RBAC实现多租
户管理
• Harvester主机驱动
• 虚拟机模板管理
• 从Rancher中直接在Harvester集群中
创建K8S(rke/rke2/k3s)集群,不用
事先创建虚拟机
• Harvester Cloud Provider
• 为K8S提供负载均衡器
• 为K8S提供持久化存储
27. 基于UI和Yaml的资源管理
28. • 容器与虚拟化平台割裂的痛点
• Harvester架构简介
• Harvester功能简介
• 案例:容器与虚拟机混合应用
29. 应用案例:虚拟机和容器统一管理架构
30. 应用案例:整体部署架构
•
3 Master + N Worker
• 容器和虚拟机统一管理
•
Rancher管理Harvester
•
Rancher管理Kubernetes
•
Harvester管理虚拟机
• 混合应用
•
同一套应用部分容器化、部
分虚拟化部署
•
低优先级的应用虚拟化部署
•
遗留无法改造的应用虚拟化
部署
31. 应用案例:服务器及网络配置
• 磁盘配置
• 系统盘Raid1
• Longhorn数据盘直通
• 管理网、业务网分离
• 管理网卡配置IP地址,安装时可选择
多个网卡做bond
• 业务网卡不配置IP地址,直接接入交
换机
• 交换机配置
• 管理网配置Access模式(或者Trunk
模式同时配置PVID)
• 业务网配置Trunk模式,允许对应
Vlan通过
32. 应用案例:通用虚拟机模板配置
• 实例配置
• CPU、内存计算资源
• 磁盘存储资源
• 操作系统镜像
• Vlan网络资源
• Cloud-init初始化配置
• 配置网络数据
• 配置用户数据
• 安装业务软件
33. 应用案例:K8S节点虚拟机模板配置
• 实例配置
• CPU、内存计算资源
• 磁盘存储资源
• Vlan网络资源
• 操作系统镜像
• Cloud-init初始化配置
• 配置网络数据
• 配置用户数据
• K8S节点配置
• 标签、污点配置
• Docker引擎配置
34. 应用案例:利用主机驱动创建K8S集群
• 配置主机池
• 选择主机模板
• 定义主机角色
• 配置主机数量
• 配置K8S
• 选择K8S版本
• 选择网络插件
• 配置K8S组件参数
• 创建K8S
• 自动创建节点
• 自动安装docker
• 自动安装K8S
35. 用户案例:利用流水线发布容器和虚拟机
•
•
•
•
•
•
•
•
•
基础设施即代码
所有对象以K8S资源进行编排
利用cloudinit初始化虚拟机及安装运
行软件
发布和更新
使用GitOps理念,将资源发布到git
仓库
Fleet监听仓库的变化,部署资源到
目标K8S集群
Fleet将虚拟机资源部发布到
Harvester
Fleet将容器资源发布到K8S
更新K3S集群版本
36. Harvester资源参考
• 源代码及ISO:https://github.com/harvester/harvester
• 官方文档:https://docs.harvesterhci.io
• 官方公众号: Rancher
37.
38.