目的
在 kubernetes 中调用 VMI
VMI 可以运行 centos, windows 镜像
本地数据盘的使用方法
kubernetes 连接 ceph , 调用 RBD 作为 VMI 数据盘的使用方法
网络说明
如果外部网络可以直接访问到 VMI 建议使用 OVS + netplugin 平面网络模型
如果只用 VNC 连接到 VMI, 那么可以使用 flannel 网络使用私有网络模型
VMI 工作原理
kubernetes 依旧按照以往的方式管理 POD 及其他资源
VMI 由 pod 中 virt-launcher 进程启动
VMI 资源是由 virt-launcher 启动时候分配, (kubernetes 只可以直接管理 POD 资源, 如 CPU, 内存等)
如果需要对 VMI 启动盘数据进行永久性保存, 那么需要在 k8s node 上保存 VMI RAW 镜像文件
如果不需要对 VMI 启动盘数据进行永久性保存, 那么可以通过 docker pull 方式获取启动盘
kubernetes 启动 POD (virt-lanuncher 会读取本地 RAW 镜像, 启动 VMI )
iscsi 作为 VMI 云盘工作原理
ceph 集群创建 rbd 文件 (计划用于 VMI 数据盘保存数据)
ceph 集群使用 iscsi gw 模拟 iscsi 协议, 共享 RBD 文件
kubernetes node 节点需要配置为 iscsi initialtor 获取 iscsi target, 把 RBD 文件虚拟为本地设备如 /dev/sdb
kubernetes 中配置 PV, PVC 并绑定至 VMI 上
kubernetes node 启动 POD (运行 virt-launcher 用于启动 VMI)
kubernetes node 把 iscsi target ( /dev/sdb ) 进行格式化 (ext4) 并挂载到 pod ( virt-launcher ) 中, 并在对应目录中创建 1.img
kubernetes 启动 POD (virt-lanuncher 会读取本地 RAW 镜像, 启动 VMI ), 并通过 libvirt 对 1.img 进行磁盘虚拟化,虚拟主机总线 virtio , 在 VMI 中模拟为 /dev/vdc 设备
缺点: 所有 VMI 对云盘数据操作最终需要由网络转发至 CEPH GW 保存至 CEPH 中, 那么 CEPH GW 会成为网络瓶颈所在
CEPH 直接连接 KUBERNETES 作为 VMI 云盘工作原理
ceph 集群创建 rbd 文件 (计划用于 VMI 数据盘保存数据)
kubernetes 中配置连接 CPEH, 并把 RBD 定义为 PV, PVC 并绑定至 VMI 上
kubernetes node 启动 POD (运行 virt-launcher 用于启动 VMI)
kubernetes node 把 ceph rbd 文件通过 MAP 方式进行映射, 如(/dev/rbd0) 进行格式化 (ext4) 并挂载到 pod ( virt-launcher ) 中, 并在对应目录中创建 1.img
kubernetes 启动 POD (virt-lanuncher 会读取本地 RAW 镜像, 启动 VMI ), 并通过 libvirt 对 1.img 进行磁盘虚拟化,虚拟主机总线 virtio , 在 VMI 中模拟为 /dev/vdc 设备
ISCSI 与 CEPH 直接连接的对比
推荐使用 ceph 连接 kubernetes 方法使用
因为 ISCSI 需要通过 GW 进行调度, 会导致所有网络流量都要经过 iscsi gw 机器,成为最大瓶颈
ceph 直接连接时候, 可以打散流