项目五 OpenStack镜像管理与制作

任务一 理解OpenStack镜像服务

1.1 •什么是镜像

• 镜像通常 是指一系列文件或一个磁盘驱动器的精确副本 。
• 虚拟机 所使用的虚拟磁盘, 实际上是 一种特殊格式的镜像文件 。
• 云 环境下尤其需要 镜像。
• 镜像 就是一个模板,类似于 VMware 的虚拟机模板,其预先安装基本的操作系统和其他 应用软件 。
• OpenStack 中的镜像就是虚拟机镜像,是包含有可启动的操作系统的虚拟机实例磁盘的单个文件。

1.2 •什么是镜像服务

• 镜像 服务用来 管理 镜像,让 用户能够发现、获取和保存镜像 。
• 镜像服务主要功能
Ø 查询 和获取镜像的元数据和镜像本身。
Ø 注册 和上传虚拟机镜像,包括镜像的创建、下载和管理。
Ø 维护 镜像信息,包括镜像的元数据和镜像本身。
Ø 支持 多种方式存储 镜像。
Ø 对 虚拟机实例执行创建 快照命令创建 新的镜像, 或备份 虚拟机实例的状态。
• Glance 是关于镜像的 中心。

1.3 •Glance架构

1.4 •查看Glance配置文件

• Glance API 服务器配置文件名一般是 glance- api.conf ,其配置对应 Glance 的 glance- api 服务,其中镜像存储后端的相关配置在 [ glance_store ] 节中 定义,默认 设置如下。

stores=file,http,swift

default_store=file

• glance- cache.conf 定义镜像缓存 配置。
• glance- scrubber.conf 定义镜像删除相关 配置。

policy.json是镜像服务的策略配置文件。

1.5 •验证Glance服务

• 查看 当前运行的 Glance 服务。

[root@node-a etc]# systemctl status *glance*.service

• glance-registry 是 系统后台运行的 Glance 注册服务进程,负责处理与镜像元数据相关的 RESTful 请求 。
• OpenStack 从 Queens 版本 开始将 glance-registry 服务集成到了 glance- api 中 ,如果 glance- api 接收到与镜像元数据有关的请求,会直接操作 数据库。

1.6 •试用镜像服务的API

(1)请求一个admin项目作用域的令牌。

[root@node-a ~]# curl -i   -H "Content-Type: application/json"   -d '   \

{ "auth": {    

    "identity": {

        …

    },

    "scope": {

        …

    }

  }

}'   "http://localhost:5000/v3/auth/tokens"

(2)导出环境变量OS_TOKEN,并将其值设置为上述操作获取的令牌ID。

(3)通过Images API v1获取当前镜像列表。

[root@node-a ~]# curl -s -H "X-Auth-Token: $OS_TOKEN"   http://localhost:9292/v1/images

{"versions": [{"status": "CURRENT", "id": "v2.9", "links": [{"href": "http://localhost:9292/v2/", "rel": "self"}]}, {"status": "SUPPORTED", "id": "v2.7", "links": [{"href": "http://localhost:9292/v2/", "rel": "self"}]},  … "links": [{"href": "http://localhost:9292/v2/", "rel": "self"}]}, {"status": "SUPPORTED", "id": "v2.0", "links": [{"href": "http://localhost:9292/v2/", "rel": "self"}]}]}

任务二  管理OpenStack镜像

2.1 •虚拟机镜像的磁盘格式

2.2 •虚拟机镜像的容器格式

2.3 •镜像的状态

2.4 •镜像的访问权限

• Public (公共的):可以被所有的项目使用。
• Private (私有的):只能被镜像所有者所在的项目使用。
• Shared (共享的):一个非共有的镜像可以共享给其他 项目。
• Protected (受保护的) :镜像 不能被删除。

2.5 •镜像的元数据

• 镜像的 元数据 即 镜像 属性,提供关于由镜像服务所存储的虚拟磁盘的信息 。
• 元数据 作为与镜像数据关联的镜像记录的一部分由镜像服务存储 。
• 相关 的 OpenStack 组件和驱动通过镜像元数据与镜像服务交互。
• 元数据 定义 服务提供 了一个通用的 API 来自定义可用的键值对 元数据。

2.6 •命令行的镜像管理方法

• 建议 使用 openstack 命令替代传统的 glance 命令 。

(1)查看镜像

Ø 查看 已有的镜像列表,查询结果包括镜像的 ID 和名称,以及状态。

openstack image list

Ø 查看 镜像详细 信息。

openstack image show 镜像名称或ID

(2)创建镜像

openstack image create [选项] 镜像名称

(3)更改镜像

Ø 更改镜像。

openstack image set  [选项]  镜像名称

Ø 取消 镜像 更改。

                             openstack image unset  [选项]  镜像名称

(4)删除镜像

openstack image delete  <镜像名称或ID>

(5)镜像与项目关联。

Ø 将镜像与项目 关联。

openstack image add project  [--project-domain 项目所属域]  镜像名或ID  项目名或ID

Ø 将镜像与项目解除 关联。

openstack image remove project  [--project-domain 项目所属域]  镜像名或ID  项目名或ID

2.7 ••查看镜像

• 使用命令行工具查看镜像。
• 加载用户的环境变量。

[root@node-a ~]# source keystonerc_demo

• 显示镜像列表。

[root@node-a ~(keystone_demo)]# openstack image list

+------------------------------------+-------+-----+

| ID                                           | Name   | Status |

+------------------------------------+-------+-----+

| 369d0e73-abb8-4a90-b835-6c627a0f47d1  | cirros    | active  |

| 37116975-33c9-4d3e-8551-0c83e4efe7ef   | fedora   | active  |

• 查看镜像的详细信息。

[root@node-a ~(keystone_demo)]# openstack image show fedora

 2.8 •创建镜像

• 加载 云管理员 admin 的环境脚本,以 admin 用户身份进行操作。

[root@node-a ~]# source keystonerc_admin

• 向 OpenStack 云上传一个 .qcow2 格式的 CentOS 7 镜像并进行注册。

[root@node-a ~(keystone_admin)]# openstack image create --disk-format qcow2 --container-format bare   --public --file ~/Downloads/CentOS-7-x86_64-GenericCloud.qcow2 centos7

2.9 •管理镜像

• 使用 命令行工具为镜像设置元数据 。
• 在 创建镜像的 openstack image create 命令或修改镜像的 openstack image set 命令中,通过 --property 选项以键值对的形式定义 元数据。
• 示例

 [root@node-a ~(keystone_admin)]# openstack image set --property architecture= x86_64 --property hypervisor_type=qemu fedora

2.10•转换镜像格式

• 使用 qemu-img 工具的 convert 子 命令将 镜像从一种格式转换为另一种格式 。
• 基本 语法格式如下。

qemu-img  convert  [-f 源格式] [-O 目标格式]  [-o 选项] 源文件路径 目标文件路径

• 示例

[root@node-a ~]# qemu-img convert -f raw -O qcow2 ~/Downloads/cirros-0.5.1-x86_64-disk.img ~/Downloads/cirros-0.5.1-x86_64-disk.qcow2

任务三  基于预制镜像定制OpenStack镜像

3.1 •什么是cloud-init

• cloud- init 是一组 Python 脚本的集合,是一个能够定制云镜像的实用 工具。
• 通过 修改 / etc /cloud/ cloud.cfg 配置文件来 实现。
• cloud- init 一般会被包含在用于启动虚拟机实例的镜像文件 中。
• 基于镜像 部署虚拟机实例, cloud- init 会随虚拟机实例的启动自动启动,对虚拟机实例进行自定义的初始配置 。
• cloud- init 目前 支持 Ubuntu 、 Fedora 、 Debian 、 RHEL 、 CentOS 等主流的 Linux 操作系统发行版 。

3.2 •什么是实例快照

• 快照( Snapshots )是一种基于时间点的数据备份技术,能够记录某一个时刻的数据信息并将其保存,以便在需要时将数据恢复到之前时间点的 状态
• OpenStack 中为虚拟机实例生成的快照抓取实例正在运行的磁盘的状态,其实是一个完整的镜像,由 Glance 镜像服务 管理。

3.3•对实例进行定制

(1)登录实例。

[root@node-a ~]# ssh -i ~/.ssh/demo-key.pem centos@192.168.199.50

(2)切换到root用户。

[root@cenos7-vm ~]$ sudo su -

(3)执行passwd命令设置root用户的密码。

[root@cenos7-vm ~]# passwd

Changing password for user root.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

(4)使用vi工具编辑/etc/ssh/sshd_config配置文件,将其中的PasswordAuthentication参数值设置为yes,然后保存该文件并退出编辑,重启SSH服务。

(5)查看CentOS的详细版本。

[root@cenos7-vm ~]# cat /etc/redhat-release

(6)安装图形界面。

yum groupinstall "Server with GUI"

(7)将时区修改为上海。

[root@cenos7-vm ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

cp: overwrite '/etc/localtime'? y

(8)将系统语言修改为中文。

[root@cenos7-vm ~]# localectl  set-locale LANG=zh_CN.UTF8

(9)设置系统默认启动图形界面。

[root@cenos7-vm ~]# systemctl set-default graphical.target

Removed symlink /etc/systemd/system/default.target.

Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.

3.4 •定制cloud-init初始化行为

• 编辑 实例 CentOS 7 的 / etc /cloud/ cloud.cfg 配置文件。
Ø 将 disable_root 参数的值设为 0 ,让 root 账户能够直接登录实例(默认不允许登录) 。
Ø 将 ssh_pwauth 参数的值设为 1 ,以启用 SSH 密码登录(默认只能通过私钥 SSH 登录) 。
• 重 启系统。

[root@cenos7-vm ~]# reboot

3.5•将实例快照转换成镜像

• 获取 实例快照的文件路径,可通过查看其“ ID” 值确定 具体的文件路径。

[root@node-a ~(keystone_demo)]# openstack image list

+----------------------------------+---------------+--------+

| ID                                         | Name             | Status    |

+----------------------------------+---------------+--------+

| 885aeabf-3753-43c0-865f-85d08083a1f1 | centos7            | active    |

| c9e65002-07fc-4ed8-92f5-8c0ced750332 | centos7-gui-snap  | active    |

| 369d0e73-abb8-4a90-b835-6c627a0f47d1 | cirros              | active   |

| 37116975-33c9-4d3e-8551-0c83e4efe7ef | fedora              | active   |

• 执行 openstack image create 命令创建新的镜像。

[root@node-a ~(keystone_demo)]# openstack image create centos7-gui --file /var/lib/ glance/images/c9e65002-07fc-4ed8-92f5-8c0ced750332 --disk-format qcow2 --container- format bare

任务四  使用自动化工具制作OpenStack镜像

4.1 •Diskimage-builder工具

• Diskimage -builder 简称 DIB ,是 OpenStack 的官方 项目。
• DIB 主要 用于构建适用于 OpenStack 平台的操作系统 镜像。
• Diskimage -builder 的镜像生成 原理

(1)将最初启动虚拟机实例时安装操作系统完成后的镜像保存为基础镜像。

(2)将该基础镜像挂载到本地。

(3)chroot到根分区。

(4)根据不同的定制需要增加不同的模块。

(5)安装完成后保存为特定格式的镜像文件。

• 使用 Diskimage -builder 首次制作某操作系统镜像时需要从网上下载该操作系统的基础镜像文件,后面再制作同一版本的镜像时,可直接 使用镜像 缓存 文件。

4.2 •其他自动化镜像生成工具

• Oz :自动化生成虚拟机镜像文件的命令行工具 。
• Packer :从单个源配置构建多种平台的虚拟机镜像的工具。
• image-bootstrap :生成可启动的虚拟机镜像的命令行 工具。
• imagefactory :可以自动构建、转换和上传镜像到不同的云提供商的新型 工具。
• KIWI :操作系统镜像构建器,支持多种 Linux 硬件平台、虚拟化和云系统的操作系统镜像构建。
• virt -builder :快速构建虚拟机镜像的工具 。

4.3 •安装Diskimage-builder

(1)安装epel扩展源。

yum -y install epel-release

(2)安装pip工具。

yum -y install python-pip

(3)安装支持环境。

yum -y install qemu-img kpartx

(4)升级pip工具。

pip install --upgrade "pip < 20.0”

(5)安装Diskimage-builder。

pip install  "diskimage-builder==2.2.0"

4.4 •熟悉Diskimage-builder的用法

disk-image-create  [选项]…[元素]…

• 元素 ( Element )是指用来组织制作镜像的元素。元素决定镜像中包含的内容,例如创建用户、安装软件包、进行某种 配置。元素 还可以为 disk-image-create 命令的运行提供环境变量 。有许多 针对具体元素的环境变量 。
• 简单的示例
• 生成 一个通用的、可启动的最新发行版 Ubuntu 操作系统镜像。

disk-image-create ubuntu vm

• 进一步 定制可通过执行以下命令设置环境变量来实现。

export ELEMENTS_PATH=~/source/tripleo-image-elements/elements

disk-image-create -a amd64 -o fedora-amd64-heat-cfntools vm fedora heat-cfntools

4.5 •使用Diskimage-builder自动构建Ubuntu操作系统镜像

• 设置 相关的环境变量。

[root@localhost ~]# export DIB_DEV_USER_USERNAME=ubuntu      #初始用户名

[root@localhost ~]# export DIB_DEV_USER_PASSWORD=ubuntu      #初始用户密码

[root@localhost ~]# export DIB_DEV_USER_PWDLESS_SUDO=YES   #为用户启用无密码sudo

[root@localhost ~]# export DIB_CLOUD_INIT_DATASOURCES="ConfigDrive, OpenStack                                         

   #cloud-init的源是ConfigDrive和OpenStack

• 构建 镜像。

[root@localhost ~]# disk-image-create -a amd64 -t qcow2 -o ubuntu.qcow2 ubuntu vm  cloud-init-datasources devuser

任务五  手动制作OpenStack镜像

5.1 •手动制作镜像

• 可以 使用 KVM ,或者使用 GUI 桌面虚拟化 工具。
• 创建新的虚拟机镜像时,应连接 Hypervisor 的图形界面控制台,用作虚拟机实例的显示 界面。
• KVM 提供的图形界面控制台可以通过虚拟网络计算 ( VNC )协议或更新的独立计算环境简单协议 ( SPICE )访问 。
• 使用 KVM 平台制作 OpenStack 镜像实际上是一种系统镜像文件格式的转换,将制作好的系统镜像文件转换为原始格式的文件。

5.2 •KVM虚拟化工具

• KVM 的基本架构

• Libvirt 是一个软件集合,是一套为方便管理平台虚拟化技术而设计的开源代码的应用程序接口、守护进程和管理工具 。
• Libvirt 不仅 提供了对虚拟机的管理,也提供了对虚拟网络和存储的管理 。
• Libvirt 是目前使用非常广的虚拟机管理程序 接口。

5.3 •KVM虚拟磁盘(镜像)文件格式

• . raw :原始的格式 ,直接 将文件系统的存储单元分配给虚拟机使用,采取直读直写的策略 。
• . qcow2 : QEMU 引入的镜像文件格式,也是目前 KVM 默认的格式 。
• . qed : .qcow2 的一种改型,存储定位查询方式和数据块大小和 .qcow2 一样 。

★★如果要使用虚拟机快照,则选择.qcow2格式。

5.4 •VirtIO驱动程序与Cloudbase-init

• VirtIO 其实就是一个运行于 Hypervisor 之上的 API ,虚拟化环境中的 I/O 操作通过 VirtIO 与 Hypervisor 通信,可以具有更好的性能 。
• Cloudbase-init 是 Windows 操作系统和其他系统的云初始化 程序。 其作用与 Linux 操作系统中的 cloud- init 一样,也是一个开源的 Python 项目 。
• Cloudbase-init 主要包括两个部分
Ø 服务 ( Service )
Ø 插件 ( Plugin )

5.5 •部署KVM

• 检查是否支持 CPU 虚拟化。

grep -E 'svm|vmx' /proc/cpuinfo

• 安装 KVM 软件包。

yum install qemu-kvm libvirt virt-install virt-manager virt-viewer

• 为 便于实验,应关闭该 KVM 主机的防火墙和 SELinux 功能。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/diannao/30563.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DDoS攻击增速惊人,谈谈防御DDoS攻击的几大有效方法

过去的十年里&#xff0c;DDoS攻击是计算机科学领域中最“头疼”的问题之一。Gcore发现&#xff0c;DDoS攻击增速惊人&#xff0c;2021年DDoS攻击峰值流量为300Gbps&#xff0c;2022年增至650 Gbps&#xff0c;2023 年Q3-Q4季度增至1600 Gbps (1.6 Tbps)。企业如果没有采取足够…

react钩子函数用法(useCallback、useMemo)

useMemo import { useMemo } from react; function MyComponent({ a, b }) { const memoizedValue useMemo(() > { // 进行一些昂贵的计算 return a b; }, [a, b]); // 当 a 或 b 发生变化时&#xff0c;memoizedValue 将被重新计算 return <div>{memoizedVa…

产品Web3D交互展示有什么优势?如何快速制作?

智能互联网时代&#xff0c;传统的图片、文字、视频等产品展示方式&#xff0c;因为缺少互动性&#xff0c;很难引起用户的兴趣&#xff0c;已经逐渐失去了宣传优势。 Web3D交互展示技术的出现&#xff0c;让众多品牌和企业找到了新的方向&#xff0c;线上产品展示不在枯燥无趣…

最小公倍数的求法

什么是最小公倍数&#xff1f; 最小公倍数是指两个或多个整数共有的最小正整数倍数。 如何求一组数据的最小公倍数&#xff08;Least Common Multiple&#xff0c;简称LCM&#xff09;&#xff1f; LCM 这组数据的公倍数 这组数据的最大公约数 (Greatest Common Divis…

前端页面实现【矩阵表格与列表】

实现页面&#xff1a; 1.动态表绘制&#xff08;可用于矩阵构建&#xff09; <template><div><h4><b>基于层次分析法的权重计算</b></h4><table table-layout"fixed"><thead><tr><th v-for"(_, colI…

可视化表单拖拽生成器优势多 助力流程化办公!

当前&#xff0c;很多企业需要实现流程化办公&#xff0c;进入数字化转型时期。要想实现这一目标&#xff0c;就需要借助更优质的平台产品。低代码技术平台是得到企业喜爱的发展平台&#xff0c;拥有可视化操作、灵活、高效、更可靠等优势特点&#xff0c;在推动企业实现流程化…

域名注册过期多久可重新注册?

由于种种原因&#xff0c;域名可能会过期。聚名网将介绍域名注册过期后重新注册的时间窗口以及相关的注意事项。 域名注册过期后&#xff0c;通常会经历以下几个阶段&#xff1a; 宽限期(Grace Period)&#xff1a;大多数域名在注册到期后会有一个宽限期&#xff0c;这个期限通…

记录vue一个echarts页面 柱状图加平均分横线 双柱状图 横向双柱状图

<template><div class"app-container"><el-form :model"queryParams" ref"queryForm" size"small" v-show"showSearch" label-width"85px"><el-form-item label"园所名称" prop&q…

Vue发送http请求

1.创建项目 创建一个新的 Vue 2 项目非常简单。在终端中&#xff0c;进入您希望创建项目的目录(我的目录是D:\vue)&#xff0c;并运行以下命令&#xff1a; vue create vue_test 2.切换到项目目录&#xff0c;运行项目 运行成功后&#xff0c;你将会看到以下的编译成功的提示…

使用二进制安装安装docker

在一些情况下无法使用yum安装docker下面写了一个使用二进制安装docker的文档 官网下载地址https://download.docker.com/linux/static/stable/x86_64/ 可以按需求下载 wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.10.tgz 下载包 tar xf dcker…

要改Google签名?这些你足够了解吗!

大家好&#xff0c;我是小编阿文。欢迎您关注我们&#xff0c;经常分享有关Android出海&#xff0c;iOS出海&#xff0c;App市场政策实时更新&#xff0c;互金市场投放策略&#xff0c;最新互金新闻资讯等文章&#xff0c;期待与您共航世界之海。 老项目keystore签名信息包含国…

瑞数信息入选IDC《中国WAAP厂商技术能力评估,2024》

5星满分&#xff1a;WAF、Bot流量管理、行业应用等评估维度 日前&#xff0c;全球领先的IT市场研究和咨询公司IDC发布《中国WAAP厂商技术能力评估&#xff0c;2024》。报告聚焦WAAP能力&#xff0c;通过对中国市场中主要WAAP产品提供商的技术评估以及对大量最终用户的客观访谈…

一文彻底搞懂 Transformer(图解+手撕)

Transformers 亮相以来彻底改变了深度学习模型。 今天&#xff0c;我们来揭示 Transformers 背后的核心概念&#xff1a;注意力机制、编码器-解码器架构、多头注意力等等。通过 Python 代码片段&#xff0c;让你深入了解其原理。 一、理解注意力机制 注意力机制是神经网络中…

代理设计模式,框架AOP思想

文章目录 引言&#x1f92a;代理对象(Proxy)如何开发一个代理对象开发中的业务层代码冗余问题开发静态代理类动态代理 引言&#x1f92a; 代理 (proxy) &#xff0c;举个生活中常见的现象&#xff0c;在之前网路还未走进大众的时代里&#xff0c;如果我们想买一些东西&#xf…

第十九届全国大学生智能汽车竞赛智慧巡检创意组赛程安排通知

各位老师和同学们大家好&#xff1a; 通知一&#xff1a;经过和大赛组委会、承办校协商确定&#xff0c;天途智慧巡检创意组线下预选赛和总决赛将在吉林大学&#xff08;东北赛区&#xff09;举办&#xff0c;赛程如下&#xff1a; 地点&#xff1a;吉林大学前卫南区体育馆 地…

Nginx之文件下载服务器

1.概述 在对外分享文件时&#xff0c;利用Nginx搭建一个简单的下 载文件管理服务器&#xff0c;文件分享就会变得非常方便。利 用Nginx的诸多内置指令可实现自动生成下载文件列表 页、限制下载带宽等功能。配置样例如下&#xff1a; server {listen 8080;server_name localhos…

有了MES、ERP,质量管理为什么还需要QMS?

在制造业&#xff0c;质量管理始终是企业管理中永恒的主题。品质管理要想做得更好&#xff0c;企业必须掌握足够多、足够有用的数据和信息&#xff0c;实现质量管理信息化。很多中小企业也很困惑&#xff0c;是否有必要上线QMS质量管理系统&#xff1f; 一、为什么企业需要QMS的…

Graph RAG 的力量:智能搜索的未来

随着世界越来越依赖数据&#xff0c;对准确、高效的搜索技术的需求从未如此高涨。传统搜索引擎虽然功能强大&#xff0c;但往往难以满足用户复杂而细微的需求&#xff0c;尤其是在处理长尾查询或专业领域时。Graph RAG&#xff08;检索增强生成&#xff09;正是在这种情况下应运…

Python-Socket网络编程简单示例

# TCP 服务端程序 server.py # 导入socket 库 from socket import *# 主机地址为空字符串&#xff0c;表示绑定本机所有网络接口ip地址 # 等待客户端来连接 IP # 端口号 PORT 50000 # 定义一次从socket缓冲区最多读入512个字节数据 BUFLEN 512# 实例化一个socket对象 # 参…

第1讲:创建vite工程,使用框架为Vanilla时,语言是typescript,修改http端口的方法

直接在项目根目录创建 vite.config.ts文件。 在该文件中添加内容&#xff1a; import { defineConfig } from vite;export default defineConfig({server: {port: 7777,}, });最后尝试运行package.json中的Debug