项目五 OpenStack镜像管理与制作

news2024/11/15 13:24:26

任务一 理解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)将该基础镜像挂载到本地。

3chroot到根分区。

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的源是ConfigDriveOpenStack

构建 镜像。

[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.coloradmin.cn/o/1839887.html

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

相关文章

每日复盘-202406019

今日关注&#xff1a; 20240619 六日涨幅最大: ------1--------300868--------- 杰美特 五日涨幅最大: ------1--------300462--------- 华铭智能 四日涨幅最大: ------1--------300462--------- 华铭智能 三日涨幅最大: ------1--------300462--------- 华铭智能 二日涨幅最大…

使用MAT定位线上OOM问题

目录 1.什么是OOM? 2.发生的可能原因 3.常见类型的OOM 4.如何定位问题&#xff1f; 4.1 获取dump文件 4.2 MAT分析 「Leak Suspects」泄露嫌疑 「Histogram」直方图 「dominator tree」支配树 「thread overview」线程视图 目录 1.什么是OOM? 2.发生的可能原因 …

MPLS TE简介

定义 MPLS TE&#xff08;MPLS Traffic Engineering&#xff09;&#xff0c;即MPLS流量工程。MPLS流量工程通过建立基于一定约束条件的LSP隧道&#xff0c;并将流量引入到这些隧道中进行转发&#xff0c;使网络流量按照指定的路径进行传输&#xff0c;达到流量工程的目的。 …

vue3+element ui +ts 封装周范围选择器

vue3element ui ts 封装周范围选择器 在业务场景中&#xff0c;产品需要在页面中使用周范围选择器&#xff0c;我们在使用ant-design的时候里面是有自带的&#xff0c;但是在emement中只有指定周的范围选择器&#xff1a; 这个是ant-design的周范围选择器 这个是element ui 的…

C# WinForm —— 36 布局控件 GroupBox 和 Panel

1. 简介 两个可以盛放其他控件的容器&#xff0c;可以用于把不同的控件分组&#xff0c;一般不会注册事件 GroupBox&#xff1a;为其他控件提供可识别的分组。可通过Text属性设置标题&#xff1b;有边框&#xff1b;没有滚动条&#xff0c;一般用于按功能分组 Panel&#xff…

鸿蒙小案例-短视频

参加泡泡玛特写了个小demo,然后给它稍微完善了一下 基于API11 演示效果 hfvideo演示视频 主要功能集中在4个tab页内 1.首页-视频播放页 2.朋友-关注、朋友、粉丝聚合 3.消息-聊天列表 4.我的-当前用户信息展示 主页页面 1.用户主页 2.聊天页面 3.朋友页面 4.视频播放页 因为不…

【嵌入式】嵌入式Linux开发实战指南:从交叉编译到触摸屏交互

文章目录 前言&#xff1a;1.简介1.1. 交叉编译工具1.2. 项目开发流程&#xff1a;1.3. ARM开发板的连接方法 2. 开发板连接3. 系统文件 IO4. 设置共享文件夹3.1. 读文件3.2. 写文件3.2. 设置文件偏移量 4. LCD显示屏显示4.1. LCD 显示颜色4.2. 将文件下载到开发板4.2.1. 在CRT…

shadertoy-安装和使用

一、安装vscode 安装vscode流程 二、安装插件 1.安装glsl编辑插件 2.安装shader toy插件 三、创建glsl文件 test.glsl文件 float Grid(float size, vec2 fragCoord) {vec2 r fragCoord / size;vec2 grid abs(fract(r - 0.5) - 0.5) / fwidth(r);float line min(grid…

免费域名第二弹:手把手教你获取个性化免费域名并托管至Cloudflare

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 免费申请域名的方法 📒📝 注册账号📝 创建免费域名📝 将域名添加到 Cloudflare⚓️ 相关链接 ⚓️📖 介绍 📖 在如今的数字时代,拥有一个个性化的域名已经成为越来越多人的需求。无论是建立个人博客、项目展示,还…

JWT整合Gateway实现鉴权(RSA与公私密钥工具类)

一.业务流程 1.使用RSA生成公钥和私钥。私钥保存在授权中心&#xff0c;公钥保存在网关(gateway)和各个信任微服务中。 2.用户请求登录。 3.授权中心进行校验&#xff0c;通过后使用私钥对JWT进行签名加密。并将JWT返回给用户 4.用户携带JWT访问 5.gateway直接通过公钥解密JWT进…

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

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

王思聪隐形女儿曝光

王思聪"隐形"女儿曝光&#xff01;黄一鸣独自面对怀孕风波&#xff0c;坚持生下爱情结晶近日&#xff0c;娱乐圈掀起了一场惊天波澜&#xff01;前王思聪绯闻女友黄一鸣在接受专访时&#xff0c;大胆揭露了她与王思聪之间的爱恨纠葛&#xff0c;并首度公开承认&#…

VBA技术资料MF161:按需要显示特定工作表

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

重生之 SpringBoot3 入门保姆级学习(24、场景整合 kafka 消息发送服务)

重生之 SpringBoot3 入门保姆级学习&#xff08;24、场景整合 kafka 消息发送服务&#xff09; 6.4 消息发送服务 6.4 消息发送服务 访问 kafka-ui &#xff08;注意这里需要换成你自己的服务器或者虚拟机的 IP 地址&#xff0c;虚拟机可以用局域网 192.168.xxx.xxx 的地址&…

05-对混合app应用中的元素进行定位

本文介绍对于混合app应用中的元素如何进行定位。 一、app的类型 1&#xff09;Native App&#xff08;原生应用&#xff09; 原生应用是指利用Android、IOS平台官方的开发语言、开发类库、工具等进行开发的app应用&#xff0c;在应用性能和交互体验上应该是最好的。 通俗点来…

富唯智能复合机器人

复合机器人&产品概述 富唯智能复合机器人集协作机器人、移动机器人和视觉引导技术于一体&#xff0c;搭载ICD系列核心控制器&#xff0c;一体化控制整个复合机器人系统&#xff0c;并且可以对接产线系统&#xff0c;搭配我司自研的2D/3D视觉平台&#xff0c;能够轻松实现工…

【Java】已解决Java中的java.util.NoSuchElementException异常

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决Java中的java.util.NoSuchElementException异常 一、分析问题背景 java.util.NoSuchElementException是Java中常见的运行时异常&#xff0c;它通常发生在使用迭代器&#xf…

文献阅读:SpaceX:空间转录组学的基因共表达网络估计

文献介绍 「文献题目」 SpaceX: gene co-expression network estimation for spatial transcriptomics 「研究团队」 Veerabhadran Baladandayuthapani&#xff08;美国密歇根大学&#xff09;、Xiang Zhou&#xff08;美国密歇根大学&#xff09; 「发表时间」 2022-09-30 「…

鸿蒙HarmonyOS实战:渲染控制、路由案例

条件渲染 简单来说&#xff0c;就是动态控制组件的显示与隐藏&#xff0c;类似于vue中的v-if 但是这里写法就是用if、else、else if看起来更像是原生的感觉 效果 循环渲染 我们实际开发中&#xff0c;数据一般是后端返回来的对象格式&#xff0c;对此我们需要进行遍历&#…