Openstack
目录
Openstack¶
|
运行在 Openstack 虚拟机实例上的集群 |
概述¶
身份验证¶
使用 OpenStack Identity 服务 (Keystone) 进行身份验证
获取 OpenStack Identity 服务 (Keystone) 的身份验证 URL (auth_url),并将其配置到 Dask 配置中的
cloudprovider.openstack.auth_url
。- 获取您的区域 (region),并将其配置到 Dask 配置中的
cloudprovider.openstack.region
。 $ openstack region list +-----------+---------------+-------------+ | Region | Parent Region | Description | +-----------+---------------+-------------+ | RegionOne | None | | +-----------+---------------+-------------+
- 获取您的区域 (region),并将其配置到 Dask 配置中的
生成应用程序凭据 (application credential)。
$ openstack application credential create dask --unrestricted +--------------+----------------------------------------------------------------------------------------+ | Field | Value | +--------------+----------------------------------------------------------------------------------------+ | description | None | | expires_at | None | | id | 0a0372dbedfb4e82ab66449c3316ef1e | | name | dask | | project_id | e99b6f4b9bf84a9da27e20c9cbfe887a | | roles | Member anotherrole | | secret | ArOy6DYcLeLTRlTmfvF1TH1QmRzYbmD91cbVPOHL3ckyRaLXlaq5pTGJqvCvqg6leEvTI1SQeX3QK-3iwmdPxg | | unrestricted | True | +--------------+----------------------------------------------------------------------------------------+
并将
application_credential_id
和application_credential_secret
配置到 Dask 配置中的cloudprovider.openstack.application_credential_id
和cloudprovider.openstack.application_credential_secret
。
所有这些变量都可以从OpenStack RC 文件或clouds.yaml 文件中获取。
示例配置文件¶
# ~/.config/dask/cloudprovider.yaml
cloudprovider:
openstack:
region: "RegionOne"
auth_url: "https://cloud.home.karatosun.xyz:5000"
application_credential_id: "0a0372dbedfb4e82ab66449c3316ef1e"
application_credential_secret: "ArOy6DYcLeLTRlTmfvF1TH1QmRzYbmD91cbVPOHL3ckyRaLXlaq5pTGJqvCvqg6leEvTI1SQeX3QK-3iwmdPxg"
auth_type: "v3applicationcredential"
您也可以将它们导出为环境变量。
$ export DASK_CLOUDPROVIDER__APPLICATION_CREDENTIAL_ID="0a0372dbedfb4e82ab66449c3316ef1e"
- class dask_cloudprovider.openstack.OpenStackCluster(region: str = None, size: str = None, image: str = None, docker_image: str = None, debug: bool = False, bootstrap: bool = True, **kwargs)[source]¶
运行在 Openstack 虚拟机实例上的集群
这个集群管理器构建了一个运行在通用 Openstack 云上的 Dask 集群
配置集群时,您可能会发现安装 'python-openstackclient' 客户端对于查询 Openstack API 以获取可用选项很有用。
https://github.com/openstack/python-openstackclient
- 参数
- region: str
OpenStack 中分配资源的区域名称。通常设置为 'default',除非在您的云配置中指定。
使用以下命令列出可用区域:openstack region list。
- auth_url: str
OpenStack Identity 服务 (Keystone) 的身份验证 URL。示例:https://cloud.example.com:5000
- application_credential_id: str
在 OpenStack 中创建的应用程序凭据 ID。
使用以下命令创建应用程序凭据:openstack application credential create
- application_credential_secret: str
与用于身份验证的应用程序凭据 ID 相关联的密钥。
- auth_type: str
使用的身份验证类型,对于使用 OpenStack 应用程序凭据,通常为 "v3applicationcredential"。
- network_id: str
OpenStack 中用于连接集群虚拟机的内部/私有网络的唯一标识符。
使用以下命令列出可用网络:openstack network list
- image: str
用于虚拟机的操作系统镜像名称或 ID。Dask Cloudprovider 将自动引导基于 Ubuntu 的镜像。其他镜像需要 Docker,对于 GPU,则需要 NVIDIA Drivers 和 NVIDIA Docker。
使用以下命令列出可用镜像:openstack image list
- keypair_name: str
用于实例访问的 SSH 密钥对的名称。请确保您已创建密钥对或使用现有密钥对。
使用以下命令列出可用密钥对:openstack keypair list
- security_group: str
定义实例防火墙规则的安全组名称。
- 默认值为 default。请确保配置了以下访问规则:
egress 0.0.0.0/0 在所有端口上,用于下载 docker 镜像和通用数据访问
ingress <internal-cidr>/8 在所有端口上,用于 worker 的内部通信
ingress 0.0.0.0/0 在 8786-8787 端口上,用于 dashboard/scheduler 的外部访问
(可选) ingress 0.0.0.0./0 在 22 端口上,用于 ssh 访问
使用以下命令列出可用安全组:openstack security group list
- create_floating_ip: bool
指定是否为每个实例分配浮动 IP,以启用外部访问。如果需要外部连接,请设置为 True。
- external_network_id: str
用于分配浮动 IP 的外部网络的 ID。
使用以下命令列出可用外部网络:openstack network list –external
- n_workers: int (可选)
初始化集群时的 worker 数量。默认为
0
。- worker_module: str
worker 运行的 Python 模块。默认为
distributed.cli.dask_worker
。- worker_options: dict
传递给 worker 类的参数。请参阅
distributed.worker.Worker
以了解默认的 worker 类。如果您设置了worker_module
,请参考自定义 worker 类的文档字符串。- scheduler_options: dict
传递给 scheduler 类的参数。请参阅
distributed.scheduler.Scheduler
。- env_vars: dict
传递给 worker 的环境变量。
- extra_bootstrap: list[str] (可选)
在引导阶段运行的额外命令。
- docker_image: string (可选)
在所有实例上运行的 Docker 镜像。
该镜像必须具有有效的 Python 环境并安装了
dask
,以便dask-scheduler
和dask-worker
命令可用。建议 Python 环境与创建OpenStackCluster
的本地环境匹配。对于 GPU 实例类型,Docker 镜像必须安装 NVIDIA 驱动程序和
dask-cuda
。默认情况下将使用
daskdev/dask:latest
镜像。
- 属性
asynchronous
我们是否在事件循环中运行?
- auto_shutdown
- bootstrap
- called_from_running_loop
- command
- dashboard_link
- docker_image
- gpu_instance
- loop
- name
- observed
- plan
- requested
- scheduler_address
- scheduler_class
- worker_class
方法
adapt
([Adaptive, minimum, maximum, ...])开启自适应
call_async
(f, *args, **kwargs)在线程中将阻塞函数作为协程运行。
from_name
(name)创建此类的实例以按名称表示现有集群。
get_client
()返回集群的客户端
get_logs
([cluster, scheduler, workers])返回集群、scheduler 和 worker 的日志
get_tags
()生成应用于所有资源的标签。
new_worker_spec
()返回下一个 worker 的名称和规格
scale
([n, memory, cores])将集群扩展到 n 个 worker
scale_up
([n, memory, cores])将集群扩展到 n 个 worker
sync
(func, *args[, asynchronous, ...])根据调用上下文同步或异步调用 func 和 args
wait_for_workers
(n_workers[, timeout])阻塞调用,等待 n 个 worker 准备就绪后继续
close
get_cloud_init
logs
render_cloud_init
render_process_cloud_init
scale_down