您的位置:

OpenStack是什么?

OpenStack是一个开源的云计算平台,用于构建和管理公共或私有云的软件。它由几个子系统组成,包括计算(Nova),网络(Neutron),存储(Cinder)和图像服务(Glance)等。

一、计算(Nova)

计算子系统(Nova)通过利用虚拟化技术来管理和分配计算资源。 Nova 主要以 OpenStack API 的形式呈现,支持许多下层虚拟化技术,如 KVM、XenServer 以及 VMware。

它可以轻松地添加或删除计算节点,增加或减少计算资源。进一步,Nova 还提供了一些其他特性,如弹性伸缩组、自动化调整等,以提高云计算的效率和利用率。

下面是一个使用 Nova API 创建实例(instance)的Python示例代码。

import novaclient.v2.client as nvclient

def get_nova_creds():
    d = {}
    d['version'] = '2'
    d['username'] = 'admin'
    d['password'] = 'password'
    d['auth_url'] = 'http://controller:35357/v2.0'
    d['project_name'] = 'admin'
    return d

creds = get_nova_creds()
nova = nvclient.Client(**creds)

image = nova.images.find(name="cirros")
flavor = nova.flavors.find(name="m1.tiny")
instance = nova.servers.create(name="myinstance", image=image, flavor=flavor)

二、网络(Neutron)

网络子系统(Neutron)提供了处理与网络相关的组件和管理器,如网络拓扑和网络服务的定义。它允许用户创建虚拟网络和子网络,并为虚拟机分配IP地址。

Neutron 还提供了软件定义网络(SDN)功能,可用于动态地配置和管理网络,以满足各种需求,如增强云安全性、优化网络负载平衡,以及实现软件定义的网络功能。

下面是一个使用 Neutron API 创建网络(network)的Python示例代码。

import neutronclient.v2_0.client as neuclient

def get_neutron_creds():
    d = {}
    d['username'] = 'admin'
    d['password'] = 'password'
    d['auth_url'] = 'http://controller:35357/v2.0'
    d['tenant_name'] = 'admin'
    return d

creds = get_neutron_creds()
neutron = neuclient.Client(**creds)

net_dict = {'name': 'my_network', 'admin_state_up': True}
network = neutron.create_network({'network': net_dict})

三、存储(Cinder)

存储子系统(Cinder)提供了对存储服务的管理和访问,可以创建与删除块存储卷,附加或分离卷,并将其分配给虚拟机。

Cinder 还支持多种存储后端,包括本地存储、卷存储、对象存储、文件存储等。

下面是一个使用 Cinder API 创建卷(volume)的Python示例代码。

import cinderclient.v2.client as ciclient

def get_cinder_creds():
    d = {}
    d['version'] = '2'
    d['username'] = 'admin'
    d['password'] = 'password'
    d['auth_url'] = 'http://controller:35357/v2.0'
    d['project_id'] = 'admin'
    return d

creds = get_cinder_creds()
cinder = ciclient.Client(**creds)

vol = cinder.volumes.create(size=1, display_name='my_volume')

四、图像服务(Glance)

图像服务子系统(Glance)提供了管理虚拟机镜像的方式,支持镜像的上传、管理和变更。通过 Glance API,用户可以浏览和使用存储在 Glance 中的镜像。

Glance 支持不同的镜像格式,如 QCOW2、VMDK 和 RAW 等,并且用户可以通过 API 对其进行操作。

下面是一个使用 Glance API 创建镜像(image)的Python示例代码。

from glanceclient import Client

def get_glance_creds():
    d = {}
    d['username'] = 'admin'
    d['password'] = 'password'
    d['auth_url'] = 'http://controller:35357/v2.0'
    d['tenant_name'] = 'admin'
    return d

creds = get_glance_creds()
glance = Client('2', **creds)

with open('/path/to/image', 'r') as img_file:
    image = glance.images.create(name='my_image',
                                 disk_format='qcow2',
                                 container_format='bare')
    glance.images.upload(image.id, img_file)

五、总结

如上所述,每个子系统都有其自己的功能和API,用于构建和管理 OpenStack 云。通过它们,用户可以轻松地管理计算、网络、存储和镜像服务。但是,需要注意到每个子系统的交互和配置,以确保 OpenStack 系统顺利运行。