OpenStack Dalmatian : Add Compute Nodes (GPU)2024/10/04 |
Add GPU attached Compute Nodes to use GPU on virtual machine instances. On this example, add [node02.srv.world] like follows. ------------+--------------------------+--------------------------+------------ | | | eth0|10.0.0.30 eth0|10.0.0.50 eth0|10.0.0.51 +-----------+-----------+ +-----------+-----------+ +-----------+-----------+ | [ dlp.srv.world ] | | [ network.srv.world ] | | [ node01.srv.world ] | | (Control Node) | | (Network Node) | | (Compute Node) | | | | | | | | MariaDB RabbitMQ | | Open vSwitch | | Libvirt | | Memcached Nginx | | Neutron Server | | Nova Compute | | Keystone httpd | | OVN-Northd | | Open vSwitch | | Glance Nova API | | Nginx | | OVN Metadata Agent | | | | | | OVN-Controller | +-----------------------+ +-----------------------+ +-----------------------+ ------------+------------ | eth0|10.0.0.52 +-----------+-----------+ | [ node02.srv.world ] | | (Compute Node (GPU)) | | | | Libvirt | | Nova Compute | | Open vSwitch | | OVN Metadata Agent | | OVN-Controller | +-----------------------+ |
[1] |
On the new Node with GPU, Configure GPU Passthrough setting, refer to here for [1]. |
[2] |
On the new Node with GPU, add it to Openstack Cluster as a Compute Node, refer to here. |
[3] | On the new Node with GPU, Configure additional settings for Nova-Compute. |
root@node02:~# lspci -nn | grep -i nvidia 81:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104 [GeForce RTX 3060] [10de:2487] (rev a1) 81:00.1 Audio device [0403]: NVIDIA Corporation GA104 High Definition Audio Controller [10de:228b] (rev a1)
root@node02:~#
vi /etc/nova/nova.conf
# add to last line
# add [vendor_id], [product_id] of passthrough device
[pci]
passthrough_whitelist = { "vendor_id": "10de", "product_id": "2487" }
systemctl restart nova-compute
|
[4] | On Control Node, Change Nova settings. |
root@dlp ~(keystone)#
vi /etc/nova/nova.conf
# add to last line
# add [vendor_id], [product_id] that are the same one on compute node
# for the [name], set any name you like
[pci]
alias: { "vendor_id":"10de", "product_id":"2487", "device_type":"type-PCI", "name":"RTX-3060" }
[filter_scheduler]
enabled_filters = PciPassthroughFilter
root@dlp ~(keystone)#
systemctl restart nova-api nova-scheduler
# create [flavor] for GPU instance root@dlp ~(keystone)# openstack flavor create --id 6 --vcpus 4 --ram 8192 --disk 20 --property "pci_passthrough:alias"="RTX-3060:1" gpu1.small +----------------------------+------------------------------------+ | Field | Value | +----------------------------+------------------------------------+ | OS-FLV-DISABLED:disabled | False | | OS-FLV-EXT-DATA:ephemeral | 0 | | description | None | | disk | 20 | | id | 6 | | name | gpu1.small | | os-flavor-access:is_public | True | | properties | pci_passthrough:alias='RTX-3060:1' | | ram | 8192 | | rxtx_factor | 1.0 | | swap | 0 | | vcpus | 4 | +----------------------------+------------------------------------+root@dlp ~(keystone)# openstack flavor list +----+------------+-------+------+-----------+-------+-----------+ | ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public | +----+------------+-------+------+-----------+-------+-----------+ | 1 | m1.tiny | 2048 | 10 | 0 | 1 | True | | 2 | m1.small | 4096 | 10 | 0 | 2 | True | | 3 | m1.medium | 8192 | 10 | 0 | 4 | True | | 4 | m1.large | 16384 | 10 | 0 | 8 | True | | 5 | m2.medium | 8192 | 10 | 10 | 4 | True | | 6 | gpu1.small | 8192 | 20 | 0 | 4 | True | +----+------------+-------+------+-----------+-------+-----------+ |
[5] | Verify settings to create a GPU instance with any Openstack user. |
ubuntu@dlp ~(keystone)$ openstack network list +---------------------------------+---------+----------------------------------+ | ID | Name | Subnets | +---------------------------------+---------+----------------------------------+ | 2da36a04-0d3e-4de8-9be8- | private | bc45dd3e-0b15-42ca-a37b- | | a2972c15bbe4 | | 94f2feaf341e | | ce38ba4f-6066-4e93-ae59- | public | 22837749-299e-4323-bfc3- | | de238fb6ed08 | | 3120c8c2d635 | +---------------------------------+---------+----------------------------------+ubuntu@dlp ~(keystone)$ netID=$(openstack network list | grep private | awk '{ print $2 }')
ubuntu@dlp ~(keystone)$
ubuntu@dlp ~(keystone)$ openstack server create --flavor gpu1.small --image Ubuntu2404 --security-group secgroup01 --nic net-id=$netID --key-name mykey Ubuntu-2404GPU
openstack server list +-------------+-------------+---------+--------------+------------+------------+ | ID | Name | Status | Networks | Image | Flavor | +-------------+-------------+---------+--------------+------------+------------+ | a0866408- | Ubuntu- | ACTIVE | private=192. | Ubuntu2404 | gpu1.small | | 3905-4a31- | 2404GPU | | 168.100.225 | | | | bebf- | | | | | | | f3ae9b6faf8 | | | | | | | 0 | | | | | | | b8fcec95- | Ubuntu-2404 | SHUTOFF | private=10.0 | Ubuntu2404 | m1.small | | d25f-4f1f- | | | .0.203, 192. | | | | 95ec- | | | 168.100.99 | | | | 91ee1e0e66b | | | | | | | 1 | | | | | | +-------------+-------------+---------+--------------+------------+------------+ubuntu@dlp ~(keystone)$ openstack floating ip create public +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | created_at | 2024-10-04T08:01:19Z | | description | | | dns_domain | | | dns_name | | | fixed_ip_address | None | | floating_ip_address | 10.0.0.249 | | floating_network_id | ce38ba4f-6066-4e93-ae59-de238fb6ed08 | | id | f2a37ece-2a33-49e5-8227-5f3675652986 | | name | 10.0.0.249 | | port_details | None | | port_id | None | | project_id | 84e315c8d65e4b3cb33aaf69c9eed0c3 | | qos_policy_id | None | | revision_number | 0 | | router_id | None | | status | DOWN | | subnet_id | None | | tags | [] | | updated_at | 2024-10-04T08:01:19Z | +---------------------+--------------------------------------+ubuntu@dlp ~(keystone)$ openstack server add floating ip Ubuntu-2404GPU 10.0.0.249 ubuntu@dlp ~(keystone)$ ssh ubuntu@10.0.0.249
The authenticity of host '10.0.0.249 (10.0.0.249)' can't be established.
ED25519 key fingerprint is SHA256:z9ZmvIECLKGvR+DtFHpUhFUrv8uMThljmp83tgPPkco.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.0.249' (ED25519) to the list of known hosts.
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-44-generic x86_64)
.....
.....
ubuntu@ubuntu-2404gpu:~$ubuntu@ubuntu-2404gpu:~$ lspci | grep -i nvidia 00:05.0 VGA compatible controller: NVIDIA Corporation GA104 [GeForce RTX 3060] (rev a1) |
Sponsored Link |