用户与项目管理
创建用户与项目
cd ~
source keystonerc_admin # 应用需要的环境变量,获取权限以便后续操作
openstack project create cec # 创建项目
openstack user create --domain default --password openstack2022 zhangsan # 创建用户
openstack role add --project cec --user zhangsan admin # 绑定用户与项目关系
查看用户与项目
命令行用户激活与切换
使用source openrc文件
激活对应文件中的环境变量,openrc文件的可以通过登录控制面板下载或者手动创建。手动创建可参考keystonerc_demo
和keysronerc_admin
,修改用户和密码以及project名和PS1等变量即可。
删除用户与项目
#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或名称>
网络管理
外部网络和子网
创建
# 创建公共网络,--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
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
,修改NAME
和DEVICE
为br-ex。
在ifcfg-ens33
中修改TYPE=OVSPort
,添加DEVICETYPE=ovs
。
最后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 # 查看具体某个网络
删除
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
是默认租户网络的类型。
实际上创建租户网络并不需要--provider-*
的参数,直接使用openstack network create cec-vpc
创建即可。
查看
openstack network list # 查看所有网络列表
openstack network show cec-vpc # 查看具体某个网络
删除
openstack network delete <网络_ID或名称> # 删除network即其所有的subnet
openstack subnet delete <网络_ID或名称> # 删除subnet
路由
创建
# 创建路由,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
查看
openstack router list # 查看所有路由列表
openstack router show cec-Router # 查看具体某个路由
删除
openstack router list# 列出路由
openstack subnet list# 列出子网
openstack router remove subnet <路由_ID或名称> <子网_ID或名称># 移除路由关联的子网接口
openstack router delete <路由_ID或名称># 删除路由
安全组
创建
# 创建安全组,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
查看
openstack security group list # 查看所有安全组列表
openstack security group show cec-sg # 查看具体某个安全组
删除
# 列出安全组(排除默认组)
openstack security group list | grep -v "default"
# 删除安全组
openstack security group delete <安全组_ID或名称>
浮动IP
创建
openstack network list --external # 查看可用的外部网络
openstack floating ip create public # 从外部网络"public"中创建一条浮动IP
openstack floating ip create [--subnet subnet_192.168.26] public # 从public的指定子网中创建一条浮动IP
查看
openstack floating ip list # 查看浮动IP列表
openstack floating ip show 192.168.26.212 # 查看具体某条浮动IP
删除
# 列出浮动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>
镜像管理
从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.img
或wget -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
查看
openstack image list # 查看所有镜像列表
openstack image show cirros-0.4.0-x86_64 # 查看具体镜像信息
删除
# 列出镜像
openstack image list
# 删除镜像
openstack image delete <镜像_ID或名称>
虚拟机管理
虚拟机规格
# 创建虚拟机规格,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
创建虚拟机
# 创建虚拟机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
实验中发现
nova-scheduler
服务宕机了,通过openstack compute service list
可查看内置服务状态,使用systemctl start openstack-nova-scheduler
重新启动服务。
使用openstack server list/show
可以查看虚拟机信息。
使用ssh登录虚拟机,cirros默认用户为cirros
,密码为gocubsgo
。
删除虚拟机
# 列出云主机
openstack server list
# 解绑浮动IP(从云主机端口解绑)
openstack floating ip unset <浮动IP_ID>
# 删除云主机
openstack server delete <云主机_ID或名称>
卷管理
创建卷
#新建一个卷(卷大小5GB,卷命名为myVol)
openstack volume create --size 5 --availability-zone nova myVol
查看卷列表
openstack volume list
卷快照
# 对myVol创建快照,命名为snapshot-myvol
openstack volume snapshot create --volume myVol snapshot-myvol
# 显示快照
openstack volume snapshot list --volume myVol
删除卷
#1.先删除快照
openstack volume snapshot delete snapshot-myvol
#2.再删除卷
openstack volume delete myVol