本文介绍基于
devstack搭建的OpenStack环境创建云主机
项目、用户创建
$ openstack domain create --description "Default Domain" default
$ openstack project create --domain default --description "Admin Project" admin
$ openstack user create --domain default --password-prompt admin
$ openstack role create admin
$ openstack role add --project admin --user admin admin创建cirros镜像
下载地址:http://download.cirros-cloud.net/
默认用户名/密码:cirros/gocubsgo
openstack image create cirros-0.5.1-x86_64-disk --public --container-format bare --disk-format qcow2 admin < cirros-0.5.x-aarch64-disk.img网络创建
创建network
创建subnet
创建子网时:
- 若指定
--dhcp会在网络节点自动创建Linux net namespaces,netns的名称为qdhcp-<network-id>。其中10.0.0.2为dhcp的IP地址。 - 若没有指定
--dhcp,当前不会创建netns
查看 netns 中信息如下:
可以在 netns 看到一个tap设备:tap9f56395b-d1,IP地址为:10.0.0.2/24
- tap设备命名规则:
tap<port-id-prefix-11> tap9f56395b-d1会自动挂载到OVS的br-int上
创建安全组
可以根据自己的需求,添加其他的规则。
创建vm
创建
新创建主机的IP地址为:10.0.0.242
qemu 进程
其中,网络配置 tap,fd=33,信息如下:
-netdev tap,fd=33,id=hostnet0 -device virtio-net-pci,host_mtu=1450,netdev=hostnet0,id=net0,mac=fa:16:3e:34:27:00,bus=pci.0,addr=0x3查看 qemu 的 /proc/4221/fd/33 指向 /dev/net/tun 设备
$ sudo ls -lh /proc/4221/fd/ |grep tun
lrwx------ 1 libvirt-qemu kvm 64 Mar 24 10:13 33 -> /dev/net/tun
$ sudo file /proc/4221/fd/33
/proc/4221/fd/33: symbolic link to /dev/net/tun
$ sudo cat /proc/4221/fdinfo/33
pos: 54
flags: 0104002
mnt_id: 27
iff: tap0a82ef18-98 # 与OVS br-int的名称一致其他查看 tap/tun 设备命令:
$ sudo ip tuntap list | grep tap0a82ef18-98
tap0a82ef18-98: tap vnet_hdrOVS 信息
- ovs br 信息
其中 tap0a82ef18-98 为新增的 tap设备,0a82ef18-98 为 port 10.0.0.242 ID 0a82ef18-9834-4baf-9f96-c2a586e56f48 的前11位
因此,VM 在 OVS br-int 网桥 tap 命令规则为:tap<port-id-prefix-11>
- ovs br-int 流表信息
ping 验证
- 创建安全组
$ openstack security group rule create 6e28e3c1-6959-4dfb-99b1-b7277e6353a0 --ingress --remote-ip 0.0.0.0/0 --protocol icmp --project 45837e6267c44d7788a919d6e342e64c
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| created_at | 2021-01-03T02:39:06Z |
| description | |
| direction | ingress |
| ether_type | IPv4 |
| id | 4f067654-818a-4d90-b0d6-d0ffc346e0a4 |
| name | None |
| port_range_max | None |
| port_range_min | None |
| project_id | 45837e6267c44d7788a919d6e342e64c |
| protocol | icmp |
| remote_group_id | None |
| remote_ip_prefix | 0.0.0.0/0 |
| revision_number | 0 |
| security_group_id | 6e28e3c1-6959-4dfb-99b1-b7277e6353a0 |
| tags | [] |
| updated_at | 2021-01-03T02:39:06Z |
+-------------------+--------------------------------------+- 在
netns中ping
$ sudo ip netns exec qdhcp-e022f4ea-e955-4bcd-b2fa-af6616d3eb12 ping -c 1 10.0.0.242
PING 10.0.0.242 (10.0.0.242) 56(84) bytes of data.
64 bytes from 10.0.0.242: icmp_seq=1 ttl=64 time=1.17 ms
--- 10.0.0.242 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.178/1.178/1.178/0.000 ms至此,基于OpenStack创建VM已经介绍完毕,接下来会依次介绍VM其他配置。