ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

如何在笔记本上运行RancherVM:从VMware嵌套虚拟化到源码构建的完整指南

如何在笔记本上运行RancherVM:从VMware嵌套虚拟化到源码构建的完整指南 如何在笔记本上运行RancherVM从VMware嵌套虚拟化到源码构建的完整指南【免费下载链接】old-vm(OBSOLETE) Package and Run Virtual Machines as Docker Containers项目地址: https://gitcode.com/gh_mirrors/ol/old-vmRancherVM 是一个可以把 KVM 虚拟机打包成 Docker 容器、并以 Kubernetes Pod 形式运行的开源项目——它让你用管理普通容器的方式轻松管理整台虚拟机。本指南手把手带你用 VMware 嵌套虚拟化在普通笔记本上搭出一套可运行的 RancherVM 环境并教你如何构建虚拟机镜像和从源码构建 RancherVM 本体。一、RancherVM 是什么为什么值得在笔记本上试试RancherVM 的核心思路非常有趣每个 VM Pod 看起来、用起来和普通 Pod 一样但容器内部跑着一个真实的虚拟机实例。你可以把任意 QEMU/KVM 镜像打包成 Docker 镜像推送到任意 Docker 仓库如 DockerHub然后在 RancherVM 上运行。它的主要能力包括Kubernetes API 扩展通过自定义资源CRD声明虚拟机控制器自动创建和维护 VM Pod️Web UI管理公钥、计算节点、虚拟机还能在浏览器里打开 VNC 控制台网络透明Docker 的虚拟网络、端口转发、容器链接对虚拟机同样透明生效项目已标注 OBSOLETE历史归档但作为理解虚拟机即容器这一经典架构的教材依然非常值得一读。二、前置准备先确认这 4 个条件 ✅在动手之前请对照检查以下前提来自官方 README.md 的部署要求条件说明Kubernetes v1.8集群中所有节点都需要KVM 已启用内核级即可无需qemu-kvm、libvirt等用户态工具在 Ubuntu 16.04 上确认/dev/kvm和/dev/net/tun两个设备存在即可同一二层网络所有节点必须在同一个 L2 网络且已有 DHCP 服务器主机桥接网络为 RancherVM 准备桥接网卡详见官方网络文档 docs/networking.md三、VMware 嵌套虚拟化配置最关键的一步⭐在 Windows 或 Mac 笔记本上跑 KVM最省事的办法是VMware Workstation 或 VMware Fusion 的嵌套虚拟化新建一台 Ubuntu 虚拟机强烈建议Ubuntu 18.04 或内核最新的 CentOS旧版本内核的 QEMU 有卡在 Booting from harddisk的已知缺陷打开虚拟机的设置 → 处理器 → 高级勾选Virtualize Intel VT-x/EPT or AMD-V/RVI虚拟化 Intel VT-x/EPT 或 AMD-V/RVI就这一项设置让虚拟机内部拥有了硬件虚拟化能力KVM 才能在其中正常工作。四、用 Vagrant Ansible 一键搭建 KVM 环境 本项目自带了一套完整的实验环境脚本不用手动逐台配置Vagrantfile声明使用vmware_fusionprovider并为每台虚拟机打开vhv.enable即嵌套虚拟化开关machines.yaml定义了两台4 核 4G的虚拟机kvm-01、kvm-02ansible/main.yaml所有虚拟机就绪后由最后一台触发 Ansible 剧本批量完成装仓库、安装 Docker、配置 Docker以及安装qemu-kvm和 NFS工作流程可以概括为三步1️⃣vagrant up启动两台带嵌套虚拟化的 Ubuntu 虚拟机 2️⃣ Ansible 自动在两台机器上装好 Docker KVM NFS 3️⃣ 获得一个可直接部署 RancherVM 的 KVM 环境 小提示如果你只想自己手动搭核心动作也很简单——在 Linux 上装好 Docker、确认/dev/kvm存在即可。五、部署 RancherVM 到 Kubernetes 集群 Kubernetes 和 KVM 都就绪后还有两个网络参数需要在部署文件里确认网卡名在 deploy/ranchervm.yaml 中把ens33一类的网卡名改成每台主机实际的 NIC 名称桥接名把br0桥接设备的名称替换为主机上实际的桥名桥接配置方法见 docs/networking.md 的 Bridge to the Host Network 一节然后一条命令完成部署kubectl create -f deploy/ranchervm.yaml执行后检查 Pod 状态多节点集群正常时会看到如下 4 个组件全部 Running$ kubectl -n ranchervm-system get pods NAME READY STATUS RESTARTS AGE backend-5f5dd7878-5p6rm 1/1 Running 0 1h frontend-5b5d47c669-cnlwn 1/1 Running 0 1h ip-controller-648cdf6854-gkvxj 2/2 Running 0 1h vm-controller-7c5fdbb68d-d8qq8 1/1 Running 0 1h单节点集群的 Pod 数量会少于上面的示例属于正常现象。✅六、访问 Web UI管理虚拟机、密钥与 VNC 控制台查询frontend服务的入口地址$ kubectl -n ranchervm-system get svc/frontend NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE frontend LoadBalancer 10.43.55.38 100.200.200.123 80:31520/TCP 42m集群支持LoadBalancer时直接用EXTERNAL-IP:80访问不支持时用任意节点的公网 IP NodePort 端口示例中为31520打开 UI 后你就可以完成日常操作导入公钥凭据、注册节点、创建虚拟机并在浏览器里连上VNC 控制台看虚拟机的启动画面。️想深入理解架构入口程序 cmd/main.go 展示了后端三件套的组织方式——vm-controllerpkg/controller/vm/controller.go、ip-controllerpkg/controller/ip/ip_controller.go和 REST 后端pkg/server/server.go都编译在同一个二进制中通过命令行参数决定启动哪一部分。七、构建你自己的虚拟机镜像 RancherVM 镜像本质是标准 KVM 镜像推荐压缩 qcow2 Docker 打包。完整教程见官方文档 docs/images.md核心流程制作 KVM 镜像推荐用virt-manager配置 virtio 设备并从 ISO 安装系统产出 qcow2 文件Ubuntu 下默认位于/var/lib/libvirt/images/压缩qemu-img convert -O qcow2 -c myos.img myos.qcow2可缩小 50% 以上体积打包成容器镜像Dockerfile 极简FROM scratch COPY rancheros-0.3.0.qcow2 /base_image/rancheros-0.3.0.qcow2规则只有一条/base_image目录下有且只有一个镜像文件。项目还内置了一整套可直接参考的官方镜像配方包括 Ubuntu、CentOS、Fedora、RancherOS 和 Windows 镜像位于 image/ 目录例如 image/ubuntu/ 和 image/vm-tools/Dockerfile。Windows 镜像需要额外安装 virtio 驱动文档中有专门的步骤说明。八、从源码构建 RancherVM 想研究源码或构建自己的版本克隆仓库git clone https://gitcode.com/gh_mirrors/ol/old-vm构建方式非常简单# 构建 Docker 镜像 IMAGEyes hack/build.sh # 只编译当前系统/架构的二进制 hack/build.sh构建入口脚本为 hack/build.sh代码生成工具可通过 hack/update-codegen.sh 更新。部署前建议先浏览 deploy/example/ 目录下的示例清单例如 virtualmachine.yaml、machineimage.yaml 和 credential.yaml它们展示了如何声明基础镜像、计算资源和 SSH 密钥对。九、常见问题速查表 ❓问题排查建议虚拟机卡在 Booting from harddisk...升级 guest 到 Ubuntu 18.04 或内核最新的 CentOSQEMU 已知缺陷确认 KVM 是否可用检查/dev/kvm与/dev/net/tun是否存在虚拟机拿不到 IP确认所有节点在同一二层网络、有 DHCP 服务桥接名/网卡名与部署文件一致Pod 数量比文档少单节点集群本就运行更少的 Pod属正常现象想关掉容器内 DHCP启动前设置环境变量NO_DHCPtrue适合由外部系统统一分配 IP 的场景写在最后 RancherVM 虽然已是历史项目但VM 即容器、声明式管理虚拟机的思想在今天的 Kubernetes 生态中依然随处可见。跟着本指南走完一遍——从 VMware 嵌套虚拟化开关到 VagrantAnsible 自动搭建再到 kubectl 部署与源码构建——你对容器与虚拟化融合的整个技术栈都会有非常扎实的理解。动手试试吧【免费下载链接】old-vm(OBSOLETE) Package and Run Virtual Machines as Docker Containers项目地址: https://gitcode.com/gh_mirrors/ol/old-vm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表