启动实例

2.1 创建网络

在启动实例之前,您必须创建必须的虚拟机网络设施。对于网络选项1(Provider networking)通过L2(桥/交换机)设备连接到物理网络。这个网络包括为实例提供IP地址的DHCP服务器。

admin或者其他权限用户必须创建这个网络,因为它直接连接到物理网络设施,ref

. admin-openrc
# 创建网络
openstack network create --share --external \
  --provider-physical-network provider \
  --provider-network-type flat provider
  • –shared: 选项允许所有项目使用虚拟网络;
  • –provider:physical_network provider & –provider:network_type flat options connect the flat virtual network to the flat (native/untagged) physical network on the eth1 interface on the host using information from the following files:

/etc/neutron/plugins/ml2/ml2_conf.ini:

[ml2_type_flat]
flat_networks = provider

/etc/neutron/plugins/ml2/linuxbridge_agent.ini:

[linux_bridge]
physical_interface_mappings = provider:eth0

2.2 创建一个子网

subnet的ip范围一定要避开controller/dhcp(subnet第一个可用ip),否则导致虚拟机开机cloud-init不能正常获取metadata,进而导致开机超慢 & ssh key 无法注入(不能ssh登录)!!!
此处填坑一周,感谢同事飞哥的协助!m( m( m( m( m(

openstack subnet create --network provider \
  --allocation-pool start=172.17.3.200,end=172.17.3.230 \
  --dns-nameserver 119.29.29.29 --gateway 172.17.3.253 \
  --subnet-range 172.17.3.0/24 provider

2.3 验证

# 查看网络列表
openstack network list
# 查看子网列表
openstack subnet list

openstack flavor create --vcpus 1 --ram 1024 --disk 10 m1.micro

大部分云镜像支持公共密钥认证而不是传统的密码认证。在启动实例前,你必须添加一个公共密钥到计算服务。

# 导入租户demo的凭证
. demo-openrc
# 生成和添加秘钥对,跳过执行 ssh-keygen 命令使用已存在的公钥
ssh-keygen -q -N ""
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
# 列出公钥
openstack keypair list

默认情况下, default安全组适用于所有实例并且包括拒绝远程访问实例的防火墙规则。对诸如CirrOS这样的Linux镜像,我们推荐至少允许ICMP (ping) 和安全shell(SSH)规则。

# 允许icmp
openstack security group rule create --proto icmp default
# 允许ssh
openstack security group rule create --proto tcp --dst-port 22 default

本例采用provider networking,所以只有在公网(和其他物理机所在的网段)创建实例.

6.1 确定实例选项

启动一台实例,您必须至少指定一个类型、镜像名称、网络、安全组、密钥和实例名称。

在控制节点上:

. demo-openrc
# 列出可用类型
openstack flavor list
# 列出可用镜像
openstack image list
# 列出可用网络,使用ID而不是名称
openstack network list
#列出可用的安全组
openstack security group list

6.2 创建实例

  • 使用provider网络的ID替换PUBLIC_NET_ID;
  • 如果你选择选项1且你的环境只有一个网络,可以省去-nic选项,因为OpenStack会自动选择这个唯一可用的网络;
  • 实例名为instance-01;
openstack server create --flavor m1.micro --image cirros \
  --nic net-id=$PROVIDER_NET_ID --security-group default \
  --key-name mykey instance-01

6.3 检查实例的状态

当构建过程完全成功后,状态会从 BUILD 变为 ACTIVE:

openstack server list

6.4 使用虚拟控制台访问实例

openstack console url show instance-01
# 用vnc的url就可以访问了,域名的话写hosts或者替换为controller的ip
+-------+---------------------------------------------------------------------------------+
| Field | Value                                                                           |
+-------+---------------------------------------------------------------------------------+
| type  | novnc                                                                           |
| url   | http://controller:6080/vnc_auto.html?token=5eeccb47-525c-4918-ac2a-3ad1e9f1f493 |
+-------+---------------------------------------------------------------------------------+

6.5 块设备存储

# 加载 demo证书作为非管理员项目执行
. demo-openrc
# 创建一个 10 GB 的卷
openstack volume create --size 10 volume1
#过会卷状态应该从creating变成available
openstack volume list
# 附加 volume1卷到instance-01云主机
openstack server add volume instance-01 volume1
# 列出卷
openstack volume list

然后ssh到实例查看操作块设备.


  • virtualization/openstack/启动实例.txt
  • 最后更改: 2019/04/16 18:31
  • (外部编辑)