openstack

39 阅读24分钟

OPenstack常用组件

WEB界面 Horizon

编排 Host

计算 Nova

网络 Neutron

裸金属 ironic

对象存储 Swift

块存储 cinder

身份认证 Keystone

镜像服务 Glance

Keystone服务

管理credential和Token

credential(可瑞den臭)是用户用来获取token的身份证明

Token是用户访问资源的凭证由Keystone生成

1.nova架构中,下列组件作用是?
API:接收 HTTP 请求、转换命令并通过oslo.messaging队列或 HTTP与其他组件通信的组件。
Scheduler:为虚拟机选择合适的物理主机。
Compute:虚拟机生命周期和复杂流程控制。
Conductor:处理需要协调(构建/调整大小)的请求,充当数据库代理或处理对象转换。


2.nova选择合适主机的步骤是?
通过过滤器选择满足条件的计算节点;
通过权重选择最优的节点。


3.nova服务中nova-novncproxy的作用是?
基于 Web 浏览器的 VNC 访问


4.openstack下列作用的服务是?
web服务   Horizon
身份认证  Keystone
计算      Nova
对象存储  swift
块存储    cinder
镜像管理   Glance
裸金属     ironic
编排      Heat
网络      Heatron
计量      celiometer


5.讲诉openstack创建虚机过程(简单版)
1. 客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(nova-api)发送请求:“帮我创建一个 Instance”
2. API对请求做一些必要处理后,向 Messaging(RabbitMQ)发送了一条消息:“让 Scheduler 创建一个 Instance”
3. Scheduler(nova-scheduler)从 Messaging 获取到 API 发给它的消息,然后执行调度算法,从若干计算节点

组件

Horizon可视化界面服务

horizon唯一依赖的是keystone服务

Heat编排服务

  • glance镜像服务
  • Glance REST API提供标准化的接口,供客户端调用。
  • glance-api实现 REST API 的具体逻辑,并与存储后端交互。
  • Glance Store镜像文件的实际存储
  • Glance DB存储镜像的元数据
  • Glance API处理用户请求,调用其他组件
  • Registry Layer在所有组件之间共享元数据和配置信息

neutron网络服务

extnet -- br-ex --- ens160

浮动ip:把一个公网地址映射到一个私网地址来让外网访问内网

network 的供应商网络类型:

local: 只能同一个节点上运行的虚拟机之间通信。不能通过交换机跨子网通信,不能连外网

flat:支持跨节点通信,虚拟机的数据包通过物理网络接口发送到外部网络。

VLAN:

GRE:

VXLAN:

geneve:

neutron的vlan模式使这个二层虚拟机交换机内的主机只在同一vlan能通信

ceilometer

计量服务 客户及非,资源跟踪,报警功能

keystone

认证服务外部请求调用OpenStack内部的服务时,需要先从Keystone获取到相应的Token。OpenStack内部不同项目间的调用也需要先从Keystone获取到认证后才能进行 Keystone-API 是 OpenStack Keystone 服务的入口点

nova

nova计算资源管理(nova-api, nova-scheduler,Nova-Compute) nova依赖keystone服务 Nova-API 是 OpenStack Nova 服务的入口点

Hypervisor 是 Nova 计算服务的重要组成部分,负责管理虚拟机的生命周期。

以下是一个典型的虚拟机实例创建流程,展示 Nova 的各个组件如何与其他服务交互,并补充 Hypervisor 的角色。

(1) 用户请求创建虚拟机

用户通过 Horizon 或 CLI 发起创建虚拟机的请求:

openstack server create --flavor m1.small --image cirros --network private-net my-instance

(2) nova-api 调用 Keystone 进行身份认证

nova-api 向 Keystone 发起身份认证请求,验证用户的用户名和密码。

Keystone 返回一个临时的认证令牌(Token),nova-api 使用该 Token 访问其他服务。

(3) nova-api 查询 Glance 获取镜像

nova-api 根据用户指定的镜像 ID(如 cirros),向 Glance 发起请求,获取镜像的详细信息(如 URL 和格式)。

Glance 返回镜像文件的 URL 或直接传输镜像数据。

Hypervisor 的角色:Hypervisor 不参与此阶段,因为镜像下载是由 Nova-compute 在后续阶段完成的。

(4) nova-scheduler 查询 Placement 获取资源信息

nova-scheduler 调用 Placement API 查询可用的资源(如 CPU、内存、磁盘)。

根据用户指定的规格(Flavor),nova-scheduler 确定满足条件的计算节点。

Hypervisor 的角色:Hypervisor 不直接参与此阶段,但 Placement 数据库中记录了每个计算节点上 Hypervisor 的资源使用情况。

(5) nova-compute 调用 Neutron 配置网络

nova-compute 向 Neutron 发起请求,为虚拟机实例创建网络接口(Port)。

Neutron 分配 IP 地址,并将网络接口绑定到虚拟机实例。

Hypervisor 的角色:Hypervisor 将 Neutron 配置的网络接口映射到虚拟机实例中,并使其能够访问网络。

(6) nova-compute 调用 Cinder 挂载存储卷(可选)

如果用户指定了存储卷(Volume),nova-compute 会调用 Cinder 创建并挂载存储卷到虚拟机实例。

Hypervisor 的角色:Hypervisor 将 Cinder 提供的存储卷映射为虚拟机实例中的块设备(如 /dev/vdb),并使其对操作系统可见。

(7) nova-compute 在计算节点上启动虚拟机

nova-compute 在选定的计算节点上调用 Hypervisor 的 API,启动虚拟机实例。

虚拟机实例加载镜像文件,并连接到分配的网络和存储资源。

Hypervisor 的角色:Hypervisor 是虚拟机实例的实际执行者,负责:

分配资源(CPU、内存、磁盘)。

加载镜像文件并启动虚拟机的操作系统内核。

配置虚拟机的网络接口和存储设备。

Hypervisor:尽管 Cinder 和 Neutron 分别负责存储和网络管理,但它们提供的资源最终需要由 Hypervisor 来实际应用到虚拟机实例中

Nova-api:接收用户请求并调用其他服务。

Nova-scheduler:查询资源信息并选择计算节点。

Nova-compute:调用 Hypervisor 的 API,启动虚拟机实例。

Hypervisor:实际执行虚拟机的创建、启动、停止等操作。它是 Nova 与底层 Hypervisor 之间的桥梁,负责将用户的虚拟机请求转化为 Hypervisor 的具体操作。

nova组件中型部署(分离控制节点和计算节点)

特点:

控制节点:运行 nova-api, nova-scheduler, nova-conductor, nova-consoleauth, nova-novncproxy, nova-placement-api。

计算节点:运行 nova-compute 和 Hypervisor。

适用场景:中等规模的生产环境。

nova组件大型部署(多控制节点和多计算节点)

特点:多个控制节点:运行 nova-api, nova-scheduler, nova-conductor, nova-consoleauth, nova-novncproxy, nova-placement-api。

多个计算节点:运行 nova-compute 和 Hypervisor。

适用场景:大规模生产环境。

cinder块存储:持久化存储 存储在存储节点的块设备上

openstack为实例创建的卷就是块存储。它是一个虚拟化的块设备,可以挂载到虚拟机实例上,类似于物理服务器上的硬盘。

openstack创建实例后给出的本地磁盘是临时存储,只有添加块存储才能持久化存储

cinder-api访问接收入口 Cinder API对外提供REST API cinder-scheduler

swift对象存储 存储在存储节点的本地磁盘上,或者分布式存储系统

存储海量数据,可以直接通过REST api访问

RBAC(Role-Based Access Control,基于角色的访问控制)是 OpenStack 中实现权限管理的核心机制。它通过将用户分配到不同的角色,并为每个角色定义操作权限,来实现对资源的细粒度访问控制。

每个 OpenStack 服务(如 Nova、Cinder、Neutron)都有一个 Policy 文件,用于定义哪些角色可以执行哪些操作。

  • keystone会在验证用户的token后查找对应的 Policy 规则。如果匹配成功,则允许操作;否则拒绝请求。

域(Domain)是 OpenStack Identity Service(Keystone)中的一个逻辑分组,用于隔离用户和项目。

安全组

安全组默认规则入方向不放行,出方向全部放行

普通用户只能看到自己有权限访问的项目。

项目 资源仅对创建该资源的用户可见和可用。项目 A 创建的虚拟机、网络、存储卷等只能由项目 A 的成员使用。

管理员

可以通过 OpenStack 的管理界面或 CLI 查看所有项目的实例,但普通用户无法看到其他项目中的实例。管理员可以跨项目操作实例

命令行进入管理员视图

openstack keystonerc_admin

查看项目列表

openstack project list

管理员在身份管理 用户 创建用户 可创建用户

管理员在身份管理 组 创建组 同时为多个用户管理权限,同样在组里选中用户可以在组中删除

管理员在身份管理 项目 创建项目 可以选择把哪些用户拉进项目

管理员在身份管理 项目 在某一个项目最左侧选项可以修改资源配额

管理员在管理员 计算 主机聚合 可以添加某个主机到某个可用域 。同一主机不能添加到多个主机聚合

管理员可以查看和管理所有项目,无论是否直接属于这些项目。普通用户导航到“身份管理 / 项目”页面可以查看自己有权访问的项目

身份管理

管理员用户在身份管理创建的用户可以选择其所属项目,属于admin项目的用户有管理员权限

services 是一个特殊的项目,通常由 OpenStack 自动创建,用于存放与核心服务(如 Nova、Cinder、Neutron 等)相关的资源。

管理员用户创建的默认项目添加的用户属于普通用户

添加用户到组,点身份管理点用户点组选择组把用户添加到指定组

对于角色而言Horizon 提供了基本的角色管理功能,但无法直接修改策略文件中的规则。要修改权限规则要在命令行修改

项目的项目配额,配额限制的是整个项目内的资源总量,而不是单个用户的资源。

同一项目内同一实例admin用户可以关闭上锁的实例,普通用户不可以关闭已经上锁的实例

实例

实例创建时选择的的源是用来创建实例的模板。 可以使用一个镜像、一个实例的快照(镜像快照)、 一个卷或一个卷快照(如果启用这个功能)。 您也可以通过创建一个新卷来选择使用具有持久性的存储

实例类型:定义内存,磁盘大小,CPU以及其他资源。用户在部署实例时直接选用

调整实例的资源大小:

在项目找到要调整的实例然后在flavor记住实例名 在实例类型创建实例类型 在项目实例里调整实例大小

实例的本地磁盘没有持久化存储,要依赖存储服务

主机聚合(Host Aggregate) 的“主机”指的是 计算节点(Compute Node),而不是虚拟机实例(Instance)

主机聚合和可用域

不同可用域定义的主要是在物理的地理位置划分,避免单点故障或者不同的业务或项目可以分配到不同的可用域中,避免资源争抢。

主机聚合是一种逻辑分组机制,用于将一组具有相同属性的计算节点(Compute Nodes)归类。

用户可以通过指定主机聚合来限制实例的调度范围。

示例:某些高性能计算任务只能调度到特定的主机聚合中。

主机可以存在于多个聚合中。

每个可用域实际上是由一组主机聚合构成的。

主机聚合可以跨可用域:一个主机聚合可以包含来自不同可用域的主机。支持 GPU 的主机可能分布在 zone1 和 zone2 中,但它们可以属于同一个主机聚合。

计算节点必须先属于某个主机聚合(Host Aggregate),才能通过该主机聚合将节点关联到一个可用性区域(Availability Zone, AZ)。这是因为 可用性区域是主机聚合的一个属性,而不是直接与计算节点绑定。

服务器组

在项目 计算 主机组创建服务器组

关联:亲和性,同一个虚拟机组中的虚拟机必须共存在同一台主机上。

不关联:反亲和性,同一个虚拟机组中的虚拟机不能共存在同一台主机上。

软不关联:弱反亲和性,若组内虚拟机调度的主机资源充足,则与反亲和性策略保持一致;若组内虚拟 机调度的主机资源不足,则自动忽略弱反亲和性规则。

软关联:弱亲和性,若组内虚拟机调度的主机资源充足,则与亲和性策略保持一致;若组内虚拟机调度

的主机资源不足,则自动忽略弱亲和性规则

调度策略

OpenStack 的调度器在创建实例时会经历以下主要步骤:

根据用户请求的资源需求筛选出符合条件的计算节点。

主机聚合的元数据和可用域信息会在这一阶段被考虑。

对筛选出的计算节点进行评分,选择最优的节点。。权重计算可能基于负载均衡、资源利用率等因素。

服务器组策略应用:如果实例关联了服务器组,则进一步检查服务器组的调度策略(亲和性或反亲和性)。调度器会确保实例的放置符合服务器组的策略。

主机聚合的优先级:主机聚合的元数据和可用域信息在调度的过滤阶段被考虑。调度器会根据用户指定的可用域或主机聚合的元数据,筛选出符合条件的计算节点。

示例:用户指定了 availability_zone=zone1,调度器会先筛选出属于 zone1 的计算节点。如果用户未指定可用域,但指定了主机聚合的元数据(如 gpu=true),调度器会筛选出支持 GPU 的计算节点。

服务器组的优先级:服务器组的调度策略在最终放置阶段被应用。在筛选出符合条件的计算节点后,调度器会根据服务器组的策略(亲和性或反亲和性)进一步调整实例的放置位置。

示例:如果服务器组的策略是反亲和性,调度器会确保实例不会被放置在同一台主机上。如果服务器组的策略是亲和性,调度器会尽量将实例放置在同一台主机上。

假设有以下配置:

主机聚合:

aggregate-gpu:包含支持 GPU 的主机,分布在 zone1 和 zone2 中。

aggregate-storage:包含大容量存储的主机,分布在 zone2 和 zone3 中。

服务器组:

group-anti-affinity:反亲和性策略,确保实例分布在不同的主机上。

场景:创建一个需要 GPU 支持的实例,并关联到反亲和性服务器组

用户请求:

指定 availability_zone=zone1 和 hint group=(关联到 group-anti-affinity)。

调度流程:

过滤阶段:

调度器首先筛选出属于 zone1 的计算节点。

然后进一步筛选出属于 aggregate-gpu 的计算节点。

权重计算阶段:

调度器对筛选出的计算节点进行评分,选择最优的节点。

服务器组策略应用阶段:

调度器检查 group-anti-affinity 的反亲和性策略。

如果已有实例运行在某台主机上,调度器会避免将新实例放置在同一台主机上。

卷(Volume) 是一种块存储设备,可以附加到虚拟机实例上以提供持久化存储。当卷从虚拟机实例上卸载(分离)后,虚拟机将无法再访问该卷,但卷本身仍然存在于 OpenStack 的存储系统中,并未被删除或销毁

作用是:扩展存储空间, 数据持久化,共享存储,备份恢复

连接卷:将卷附加到虚拟机实例后,虚拟机可以像使用本地磁盘一样使用该卷。

分离卷:将卷从虚拟机实例上卸载后,卷不再对虚拟机可见,但仍保留在存储系统中。

卷无法分离的情况:

1卷属于系统盘只能删除实例

2实例 处于使用中或异常等情况,无法分离卷

操作类型定义可能的问题数据影响
删除卷永久移除存储卷及其数据卷状态异常、快照依赖、权限不足数据永久丢失
分离卷将存储卷从实例中卸载卷状态异常、文件系统未卸载、实例状态异常数据保留,仅解除关联

附加卷:指挂载到虚拟机实例上的块存储设备。根据用途和配置,附加卷可以包括系统盘和存储盘

系统盘的两种类型:附加卷,临时卷

定义:通过 Cinder 创建的持久化块存储设备。

特点:

数据持久化:即使实例被删除,卷中的数据仍然保留。

可独立管理:可以挂载到其他实例或用于创建快照。

挂载点通常是 /(根目录)。

创建方式:创建实例时,选择“从镜像创建新卷”作为启动源。

当您在 OpenStack 中创建实例时,如果不选择“从镜像创建新卷”,系统会默认使用临时卷作为系统盘

创建实例的源是images创建新卷,然后再创建快照的字节数是0 另一个创建实例的源是images选择不创建新卷再创建的快照是有数据的是什么原因

1创建新卷的场景

当选择“创建新卷”时,OpenStack 会基于镜像创建一个持久化卷(Cinder 卷)作为根卷。

如果在创建实例后未对卷进行初始化、格式化或写入数据,则该卷可能处于以下状态:

稀疏分配:存储后端(如 Ceph、LVM)可能采用稀疏分配机制,仅在实际写入数据时分配空间。因此,未写入数据的卷在快照中显示为 0 字节。

文件系统未初始化:如果未对卷执行 mkfs 和挂载操作,文件系统元数据为空,快照捕获不到有效数据。

镜像内容未完全写入:某些存储后端可能延迟镜像数据的实际写入,直到首次访问。

2.不创建新卷的场景

当选择“不创建新卷”时,OpenStack 使用临时卷(Ephemeral Disk)作为根设备。

临时卷在实例启动时会立即加载镜像内容,并完成文件系统的初始化。

因此,快照能够捕获镜像中的所有数据,包括操作系统文件。

卷关联qos,qos提供的什么信息

QoS 策略允许管理员为存储卷设置性能限制或保障

QOS策略在实例内命令行进行详细定义

卷在已挂载的状态下,是否支持创建卷快照?如果支持,会有什么影响?

支持:即使卷已经挂载到虚拟机实例上,仍然可以通过 OpenStack 的 CLI 或 Horizon 创建快照。OpenStack Cinder 服务会与存储后端协作,在创建快照时尝试确保数据一致性。

可能的影响:

数据一致性问题:在卷挂载状态下,文件系统可能正在进行写操作,导致快照中捕获的数据不一致。如果文件系统未同步或缓存未刷新,快照可能会包含部分未完成的写入操作。

快照大小问题:如果卷使用稀疏分配,快照可能只捕获实际写入的数据,导致快照大小小于卷的实际容量。

确保文件系统一致性:在虚拟机内执行sync确保数据一致性。如果可能,卸载卷后再创建快照

上传卷到镜像:项目 卷 卷 选择卷右侧的actions选择上传镜像

创建卷快照:项目 卷 卷 创建快照

基于卷快照创建卷:项目 卷 快照 创建卷

如果卷在项目 卷 编辑卷 被取消可启动,就无法基于该卷发放虚拟机实例

卷,卷快照,镜像,实例快照的区别

卷快照: 是存储卷在某一时间点的状态备份。为存储卷创建时间点备份,防止数据丢失。通过快照快速创建新的卷,节省初始化时间。

实例快照:是虚拟机实例在某一时间点的状态备份。记录了实例的磁盘数据和配置信息,可以用于恢复或创建新的实例。

镜像:镜像的内容取决于它的创建方式。。如果镜像是通过安装操作系统生成的,那么它通常只包含操作系统的核心文件。如果含有用户信息,应用数据,它的镜像会包括所有内容

卷:现有的存储卷

节点类型

一般是一个节点一台主机,但是在小型部署可能多个节点在一台主机上

节点类型功能是否必须数量
控制节点管理服务和资源必须1 或多个(HA)
计算节点运行虚拟机实例必须根据规模决定
网络节点处理网络流量必须1 或多个(HA)
存储节点提供持久化存储可选根据需求决定
监控节点收集性能数据可选根据需求决定

在 OpenStack 或其他云环境中,附加卷(Attached Volume) 是否为系统卷(即根卷,Root Volume)取决于其挂载点和用途。以下是详细分析:


1. 什么是系统卷?

  • 系统卷是指虚拟机启动时用于加载操作系统的核心存储设备。

  • 在 Linux 系统中,系统卷通常挂载为 /(根目录),并包含操作系统的内核、引导文件和核心文件系统。

  • 在 OpenStack 中,系统卷可以是:

    • 镜像启动的临时卷:基于镜像创建的临时卷,实例删除后会销毁。
    • 持久化卷(Persistent Volume) :从 Cinder 创建的持久化卷,用作根卷。

2. 如何判断 /dev/sda 是否为系统卷?

方法 1:检查挂载点

在虚拟机内部运行以下命令:

bash


df -h

输出示例:


Filesystem      Size  Used Avail Use% Mounted on
/dev/sda        20G   5G   15G   25% /
  • 如果 /dev/sda 挂载在 / 上,则说明它是系统卷。
方法 2:检查卷类型

通过 OpenStack CLI 查看卷详情:

bash


openstack volume show <volume-id>

检查输出中的 bootable 字段:

  • 如果值为 true,则该卷是系统卷(可启动卷)。
  • 如果值为 false,则该卷是非系统卷(数据卷)。
方法 3:检查 Nova 实例配置

通过 OpenStack CLI 查看实例的根设备信息:

bash


openstack server show <instance-id>

检查输出中的 OS-EXT-SRV-ATTR:root_device_name 字段:

  • 如果值为 /dev/sda,则说明 /dev/sda 是系统卷。

3. 附加卷是否可能是系统卷?

  • 是的,附加卷可以是系统卷

    • 如果虚拟机是从一个持久化卷(Cinder 卷)启动的,则该卷会被挂载为 /dev/sda
    • 这种情况下,/dev/sda 是系统卷。
  • 附加卷也可以是数据卷

    • 如果 /dev/sda 已经是系统卷,则其他附加卷(如 /dev/sdb/dev/sdc)通常是数据卷,用于存储额外的数据。

4. 常见场景分析

场景 1:默认镜像启动
  • 虚拟机使用镜像启动,默认会创建一个临时的系统卷。
  • 该卷通常挂载为 /dev/sda,并作为根文件系统。
场景 2:持久化卷启动
  • 使用 Cinder 创建的持久化卷作为根卷启动虚拟机。
  • 该卷也会挂载为 /dev/sda,但不会在实例删除时销毁。
场景 3:附加数据卷
  • 数据卷通常挂载为 /dev/sdb 或其他设备名称。
  • 如果手动将数据卷挂载到 /,则可能会覆盖系统卷,导致系统无法启动。

5. 总结

设备名是否为系统卷判断依据
/dev/sda可能是检查挂载点是否为 /,或卷是否为 bootable=true
/dev/sdb通常不是数据卷通常挂载到非根目录

如果您需要进一步确认 /dev/sda 的具体用途,请提供以下信息:

  • 虚拟机内部的 df -h 输出。
  • OpenStack 中卷的 bootable 属性值。
  • 实例的启动方式(镜像启动还是卷启动)。

镜像

实验

openstack实例创建流程:

1管理员创建实例类型(选择资源大小)

2管理员创建镜像(选择镜像)

3管理员创建外部网络共享访问互联网(外网网络地址,掩码,网关,地址池分配)

4项目创建内网网络用于项目内部通信(内网网络地址,网关掩码地址池)

5项目新建路由(选择刚才创建的外部的网络作为路由的外部网络)

6选择进入路由(新增接口选择刚才创建的内部网络。注意创建的路由和外部网络都在一个项目里)

7项目创建实例(选择源,选择分配创建的镜像,应用实例类型选择刚才创建的实例类型,网络选择刚才创建的内网然后创建实例)

8创建实例类型

组件作用:

  • API:与 OpenStack 后端服务通信,获取或操作资源。

openstack中虚拟机暂停和挂起的区别

暂停:

内存:暂停操作会将实例的运行状态保存在内存中,并停止其 CPU 和网络活动。

实例仍然占用计算节点的资源(如内存、CPU),但无法对外提供服务

磁盘:磁盘不变

恢复时:

内存状态:直接从计算节点的内存中恢复实例的运行状态。

硬盘状态:磁盘数据保持不变,无需额外加载。

使用特点:由于状态保存在内存中,恢复实例时速度较快。实例仍然占用计算节点的资源,无法释放给其他任务使用。实例状态暂停,电源状态暂停

挂起:

内存状态:实例的运行状态(包括内存中的数据)被保存到计算节点的磁盘中。

硬盘状态:磁盘数据保持不变,未发生任何变化

实例状态挂起,电源关闭

恢复时:

内存状态:从计算节点的磁盘中加载保存的内存状态。

硬盘状态:磁盘数据保持不变,无需额外加载。

使用特点:恢复速度较慢,因为需要从磁盘加载内存状态

搁置:

搁置时:

内存状态:实例的运行状态(包括内存中的数据)被保存为一个镜像文件,并上传到存储后端(如 Glance)。

硬盘状态:实例的磁盘数据被保存为镜像文件,原始实例被删除。

恢复流程:用户发起恢复请求。OpenStack 从存储后端下载镜像文件。调度器选择一个计算节点,并将镜像文件还原为实例的磁盘数据。计算节点加载内存状态并启动实例。

使用特点:恢复速度最慢

glance就是项目计算里的image

为什么openstack的服务会在身份管理的用户出现:

因为这些服务需要通过 Keystone(OpenStack 的身份认证服务)进行身份验证和权限管理。

  • Keystone 是统一的身份认证中心
  • 所有 OpenStack 服务(如 Nova、Cinder、Neutron 等)都需要向 Keystone 注册自己的身份信息。
  • 每个服务在 Keystone 中以一个“用户”形式存在,用于:
  • 认证自身身份
  • 获取访问其他服务的令牌(Token)
  • 调用 API 时进行权限校验
  • 服务账户的作用
  • 这些服务用户(如 novacinder)是系统自动创建的,用于服务间通信。
  • 它们通常具有特定的角色(如 admin 或自定义角色),以便能够调用其他服务的 API。
  • 例如:nova 用户可以调用 neutron 的网络接口来创建虚拟机网络。

服务用户与普通用户的区别

服务用户:自动或脚本创建,用于服务间通信

普通用户:登录dashboard,使用CLI

普通用户和admin用户的区别:

前者少了管理员部分,并且身份管理内容没有组,角色,意味着权限不同

假设虚拟机实例在运行过程中意外损坏,且无法正常打开,该如何恢复虚拟机实例在快照之前的状态