接着OpenStack(二)——使用Kolla部署OpenStack-allinone雲平台繼續操作。
特別感謝https://www.cnblogs.com/openstackteam/p/5519961.html,Exsi虛擬機下網絡不通卡了我半個月。特此說明:如果OpenStack的宿主機是Exsi創建的虛擬機,則必須進行如下操作,選中OpenStack所在的Esxi系統-->進入摘要-->選中OpenStack宿主機所使用的虛擬網卡-->右鍵,編輯設置-->選擇設置頁面的安全-->混雜模式、MAC地址更改、偽傳輸全部設置為接受。希望后來者不會再被坑了
(1).使用命令創建OpenStack雲主機
1)安裝OpenStack客戶端,方便使用命令行管理
[root@OpenStack240 ~]# pip install python-openstackclient //pip安裝OpenStack客戶端 ERROR: Package 'more-itertools' requires a different Python: 2.7.5 not in '>=3.5' [root@OpenStack240 ~]# pip install more-itertools==5.0.0 [root@OpenStack240 ~]# pip install python-openstackclient ERROR: dogpile-cache 0.9.0 has requirement decorator>=4.0.0, but you'll have decorator 3.4.0 which is incompatible. ERROR: Cannot uninstall 'ipaddress'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall. [root@OpenStack240 ~]# pip install dogpile-cache [root@OpenStack240 ~]# pip install --ignore-installed ipaddress [root@OpenStack240 ~]# pip install python-openstackclient
可以看到上面總共報了3個錯誤。第一個和第二個錯誤較為簡單,只需要升級相應模塊即可;第三個錯誤需要強制升級。
注意1:在pip安裝時遇到“ERROR: Package 'more-itertools' requires a different Python: 2.7.5 not in '>=3.5'”並不一定要升級python,也可以使用“pip install more-itertools==5.0.0”解決該問題。
注意2:在pip安裝時遇到“ERROR: Cannot uninstall '模塊名'. It is a distutils installed...”時,需要使用“pip install --ignore-installed [報錯的模塊名]”安裝,之后再重新pip安裝。
2)安裝OpenStack網絡相關命令
[root@OpenStack240 ~]# pip install python-neutronclient
如果出現某個模塊已安裝的提示,可以使用“pip install --ignore-installed [模塊]”來強制安裝解決該問題。
3)修改init-runonce腳本指定VIP地址范圍,並使用該腳本創建OpenStack雲項目
修改init-runonce腳本
[root@OpenStack240 ~]# vim /usr/share/kolla-ansible/init-runonce //修改第19~21行,是網卡ens33所接入的局域網地址 EXT_NET_CIDR='192.168.128.0/24' EXT_NET_RANGE='start=192.168.128.200,end=192.168.128.210' //取值范圍 EXT_NET_GATEWAY='192.168.128.254'
使用init-runonce腳本創建一個OpenStack雲項目。注意:該init-runonce腳本只能運行一次,斷開就不能再運行了
//查看是否存在,如果不存在運行kolla-ansible -i /etc/kolla/all-in-one post-deploy [root@OpenStack240 ~]# ls /etc/kolla/admin-openrc.sh /etc/kolla/admin-openrc.sh [root@OpenStack240 ~]# source /etc/kolla/admin-openrc.sh //加載到環境變量中 [root@OpenStack240 ~]# sh /usr/share/kolla-ansible/init-runonce //執行init-runonce腳本 //成功后會提示執行以下命令,可能會不一樣,但只要沒有報錯,執行就可以了 To deploy a demo instance, run: openstack server create \ --image cirros \ --flavor m1.tiny \ --key-name mykey \ --network demo-net \ demo1 //執行提示的命令 [root@OpenStack240 ~]# openstack server create \ > --image cirros \ //指定使用的鏡像ID > --flavor m1.tiny \ //指定使用的flavor名稱 > --key-name mykey \ //指定key名稱 > --network demo-net \ //指定網絡名稱 > demo1 //指定新建虛擬機的名稱
虛擬機默認賬號密碼在登錄時會有提示,如下
擴展:創建虛擬機命令中的參數可以到Web查看,當然也可以使用命令查看參數列表。確保加載了環境變量“source /etc/kolla/admin-openrc.sh”,才能使用以下命令。
//查看已有鏡像ID [root@OpenStack240 ~]# openstack image list /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.7) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning) +--------------------------------------+--------+--------+ | ID | Name | Status | +--------------------------------------+--------+--------+ | 3133fb61-24d2-4ee4-88d2-d7f4ae313ee4 | cirros | active | +--------------------------------------+--------+--------+ [root@OpenStack240 ~]# glance image-list //鏡像管理組件glance /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.7) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning) +--------------------------------------+--------+ | ID | Name | +--------------------------------------+--------+ | 3133fb61-24d2-4ee4-88d2-d7f4ae313ee4 | cirros | +--------------------------------------+--------+ //查看flavor [root@OpenStack240 ~]# openstack network flavor list /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.7) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning) [root@OpenStack240 ~]# nova flavor-list //計算管理組件nova /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.7) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning) +----+-----------+------------+------+-----------+------+-------+-------------+-----------+-------------+ | ID | Name | Memory_MiB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | Description | +----+-----------+------------+------+-----------+------+-------+-------------+-----------+-------------+ | 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True | - | | 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True | - | | 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True | - | | 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True | - | | 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True | - | +----+-----------+------------+------+-----------+------+-------+-------------+-----------+-------------+ //查看網絡 [root@OpenStack240 ~]# openstack network list /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.7) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning) +--------------------------------------+----------+--------------------------------------+ | ID | Name | Subnets | +--------------------------------------+----------+--------------------------------------+ | 2de2f8e9-f134-4d92-8202-be9b45d09355 | demo-net | 3b52a206-72e8-4b0e-8c28-827619c62b90 | | 8c73de34-f031-435a-9d80-ceaba6573d3e | public1 | 9d0c5344-d0de-465d-9eb3-65906d80d6e1 | +--------------------------------------+----------+--------------------------------------+ [root@OpenStack240 ~]# neutron net-list //網絡組件neutron /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.7) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning) neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead. +--------------------------------------+----------+----------------------------------+-------------------------------------------------------+ | id | name | tenant_id | subnets | +--------------------------------------+----------+----------------------------------+-------------------------------------------------------+ | 2de2f8e9-f134-4d92-8202-be9b45d09355 | demo-net | 7fff31018c7b4e0f82e9431c5c86e87c | 3b52a206-72e8-4b0e-8c28-827619c62b90 10.0.0.0/24 | | 8c73de34-f031-435a-9d80-ceaba6573d3e | public1 | 7fff31018c7b4e0f82e9431c5c86e87c | 9d0c5344-d0de-465d-9eb3-65906d80d6e1 192.168.128.0/24 | +--------------------------------------+----------+----------------------------------+-------------------------------------------------------+
在以上沒有錯誤的情況下,此時就可以到Web頁面看到名為demo1的實例了(項目-->計算-->實例)。如下:
剩下的配置可以通過Web頁面進行配置。
4)給雲主機分配浮動IP地址
在Web頁面中選擇:項目-->網絡-->浮動IP-->分配IP給項目
之后出出現如下頁面,選擇資源池,選填描述,點擊分配IP
創建成功后的浮動IP如下所示:
另外可以通過項目-->網絡-->網絡拓撲查看網絡拓撲結構,如下:
還可以在項目-->網絡-->網絡查看網絡信息,如下:
最重要的綁定浮動IP步驟如下,在項目-->計算-->實例-->更多-->綁定浮動IP
出現如下頁面,選擇IP地址和待連接的端口,進行關聯
最后如下:
(2).使用命令查看雲主機項目信息和網絡連通性
要在確保加載了環境變量的情況下執行以下命令“source /etc/kolla/admin-openrc.sh”。
[root@OpenStack240 ~]# openstack router list /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.7) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning) +--------------------------------------+-------------+--------+-------+----------------------------------+-------------+-------+ | ID | Name | Status | State | Project | Distributed | HA | +--------------------------------------+-------------+--------+-------+----------------------------------+-------------+-------+ | f8e89ffc-89c4-4ae9-8a1a-f8d694997f5f | demo-router | ACTIVE | UP | 7fff31018c7b4e0f82e9431c5c86e87c | False | False | +--------------------------------------+-------------+--------+-------+----------------------------------+-------------+-------+ [root@OpenStack240 ~]# openstack router show demo-router /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.7) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning) +-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Field | Value | +-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | nova | | created_at | 2019-11-30T08:37:36Z | | description | | | distributed | False | | external_gateway_info | {"network_id": "8c73de34-f031-435a-9d80-ceaba6573d3e", "enable_snat": true, "external_fixed_ips": [{"subnet_id": "9d0c5344-d0de-465d-9eb3-65906d80d6e1", "ip_address": "192.168.128.206"}]} | | flavor_id | None | | ha | False | | id | f8e89ffc-89c4-4ae9-8a1a-f8d694997f5f | | interfaces_info | [{"subnet_id": "3b52a206-72e8-4b0e-8c28-827619c62b90", "ip_address": "10.0.0.1", "port_id": "a15eefcc-f85c-4ea9-8b89-c6e35047b4aa"}] | | location | cloud='', project.domain_id=, project.domain_name='Default', project.id='7fff31018c7b4e0f82e9431c5c86e87c', project.name='admin', region_name='RegionOne', zone= | | name | demo-router | | project_id | 7fff31018c7b4e0f82e9431c5c86e87c | | revision_number | 4 | | routes | | | status | ACTIVE | | tags | | | updated_at | 2019-11-30T08:37:47Z | +-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ [root@OpenStack240 ~]# openstack network list //查看網絡信息 /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.7) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning) +--------------------------------------+----------+--------------------------------------+ | ID | Name | Subnets | +--------------------------------------+----------+--------------------------------------+ | 2de2f8e9-f134-4d92-8202-be9b45d09355 | demo-net | 3b52a206-72e8-4b0e-8c28-827619c62b90 | | 8c73de34-f031-435a-9d80-ceaba6573d3e | public1 | 9d0c5344-d0de-465d-9eb3-65906d80d6e1 | +--------------------------------------+----------+--------------------------------------+ [root@OpenStack240 ~]# openstack subnet list //查看子網信息 /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.7) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning) +--------------------------------------+----------------+--------------------------------------+------------------+ | ID | Name | Network | Subnet | +--------------------------------------+----------------+--------------------------------------+------------------+ | 3b52a206-72e8-4b0e-8c28-827619c62b90 | demo-subnet | 2de2f8e9-f134-4d92-8202-be9b45d09355 | 10.0.0.0/24 | | 9d0c5344-d0de-465d-9eb3-65906d80d6e1 | public1-subnet | 8c73de34-f031-435a-9d80-ceaba6573d3e | 192.168.128.0/24 | +--------------------------------------+----------------+--------------------------------------+------------------+ [root@OpenStack240 ~]# openstack server show demo1 //查看雲主機實例信息 /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.7) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning) +-------------------------------------+----------------------------------------------------------+ | Field | Value | +-------------------------------------+----------------------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | nova | | OS-EXT-SRV-ATTR:host | OpenStack240 | | OS-EXT-SRV-ATTR:hypervisor_hostname | OpenStack240 | | OS-EXT-SRV-ATTR:instance_name | instance-00000001 | | OS-EXT-STS:power_state | Running | | OS-EXT-STS:task_state | None | | OS-EXT-STS:vm_state | active | | OS-SRV-USG:launched_at | 2019-11-30T08:40:18.000000 | | OS-SRV-USG:terminated_at | None | | accessIPv4 | | | accessIPv6 | | | addresses | demo-net=10.0.0.45, 192.168.128.203 | | config_drive | | | created | 2019-11-30T08:39:45Z | | flavor | m1.tiny (1) | | hostId | d6416488e7208ea8095807bf5c7dd880b962d890292ba8f8940697f2 | | id | c90e4476-ec3f-44d2-8041-58c65a65e6dc | | image | cirros (3133fb61-24d2-4ee4-88d2-d7f4ae313ee4) | | key_name | mykey | | name | demo1 | | progress | 0 | | project_id | 7fff31018c7b4e0f82e9431c5c86e87c | | properties | | | security_groups | name='default' | | status | ACTIVE | | updated | 2019-11-30T08:40:18Z | | user_id | b46452d885d14cb78fb4640ed8672ffe | | volumes_attached | | +-------------------------------------+----------------------------------------------------------+
(3).使用Web界面創建OpenStack雲主機
1)創建一個OpenStack全新的項目,並分配給一個新用戶
創建一個名為testuser的用戶,身份管理-->用戶-->創建用戶-->填寫用戶名和密碼-->創建用戶
創建一個名為test的項目,身份管理-->項目-->創建項目-->填寫項目名稱-->轉到項目成員-->通過左側的加號將testuser加入右邊,並選擇成員的角色-->創建項目。項目組類似用戶組的作用,根據需求使用。
查看項目的配額,根據需求修改。身份管理-->項目-->修改配額-->編輯計算里的實例、VCPU數量和內存(物理機CPU4核,內存16G)-->轉到網絡-->修改浮動IP-->保存。
另外,還可以回到身份管理-->用戶-->testuser的編輯-->將test項目作為testuser的主項目
此時我們就可以轉到testuser用戶下進行操作。
2)創建實例類型
創建一個新的實例類型,在創建實例時選擇不同的實例類型分配設置好的資源大小,管理員-->計算-->實例類型-->創建實例類型-->填寫名稱、VCPU數量、內存和根磁盤-->創建實例類型。注意:設置的VCPU數量、內存和根磁盤必須小於物理機剩余資源。
說明:臨時磁盤是指除根磁盤(系統盤)和Swap磁盤之外的磁盤,可以將其當作數據盤。
3)上傳鏡像
這里以cirros鏡像作為例子,下載地址http://download.cirros-cloud.net/0.4.0/,下載cirros-0.4.0-[系統架構]-disk.img。現在完成后通過網頁創建鏡像,管理員-->計算-->鏡像-->創建鏡像-->填寫鏡像名稱,選擇鏡像文件地址,選擇鏡像格式-->創建鏡像,元數據根據需求進行修改。注意:cirros鏡像默認格式為qcow2格式
4)創建兩個網絡:內網和外網
創建內網in,管理員-->網絡-->網絡-->創建網絡-->填寫名稱,選擇項目和供應商網絡類型,填寫段ID-->當創建子網被選中時,點擊下一項進入創建子網頁面-->填寫子網相關信息,點擊下一項-->選中激活DHCP,填寫相關信息,點擊創建。
創建外網out,管理員-->網絡-->網絡-->創建網絡-->填寫名稱,選擇項目和供應商網絡類型,填寫物理網絡,勾選外部網絡,點擊下一項-->填寫子網相關信息,點擊下一項-->取消激活DHCP,填寫相關信息,點擊創建。注意:(基於供應商網絡為flat下)物理網絡需要是ml2_conf.ini文件中的參數“flat_networks = physnet1”,使用kolla安裝的請查看/etc/kolla/neutron-openvswitch-agent/ml2_conf.ini,完整安裝的請查看/etc/neutron/plugins/ml2/ml2_conf.ini。
創建完成后可以到項目-->網絡-->網絡拓撲中查看。
5)創建路由,連接內外網絡
創建一個路由連接內外網絡,管理員-->網絡-->路由-->創建路由-->填寫路由名稱、選擇項目和外部網絡-->新建路由。
此時虛擬路由與out網絡連接,但還沒有與in網絡連接,可以在網絡拓撲中明顯看出
所以現在需要是路由與in網絡連接,管理員-->網絡-->路由-->點擊路由的名稱,進入到內部編輯頁面-->接口-->添加接口-->選擇子網,填寫IP地址-->提交
等待幾秒查看兩個接口的狀態是否是運行中,然后再看網絡拓撲
6)創建專屬安全組
默認存在一個default安全組,規則為全部放行,實際使用中並不會如此使用,這里創建一個ssh-ping安全組,只放行TCP協議22端口(ssh)和所有ICMP協議(ping)。
創建名為ssh-ping的安全組,項目-->網絡-->安全組-->創建安全組-->填寫名稱-->創建安全組。
編輯ssh-ping安全組的規則,項目-->網絡-->安全組-->管理規則,進入管理規則頁面-->添加規則-->填寫相關信息-->添加。注意:0.0.0.0/0表示所有IP
7)創建專屬密鑰對
創建一個專屬密鑰對,項目-->計算-->密鑰對-->創建密鑰對-->填寫密鑰對名稱,選擇密鑰類型-->創建密鑰對。
密鑰可以點擊密鑰旁的小箭頭查看,或點擊密鑰名稱查看
8)分配浮動IP(外網IP)
准備一個浮動IP(外網IP),項目-->網絡-->浮動IP-->分配IP給項目-->選擇資源池-->分配IP
9)創建實例
准備工作全部完成后終於可以創建實例了,項目-->計算-->實例-->創建實例-->填寫實例名稱和數量-->點擊下一項,進入源頁面-->選擇源,將其中一個移動到上方-->點擊下一項,進入實例類型頁面-->將其中一個實例類型移動到上方-->點擊下一項,進入網絡頁面-->選擇內網-->網絡接口默認即可,直接跳到安全組-->調整安全組、密鑰對和其他配置-->創建實例
最后綁定浮動IP,
參考:https://blog.csdn.net/chenwei8280/article/details/79601885
https://blog.csdn.net/chenwei8280/article/details/80876451