使用说明
使用说明
1. 安装
从以下链接下载软件压缩包:
将压缩包解压到本地目录。本地目录结构如下:
ROOT_DIR/
+---cloud_functions/ * 不要修改
+---cluster_scripts/ * 不要修改
+---README-CN.md * 本文件
+---README.md * 英文说明文档
+---cluster_config_ha.json * 可修改:集群配置(高可用版本)
+---cluster_config_no_ha.json * 可修改:集群配置(常规版本)
+---scalex-cmd * 可执行文件:命令行接口
+---scalex-svc * 可执行文件:ScaleX 服务器启动器
ROOT_DIR/scalex-cmd(在 POSIX 上)或 ROOT_DIR\scalex-cmd.exe(在 Windows 上)是用于本地运行的命令行接口。如果您想自托管 ScaleX 服务,请运行 scalex-svc 可执行文件。
2. 配置
2.1 在 EC2 实例上
如果您在 AWS EC2 实例上运行 ScaleX,可以通过为 EC2 实例附加一个带有策略的 IAM 角色来开始使用 ScaleX。操作步骤如下:
- 创建一个具有所需权限范围(附录scalex-所需权限)的 IAM 策略。
- 创建一个 IAM 角色,并将上一步创建的策略附加到该角色上。
- 将创建的 IAM 角色附加到 EC2 实例上。
- 在 AWS 控制台中:操作(Actions)-> 安全(Security)-> 修改 IAM 角色(Modify IAM role)-> 选择角色(Choose the Role)-> 更新 IAM 角色(Update IAM Role)
有关如何使用 awscli 或在 AWS 控制台中执行上述操作的更多详细信息,请参阅 AWS 文档。
或者,您也可以提供 AWS 凭证。具体步骤见下文。
2.2 在任意机器上
您可以在任意本地或远程机器(包括 AWS EC2 实例)上提供 AWS 凭证(access_key_id 和 secret_access_key)来运行 ScaleX。
重要提示:
- 对于命令行接口操作,scalex-cmd 不会将任何信息(除云 API 调用外)如凭证从您的本地环境中传出。config 命令仅读取您的凭证并本地存储。
- 对于自托管的 ScaleX API 服务,请务必确保在创建和存储配置到后端时启用并妥善管理 SSL/TLS。
打开终端(在 POSIX 系统上)或命令提示符窗口(在 Windows 上)。
切换到 ScaleX 的 ROOT_DIR。假设 ROOT_DIR 是 /home/my/scalex_root。
运行以下命令:
my@ubuntu:~$cd /home/my/scalex_rootmy@ubuntu:~/scalex_root$./scalex-cmd config --action create --key-name my-first-key --cloud aws --ak your_access_key --sk your_secret_key
如果一切顺利,您的凭证将被保存到本地。控制台输出类似于:
Scalex (Scale-X): Scale Your Cloud and Save Your Cost. [Version: 0.0.2.0519]
Config action: create.
[*] Key name randomized to: my-first-key.b7dp2u341ig.
{
"key_name": "my-first-key.b7dp2u341ig",
"cloud_vendor": "aws"
}
请保持终端或 CMD 窗口打开以进行下一步操作。
3. 运行
注意: 在 macOS 系统( macOS 13 Ventura 或更高版本)中,由于默认的隐私和安全策略,ScaleX 可能会被阻止运行。如果遇到这种情况,请按照以下步骤操作:
系统设置 -> 隐私与安全性 -> 向下滚动至 安全性 部分 -> 允许 scalex-cmd 运行
ScaleX 提供了一个带有多个命令和相应选项的命令行界面。详情如下:
用法:./scalex 命令 参数 ...
命令 参数
config 配置云凭证。
--action (create | list | update | delete)
action: create
--cloud (currently supported: aws)
--key-name key_name
--ak your_access_key
--sk your_access_secret
action: update | delete
--key-name unique_key_name
create 创建一个 Kubernetes 集群。
Command Line Interface:
--config-file /your/config/file.json
--config-b64 base64_encoded_config
--pk-file /your/public/key/file
--pk-text public_key_plain_text
--pk-b64 base64_encoded_public_key
--ssh-private-key-path /your/private/key/path (必需)
--functions-root /your/functions/root/path
--scripts-root /your/scripts/root/path
API requests:
--config-b64 base64_encoded_config
--pk-text public_key_plain_text
--pk-b64 base64_encoded_public_key
--ssh-private-key-b64 base64_encoded_private_key (必需)
说明:
- 创建集群必须提供 SSH 私钥
- ScaleX 在创建集群前会验证密钥对
- 私钥被安全地管理在 ~/.scalex/ssh_keys/ 目录中
fetch 获取集群的云资源。
--stack-id stack_id_string
(optional)--region region_name
--resource-types type_a,type_b,...
--all
--key-name key_name
delete 删除一个 Kubernetes 集群。
--stack-id stack_id_string
(optional)--region region_name
--delete-logs
--key-name key_name
list 列出您的堆栈。
--type clusters | groups
--regions all or --regions region_a,region_b,...
--groups all or --groups group_a,group_b,...
--key-name key_name
status 获取集群的状态。
--stack-id stack_id_string
(optional)--region region_name
--summary
--key-name key_name
start 启动集群的节点。
--all
--groups all or --groups group_a,group_b,...
--stack-id stack_id_string
(optional)--region region_name
--key-name key_name
stop 停止集群的节点。
--all
--groups all or --groups group_a,group_b,...
--stack-id stack_id_string
(optional)--region region_name
--key-name key_name
scale 扩容(增加)或缩容(删除)工作节点。
--action (add | delete)
--groups all or --groups group_a,group_b,...
--count N (每个工作组添加/删除的节点数量)
--stack-id stack_id_string
(optional)--region region_name
--key-name key_name
说明:
- 对于 'add':使用工作组 AMI 配置按需实例
- 对于 'delete':仅删除没有用户 Pod 的节点(命名空间不以
'scalebox-' 开头)
- Spot 实例优先被删除
- 节点在终止前会被排空(drain)
blocks 查询、购买、扩展用于 ML 的容量块。
--key-name key_name
--action (query | purchase | extend | list)
action: query
--regions
--acc-name
--network-enhanced
--instance-type
--instance-count
--date-start
--date-end
--duration-hours
action: purchase
--region
--cb-offering-id
--os-type
action: extend
--cb-id
--extend-hours
cost 获取 Spot Saving 的概览和/或详细信息。
--stack-id
--region
--key-name
(Optional)--details
(Optional)--latest
metadata 获取或更新工作组元数据。
--action (get | update)
--stack-id stack_id_string
--key-name key_name
(optional)--region region_name
--groups all or --groups group_a,group_b,...
action: get
显示指定工作组的元数据
action: update
--patch-body '{"autoscaling": {"threshold": 90}}' (JSON 字符串)
(或 --patch-body-b64 base64_encoded_json 用于 API)
(或 --patch-file /path/to/patch.json 用于 CLI)
使用部分 JSON 合并更新元数据
不可修改的字段:group_name、instance_type、kata_enabled
说明:
- 元数据定义工作组的运行时配置
- 对 autoscaling/od_to_spot 设置的更改立即生效
- 使用空字典 {} 禁用可选功能(例如 od_to_spot)
sshell 启动一个交互式 Shell 并连接到远程集群
仅可用于命令行工具,API 不支持
--stack-id
(Optional)--host, --ssh-private-key-path, --user, --port, --master
sbatch 向集群发送远程执行指令
仅可用于命令行工具,API 不支持
--stack-id
(Optional)--host, --ssh-private-key-path, --user, --port, --master
--batch-script /your/script/file/path
(Optional)--executor (e.g. python3)
(Optional)--remote-path /remote/host/path
--batch-cmds 'commands to execute'
sftp 与远程集群之间同步文件/目录
仅可用于命令行工具,API 不支持
--stack-id
(Optional)--host, --ssh-private-key-path, --user, --port, --master
--local /local/path
--remote /remote/path
--action (put|get)
--resume
help Show help information