OpenStack_Rocky版-9.创建云主机实例
1. 创建云主机实例
1.1 创建外部网络
1.1.1 创建provider外部网络
[root@controller ~]# source admin-openrc
[root@controller ~]# openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider
[root@controller ~]# openstack network list
#以admin用户登录dashboard查看创建的网络
1.1.2 创建子网
#在外部网络上创建一个子网
[root@controller ~]# openstack subnet create --network provider --allocation-pool start=192.168.1.80,end=192.168.1.90 --dns-nameserver 114.114.114.114 --gateway 192.168.1.2 --subnet-range 192.168.1.0/24 provider
[root@controller ~]# openstack subnet list
#以admin用户登录dashboard查看创建的子网
1.2 创建租户网络
创建通过NAT连接到物理网络基础结构的自助服务网络。该网络包括一个为实例提供IP地址的DHCP服务器。次网络上的实例可以自动访问外部网络。但是从外部网络访问此网络上的实例需要浮动IP地址。
这个demo或其他非特权用户可以创建这个网络,因为它仅提供与demo项目内实例的连接
#必须在自助服务网络之前创建提供商网络。
1.2.1 创建self-service网络
[root@controller ~]# source demo-openrc
[root@controller ~]# openstack network create selfservice1
#以admin用户登录dashboard查看
1.2.2 创建子网
[root@controller ~]# openstack subnet create --network selfservice1 --dns-nameserver 114.114.114.114 --gateway 172.16.1.1 --subnet-range 172.16.1.0/24 selfservice1-net1
#以demo用户登录dashboard查看网络拓扑
1.2.3 创建路由器
自助服务网络使用通常执行双向NAT的虚拟路由器连接到提供商网络。每个路由器至少包含一个自助服务网络上的接口和提供商网络上的网关。
提供商网络必须包含router:external选项以使自助服务路由器能够使用它来连接到外部网络。
[root@controller ~]# source demo-openrc
[root@controller ~]# openstack router create router
[root@controller ~]# openstack router list
1.2.4 将租户网络添加到路由器
#将自助服务网络子网添加为路由器上的接口
[root@controller ~]# neutron router-interface-add router selfservice1-net1
1.2.5 路由器连接到外部网络
#在路由器上的提供商网络上设置网关
[root@controller ~]# neutron router-gateway-set router provider
#切换demo用户登录dashboard查看网络拓扑变化
1.2.6 验证操作
[root@controller ~]# source admin-openrc
[root@controller ~]# ip netns
#列出路由器上的端口以确定提供商网络上的网关IP
[root@controller ~]# neutron router-port-list router
#从控制节点或计算节点ping此IP地址
1.3 创建实例类型
[root@controller ~]# openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
[root@controller ~]# openstack flavor create --id 1 --vcpus 1 --ram 1024 --disk 10 m2.nano
[root@controller ~]# openstack flavor list
1.4 生成秘钥对
[root@controller ~]# source demo-openrc
[root@controller ~]# ssh-keygen -q -N ""
Enter file in which to save the key (/root/.ssh/id_rsa): #Enter默认
[root@controller ~]# ll /root/.ssh/
total 12
-rw-------. 1 root root 1675 May 29 04:26 id_rsa
-rw-r--r--. 1 root root 397 May 29 04:26 id_rsa.pub
-rw-r--r--. 1 root root 182 May 28 21:23 known_hosts
#创建秘钥对,并将生成的公钥文件添加到秘钥对
[root@controller ~]# openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
验证秘钥是否添加成功
以demo用户登录dashboard查看
1.5 添加安全组规则
#允许ICMP
[root@controller ~]# openstack security group rule create --proto icmp default
#允许安全shell(SSH)访问
[root@controller ~]# openstack security group rule create --proto tcp --dst-port 22 default
#查看安全组及创建的安全组规则
[root@controller ~]# openstack security group list
[root@controller ~]# openstack security group rule list
切换到demo用户访问dashboard查看安全组规则
1.6 确认实例选项
要创建实例,必须至少指定flavor、镜像、网络、安全组、秘钥和实例名称
[root@controller ~]# source demo-openrc
[root@controller ~]# openstack flavor list
[root@controller ~]# openstack image list
[root@controller ~]# openstack network list
1.7 创建实例
在租户网络selfservice1上创建实例
[root@controller ~]# source demo-openrc
[root@controller ~]# openstack server create --flavor m1.nano --image "cirros" --nic net-id=7a8f4951-0313-4caf-8ae8-3accf95fae21 --security-group default --key-name mykey selfservice1-cirros1
查看实例状态
[root@controller ~]# openstack server list
#目前实例地址无法ping通
1.8 虚拟控制台访问实例
[root@controller ~]# source demo-openrc
#获取虚拟网络计算(VNC)会话URL并从Web浏览器访问它
[root@controller ~]# openstack console url show selfservice1-cirros1
#如果您的Web浏览器在无法解析控制器主机名的主机上运行,则可以使用控制节点上的管理接口的IP地址替换控制器。
#测试实例对外网的访问
#cirros默认账户:cirros 默认密码:cubswin:)
#ping 172.16.1.1 租户网络网关
#ping 192.168.1.2 本地外部网络网关
#ping www.baidu.com 通外网
#测试全部能够正常ping通
1.9 为实例分配浮动IP地址
如果想通过外网远程连接到实例,需要在外部网络上创建浮动IP地址,并将浮动ip地址关联到实例上,然后通过访问外部的浮动ip地址来访问实例
#在外部网络上生成浮动IP地址
[root@controller ~]# openstack floating ip create provider
#将浮动IP地址与实例关联
[root@controller ~]# openstack server add floating ip selfservice1-cirros1 192.168.1.85
#检查浮动IP地址的关联状态
[root@controller ~]# openstack server list
#在控制节点或计算节点上ping测试
#在本机上ping测试
1.10 远程SSH访问实例
[root@controller ~]# ssh cirros@192.168.1.85
The authenticity of host '192.168.1.85 (192.168.1.85)' can't be established.
RSA key fingerprint is SHA256:0XXhe1NVE8Xe2eefgkf5tQq2gLtHbN34T7ubLfHcRV8.
RSA key fingerprint is MD5:7e:e9:87:d8:86:24:cb:d9:f7:e2:a3:c8:43:c8:86:4c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.85' (RSA) to the list of known hosts.
cirros@192.168.1.85's password:
$