当前位置: 首页 > news >正文

OpenStack实验过程

用户与项目管理

创建用户与项目

cd ~
source keystonerc_admin # 应用需要的环境变量,获取权限以便后续操作
openstack project create cec # 创建项目
openstack user create --domain default --password openstack2022 zhangsan # 创建用户
openstack role add --project cec --user zhangsan admin # 绑定用户与项目关系

image-20251005103243431

查看用户与项目

image-20251005110215072

image-20251005110233200

命令行用户激活与切换

使用source openrc文件激活对应文件中的环境变量,openrc文件的可以通过登录控制面板下载或者手动创建。手动创建可参考keystonerc_demokeysronerc_admin,修改用户和密码以及project名和PS1等变量即可。

image-20251005155232780

删除用户与项目

#1.删除用户zhangsan
openstack user list
openstack delete <用户名>
#返回
find / -name "*openrc*" 2>/dev/null
cd ~
source keystonerc_admin
# 2.列出项目
openstack project list
# 删除项目
openstack project delete <项目_ID或名称>

image-20251007002826416

image-20251007002903076

网络管理

外部网络和子网

创建

# 创建公共网络,--share项目间可共享,--external外部网络,public为网络的名称,--provider-physical-network的值根据`ovs-vsctl get Open_vSwitch . external_ids:ovn-bridge-mappings`结果:左边来确定
openstack network create --share --external --provider-network-type flat public --provider-physical-network extnet
# 创建子网,--network public指定父网络,--subnet-range 192.168.26.0/24子网网段,subnet_192.168.26为子网名称
openstack subnet create --network public --allocation-pool start=192.168.26.200,end=192.168.26.220 --dns-nameserver 223.5.5.5 --gateway 192.168.26.2 --subnet-range 192.168.26.0/24 subnet_192.168.26

image-20251006213612019

project admin已经默认创建了public等网络,建议删除后自己再重建。

public的subnet应与本机IP在同一网段以便外部访问。

OpenStack的network要提供IP网络服务则必须依靠subnet提供。

补充设置——将OpenStack主机网卡添加到br-ex网桥上

ip a	# 查看网络接口
ovs-vsctl list-br	# 查看网桥(br开头)
# br-ex是外部网桥,br-int是集成网桥,以下命令可以查看网桥的端口
ovs-vsctl list-ports br-ex

此时只有一个br-int的Patch端口,并没有端口连接到OpenStack上的外部接口(ens33),因此当前OpenStack云平台上的实例无法与外网通信,这里改用网卡配置来将OpenStack主机上的网卡作为一个端口添加到br-ex网桥上。

cd /etc/sysconfig/network-scripts/
ls

此时没有ifcfg-br-ex,只有ifcfg-ens33

cp ifcfg-ens33 ifcfg-br-ex

ifcfg-br-ex中修改TYPE=OVSBridge,添加DEVICETYPE=ovs,修改NAMEDEVICE为br-ex。

image-20251006235058440

ifcfg-ens33中修改TYPE=OVSPort,添加DEVICETYPE=ovs

image-20251006235156499

最后systemctl restart network重启网络后即可。

另外注意默认的router1和子网public_subnet需要删除,重新分配子网,网段需与上面配置中的IPADDR(物理机地址)一致。

参考OpenStack——实现虚拟机与外部网络通信_br-ex-CSDN博客

查看

openstack network list			# 查看所有网络列表
openstack network show public	# 查看具体某个网络
openstack subnet list			# 查看所有网络列表
openstack subnet show subnet_192.168.26	# 查看具体某个网络

image-20251006213649713

删除

openstack network delete <网络_ID或名称>	# 删除network即其所有的subnet
openstack subnet delete <网络_ID或名称>	# 删除subnet

租户网络

创建

使用source cec-openrc.sh切换到刚创建的用户zhangsan然后创建租户网络。

# 创建租户网络,网络类型为VXLAN,cec-vpc为网络名称(vpc, virtual private cloud)
openstack network create --provider-network-type vxlan cec-vpc
# 创建租户子网cec-subnet,子网所属的虚拟网络为cec-vpc,--subnet-range子网的IP地址范围,--gateway子网的默认网关IP地址
openstack subnet create cec-subnet --network cec-vpc --subnet-range 172.16.2.0/24 --allocation-pool start=172.16.2.1,end=172.16.2.253 --gateway 172.16.2.254 --dns-nameserver 223.5.5.5

但使用上述命令创建类型为vxlan的cec-vpc时会报错提示不支持此类型,通过tail -30 /etc/neutron/plugins/ml2/ml2_conf.ini检查控制节点上的 Neutron 配置文件,其中type_drivers列出了支持的类型,tenant_network_types是默认租户网络的类型。

image-20251005165500876

实际上创建租户网络并不需要--provider-*的参数,直接使用openstack network create cec-vpc创建即可。

image-20251006213757788

查看

openstack network list			# 查看所有网络列表
openstack network show cec-vpc	# 查看具体某个网络

image-20251006213819489

删除

openstack network delete <网络_ID或名称>	# 删除network即其所有的subnet
openstack subnet delete <网络_ID或名称>	# 删除subnet

image-20251007002434286

路由

创建

# 创建路由,cec-Router为路由器名称
openstack router create cec-Router
# 设置路由器网关接口,--external-gateway外部网关,public外部网络名称,--fixed-ip subnet指定子网
openstack router set cec-Router --external-gateway public [--fixed-ip subnet=subnet_192.168.26]
# 将内部网络添加到路由,cec-subnet为内部子网名称
openstack router add subnet cec-Router cec-subnet

image-20251006215314380

查看

openstack router list				# 查看所有路由列表
openstack router show cec-Router	# 查看具体某个路由

image-20251006215345197

删除

openstack router list# 列出路由
openstack subnet list# 列出子网
openstack router remove subnet <路由_ID或名称> <子网_ID或名称># 移除路由关联的子网接口
openstack router delete <路由_ID或名称># 删除路由

image-20251007002333380

安全组

创建

# 创建安全组,cec-sg为安全组名称
openstack security group create cec-sg
# 创建安全组规则,开放icmp协议
openstack security group rule create --proto icmp cec-sg
# 创建安全组规则,开放TCP22端口
openstack security group rule create --proto tcp --dst-port 22:22 cec-sg
# 筛选包含“cec”的安全组
openstack security group list | grep cec

image-20251006215613306

查看

openstack security group list			# 查看所有安全组列表
openstack security group show cec-sg	# 查看具体某个安全组

image-20251006215643227

删除

# 列出安全组(排除默认组)
openstack security group list | grep -v "default"
# 删除安全组
openstack security group delete <安全组_ID或名称>

image-20251007002157409

浮动IP

创建

openstack network list --external	# 查看可用的外部网络
openstack floating ip create public # 从外部网络"public"中创建一条浮动IP
openstack floating ip create [--subnet subnet_192.168.26] public # 从public的指定子网中创建一条浮动IP

image-20251006215905371

查看

openstack floating ip list					# 查看浮动IP列表
openstack floating ip show 192.168.26.212	# 查看具体某条浮动IP

image-20251006220012327

删除

# 列出浮动IP
openstack floating ip list
# 解绑浮动IP(从云主机端口解绑)
openstack floating ip unset <浮动IP_ID> # 若绑定在云主机上
# 或从端口解绑(更精确)
openstack floating ip unset --port <端口_ID> <浮动IP_ID>
# 删除浮动IP
openstack floating ip delete <浮动IP_ID>

image-20251007002116613

镜像管理

从https://download.cirros-cloud.net/中下载测试镜像到本地,使用的镜像为cirros-0.4.0-x86_64-disk.img,可通过wget -O ~/cirros-0.4.0-x86_64-disk.img https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.imgwget -O ~/cirros-0.4.0-x86_64-disk.img https://gh-proxy.com/https://github.com/cirros-dev/cirros/releases/download/0.4.0/cirros-0.4.0-x86_64-disk.img(gh-proxy.com镜像加速)将其下载到用户目录下。

上传镜像

#上传镜像到glance镜像服务,--disk-format磁盘格式,--container-format容器格式,--public为公共镜像,所有项目可用
openstack image create "cirros-0.4.0-x86_64" --file cirros-0.4.0-x86_64-disk.img --disk-format qcow2 --container-format bare --public

image-20251005180909889

查看

openstack image list						# 查看所有镜像列表
openstack image show cirros-0.4.0-x86_64	# 查看具体镜像信息

image-20251005181033415

删除

# 列出镜像
openstack image list
# 删除镜像
openstack image delete <镜像_ID或名称>

image-20251007002023038

虚拟机管理

虚拟机规格

# 创建虚拟机规格,n1.nano为规格名称,--vcpus虚拟cpu数量,--ram内存,--disk根磁盘大小
openstack flavor create n1.nano --vcpus 1 --ram 128 --disk 1
# 查看虚拟机规格列表
openstack flavor list
# 查看具体某个虚拟机规格
openstack flavor show n1.nano
# 删除虚拟机规格
openstack flavor delete n1.nano

image-20251005182647779

image-20251005182750879

创建虚拟机

# 创建虚拟机cec-vm01,--flavor指定规格,--image指定具体镜像,--security-group指定安全组
# --nic是“Network Interface Card”(网络接口卡)的缩写,为虚拟机分配网络接口,net-id指定虚拟机连接的网络为cec-vpc(会自动分配一个来自cec-vpc子网的私有IP)
openstack server create --flavor n1.nano --image cirros-0.4.0-x86_64 --nic net-id=cec-vpc --security-group cec-sg cec-vm01# 创建虚拟机时不会自动分配浮动 IP,如需公网访问,需要关联浮动IP
# 关联浮动IP给虚拟机cec-vm01,浮动ip可用openstack floating ip list查看
openstack server add floating ip cec-vm01 192.168.26.212# 使用浮动IP ssh登录虚拟机
ssh cirros@192.168.26.212

image-20251006220946044

实验中发现nova-scheduler服务宕机了,通过openstack compute service list 可查看内置服务状态,使用systemctl start openstack-nova-scheduler重新启动服务。

使用openstack server list/show可以查看虚拟机信息。

image-20251006221030348

使用ssh登录虚拟机,cirros默认用户为cirros,密码为gocubsgo

image-20251007000211669

删除虚拟机

# 列出云主机
openstack server list
# 解绑浮动IP(从云主机端口解绑)
openstack floating ip unset <浮动IP_ID>
# 删除云主机
openstack server delete <云主机_ID或名称>

image-20251007001927877

卷管理

创建卷

#新建一个卷(卷大小5GB,卷命名为myVol)
openstack volume create --size 5 --availability-zone nova myVol

image-20251007003910386

查看卷列表

openstack volume list

image-20251007004023985

卷快照

# 对myVol创建快照,命名为snapshot-myvol
openstack volume snapshot create --volume myVol snapshot-myvol
# 显示快照
openstack volume snapshot list --volume myVol

image-20251007004255148

删除卷

#1.先删除快照
openstack volume snapshot delete snapshot-myvol
#2.再删除卷
openstack volume delete myVol

image-20251007004411083

http://www.hskmm.com/?act=detail&tid=26340

相关文章:

  • 2025.10.7+7
  • oppoR9m刷Linux系统:VCOM模式备份系统与基带IMEI/NVRAM/QCN
  • 两个开源中国象棋引擎的编译
  • 推荐一款Swift开发框架- Aquarius
  • 1.如何导入Aquarius开发框架
  • 课程作业(10月8日)
  • 帮宣——可控核聚变
  • 浅谈导数
  • 洛谷P5304 [GXOI/GZOI2019] 旅行者(二进制分类技巧)
  • 英语_阅读_AI Robot_待读
  • 【C++】AVL树的概念及完成(万字图文超详解)
  • 打造自主学习的AI Agent:强化学习+LangGraph代码示例
  • 关于二分
  • NKOJ全TJ计划——NP11721
  • 印度全球能力中心2030年展望与技术基建规划
  • NOI Linux 食用教程
  • 详细介绍:基于 Android 和 JBox2D 的简单小游戏
  • 基于深度学习的语音识别高效的系统设计与实现
  • CF2152H2 Victorious Coloring (Hard Version) 题解
  • 题解:P6162 [Cnoi2020] 四角链
  • 题解:P3301 [SDOI2013] 方程
  • # 20232321 2025-2026-1 《网络与系统攻防技术》实验一实验报告
  • 题解:CF1292E Rin and The Unknown Flower
  • 打印A3大小的PDF文件为A4幅面
  • 课程总结2
  • 解码查找算法与哈希表
  • 第二次课动手动脑合集
  • centos8的防火墙管理
  • 如何生成和制作PDF文件 - 实践
  • 1.2 马尔可夫决策过程(Markov Decision Process, MDP)