3.8.5 阶段性试用Horizon

系列 - OpenStack云平台部署
目录
摘要
本节实验将带你了解如何在 OpenStack 中上传镜像、创建一台虚拟机,并自主探索 Cinder 服务的作用。
实验架构

任务一:上传镜像
什么是镜像?
在云计算中,镜像是创建虚拟机的模板,里面包含了操作系统和预装的软件。只有先上传了镜像,我们才能通过它来创建虚拟机。
首先,打开浏览器,访问 http://你的IP地址/dashboard (注意替换为你环境中的实际 IP)。
登录后,导航到镜像管理页面,点击“创建镜像”,按照以下信息进行填写:
- 镜像名称:alpine-3.23.4
- 镜像格式:qcow2
- 文件:点击手动选择你本地的
generic_alpine-3.23.4-x86_64-bios-cloudinit-r0.qcow2文件

任务二:创建虚拟机规格
什么是规格(Flavor)?
在 OpenStack 中,规格(Flavor)定义了虚拟机的计算资源大小,比如 CPU 核心数、内存大小和根磁盘容量等。这就好比我们在电脑城装机时,选择 CPU 型号和内存条大小。
在图形界面中找到“管理员”——“实例类型”,点击创建实例类型,按照以下规格进行创建:
- 名称:mini
- 内存:512MB
- 磁盘:1GB
- CPU:1个虚拟CPU



任务三:创建内部网络
在真实环境中,虚拟机必须接入网络才能正常工作。为了避免耗尽物理实验环境的 IP 地址,我们需要在 OpenStack 中为自己的项目创建一个内部网络(私有网络)。
操作提示
在这个任务中,我们将创建一个网段为
172.16.1.0/24(属于 B 类私有地址段)的内部网络,供稍后创建的虚拟机使用。- 在 Horizon 界面左侧导航栏中,依次点击 项目 -> 网络 -> 网络。
- 点击页面右上角的 创建网络 按钮,系统会弹出一个向导窗口。
- 第一步:网络
- 网络名称:填写
internal-net。 - 点击“下一步”或者上方的“子网”标签。
- 网络名称:填写
- 第二步:子网
- 子网名称:填写
internal-subnet。 - 网络地址:填写
172.16.1.0/24。 - 点击“下一步”或者上方的“子网详情”标签。
- 子网名称:填写
- 第三步:子网详情
- 这里可以保持所有配置默认,系统会自动配置网关并开启 DHCP。
- 点击右下角的 已创建 (Create)。
创建完成后,你的项目中就拥有了一个完全独立的私有网络。所有的虚拟机都可以连接到这个网络中获取内部 IP,且完全不会消耗任何物理主机的 IP 地址。

任务四:创建并运行虚拟机
有了镜像、规格和网络,接下来我们就可以真正创建一台虚拟机(在 OpenStack 中通常称为实例,Instance)了。为了操作直观,我们在 Horizon 图形界面中完成。
- 在 Horizon 界面左侧导航栏中,依次点击 项目 -> 计算 -> 实例。
- 点击页面右上角的 创建实例 按钮。
- 在弹出的向导窗口中,依次填写以下信息:
- 详细信息:给虚拟机起个名字,比如
alpine-test-01。 - 源:选择源为
镜像,并在列表中找到刚才上传的alpine-3.23.4(或其他版本)并点击向上的箭头选中它。 - 规格:选择我们在图形界面创建的
mini规格,点击向上的箭头选中它。 - 网络:在这里必须找到我们刚刚创建的
internal-net网络,并点击向上的箭头将其选中。 - **配置-定制化脚本:**参考后面的内容
- 详细信息:给虚拟机起个名字,比如
- 填写完毕后,点击右下角的 创建实例。
#cloud-config
chpasswd:
list: |
alpine:123456
root:123456
expire: False
ssh_pwauth: True
disable_root: false

等待几十秒后,当看到虚拟机的状态变为 运行中 (Active) 时,说明启动成功了。
启动成功
恭喜你!现在你已经成功在 OpenStack 云平台上拉起了一台虚拟机。你可以点击虚拟机名称,进入详情页面,通过 控制台 (Console) 标签页查看这台虚拟机的运行画面。因为我们使用了内部网络,虽然暂时无法使用外部 SSH 直连,但通过这个内置的 VNC 控制台依然可以完美操作虚拟机。

任务五:探索 Cinder 服务的作用
在本次实验的开头,我们留下了一个小目标:“自主找出 Cinder 服务有什么作用”。由于我们当前的实验环境并没有安装 Cinder 服务,我们将通过一个“破坏性”实验来亲身感受它的重要性。
请你尝试完成以下操作,并思考背后的原因:
- 通过 VNC 控制台登录你刚才创建的
alpine-test-01虚拟机(默认用户名通常为root,如果没有密码直接回车)。 - 在虚拟机的系统里创建一个重要文件,里面写上你的学号,例如执行命令:
echo "你的学号" > /root/test.txt。 - 回到 Horizon 界面,将这台
alpine-test-01虚拟机删除。 - 重新使用相同的
alpine-3.23.4镜像创建一台新的虚拟机。 - 登录新虚拟机,查看刚才创建的
/root/test.txt文件是否还在?
实践与思考:数据去哪了?
为什么重新创建的虚拟机里没有刚才的数据?之前虚拟机的硬盘数据究竟存在了哪里?