OpenStack核心组件管理:Keystone与Glance重点总结
·
OpenStack核心组件管理:Keystone与Glance重点总结
一、Keystone 认证管理
1. 核心概念
| 概念 | 说明 |
|---|---|
| Domain(域) | 一组 User、Group 或 Project 的容器,全局唯一,可对应一个大机构或数据中心 |
| User(用户) | 通过 Credential(用户名/密码等)验证后获得 Token,只需在域内唯一 |
| Group(用户组) | 一组 User 的容器,给 Group 分配角色后,组内所有用户继承该角色权限 |
| Project(项目) | 各服务中可访问的资源集合,不必全局唯一,只需域内唯一(Tenant/Project/Account 通用) |
| Role(角色) | 定义一组权限,用户被赋予某个角色后才能访问相应资源;角色必须全局唯一,可被继承 |
| Service(服务) | 如 Nova、Glance、Cinder 等,每个服务暴露多个 Endpoint |
| Endpoint(端点) | 访问具体服务的网络地址(URL),分为 admin/public/internal |
| Token(令牌) | 允许访问特定资源的凭证,默认有效期 24 小时 |
| Credential(凭证) | 确认用户身份的数据(用户名+密码等) |
2. 常用命令
# 查看 domain
openstack domain list
# 创建 domain
openstack domain create <domain_name>
# 删除 domain
openstack domain delete <domain_name>
# 列出所有用户
openstack user list
# 创建用户(指定密码)
openstack user create --password <password> <user_name>
# 创建组
openstack group create <group_name>
# 列出组
openstack group list
# 查看组详情
openstack group show <group_name>
# 将用户加入组
openstack group add user <group_name> <user_name>
# 查看用户是否在组中
openstack group contains user <group_name> <user_name>
# 给组/用户赋予角色(项目内)
openstack role add --project <project_name> --group <group_name> <role_name>
openstack role add --user <user_name> --project <project_name> <role_name>
# 查看角色分配
openstack role assignment list --names --group <group_name>
# 创建项目
openstack project create <project_name>
# 将用户关联到项目
openstack user set --project <project_name> <user_name>
# 修改项目配额(实例数、vcpu、内存)
openstack quota set --instance <num> --cores <num> --ram <MB> <project_name>
# 查看服务列表
openstack service list
# 查看 endpoint 列表
openstack endpoint list
openstack catalog list
3. Keystone 工作原理
- Authentication(认证):验证用户身份,成功后签发 Token。
- Authorization(鉴权):通过 Role 实现,各服务通过
policy.json控制权限。 - 典型流程:
- 用户向 Keystone 提交用户名/密码 → 获取 Token。
- 用户携带 Token 请求 Nova 创建虚拟机。
- Nova 将 Token 发回 Keystone 验证有效性。
- 验证通过后,Nova 调用 Glance、Neutron 等服务,同样需要 Token 验证。
- 各服务通过自身的
policy.json判断角色权限。
4. 故障排查
- 日志位置:
/var/log/keystone/keystone.log - 开启 debug:编辑
/etc/keystone/keystone.conf,设置debug = True,重启服务。
二、Glance 镜像管理
1. Glance 架构要点
-
Newton 及之前:Glance-API + Glance-Registry(V1/V2)。
-
Stein 开始:废弃 Glance-Registry,由 Glance-API 直接操作数据库,通过 Store 模块对接多种后端(Amazon S3、Cinder/Swift、Ceph、Sheepdog 等)。
-
配置文件:
/etc/glance/glance-api.conf -
数据库连接配置示例:
connection = mysql+pymysql://glance:password@192.168.108.10/glance
2. 镜像、实例、规格的关系
- 镜像:操作系统模板,可启动任意数量的实例。
- 实例:基于镜像的副本,修改不影响原镜像。
- 规格:定义实例使用的 CPU、内存、磁盘等资源。
3. 镜像磁盘格式
| 格式 | 描述 |
|---|---|
| vhd | Xen、Microsoft、VirtualBox 常见格式 |
| vhdx | vhd 增强版,支持更大容量 |
| vmdk | VMware 常见格式 |
| vdi | VirtualBox 和 QEMU 支持 |
| iso | 光盘存档格式 |
| ploop | Virtuozzo 使用,用于 OS Containers |
| qcow2 | QEMU 支持,支持动态扩展和写时复制(推荐) |
| aki / ari / ami | Amazon 内核/内存盘/机器镜像 |
| raw | 非结构化磁盘镜像格式 |
4. 镜像状态机
| 状态 | 说明 |
|---|---|
| queued | 元数据已保留,镜像数据未上传 |
| saving | 原始数据正在上传中 |
| uploading | 调用了 import data-put 请求 |
| importing | 导入中,尚未就绪 |
| active | 创建完成,可用 |
| deactivated | 禁止非管理员访问 |
| killed | 上传出错,不可用 |
| deleted | 已删除,信息保留待自动清理 |
| pending_delete | 类似 deleted,但数据未清理,可恢复 |
5. 上传镜像操作
通过 Web 界面
- 指定镜像名称、描述、源类型(本地文件或 URL)、磁盘格式、容器格式、可见性、是否受保护等。
通过命令行(推荐大文件)
# 带进度条上传
glance image-create --name <image_name> --file <file_path> --disk-format <format> --container bare --progress
# 例如上传 ISO
glance image-create --name image-centos --file CentOS-7-x86_64-Minimal-1810.iso --disk-format raw --container bare --progress
镜像存储位置
-
默认文件后端:
/var/lib/glance/images/ -
查看镜像物理文件:
find / -name <image_uuid> -
数据库记录(glance 库):
use glance; select id,value from image_locations;
6. 使用 Swift 作为 Glance 后端存储
修改 /etc/glance/glance-api.conf:
[glance_store]
default_store = swift
swift_store_region = RegionOne
swift_store_container = <container_name>
swift_store_large_object_size = 5120
swift_store_create_container_on_put = true
swift_store_multi_tenant = true
swift_store_admin_tenants = services
swift_store_auth_address = http://<controller_ip>:5000/v3
swift_store_user = swift
swift_store_key = <swift_hash_from_answers.txt>
重启 glance 服务:
systemctl restart openstack-glance*
7. Glance 镜像制作(手动)
以 Ubuntu 18.04 为例:
-
使用
virt-manager创建 Ubuntu 18.04 虚拟机并安装系统。 -
登录虚拟机安装 cloud-init:
sudo apt install cloud-init sudo shutdown -h now -
预清理虚拟机:
sudo virt-sysprep -d <VM_ID> -
释放虚拟机定义:
virsh undefine <VM_ID> -
制作镜像文件(qemu-img create)。
-
上传镜像至 Glance:
openstack image create ...
官方预构建镜像下载参考:https://docs.openstack.org/image-guide/obtain-images.html
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)