管理车队

请按照以下步骤,通过 CLI 或控制台运行 Code Engine 车队。

准备工作

要成功运行车队,请确保您已按照《 准备运行车队 》中的步骤进行了操作。 您还可以选择使用 Code Engine 来 构建镜像,并在创建车队时引用该链接。

使用控制台运行舰队

请按照以下步骤在 Code Engine 控制台中管理车队。

  1. 打开 Code Engine 控制台。
  2. 单击开始创建。
  3. 从可用项目列表中选择一个项目。 你也可以 创建一个新的。 您必须有一个选定的项目才能运行车队。
  4. 选择创建车队的选项。
  5. 请为车队指定一个名称。 确保项目中所有车队的名称都是唯一的。
  6. 为舰队指定一个容器映像,例如 icr.io/codeengine/helloworld。 如果您有自己的源代码,并希望将其转换为容器镜像,请参阅 “规划构建”。 有关本示例中使用的代码的更多信息,请参阅 helloworld。
  7. 按照提示配置机群。 有关缩放参数重要性的详细信息,请参阅 “配置机队缩放”。
  8. 在“任务”部分,请指定是否为车队添加初始任务。 更多信息,请参阅 任务规范。
  9. 在“资源和缩放”部分,配置实例资源并指定实例的缩放方式。
  10. 在“网络布局”部分,单击“选择子网池”。
    1. 创建一个新的子网池,以指定该机群工人的网络位置。 更多信息,请参阅 Code Engine 中的 "使用子网池连接 "。
    2. 或选择一个或多个现有子网池,指定该机群工人的网络位置。
    3. 点击 “应用” 以确认您的选择。
  11. 在“环境变量”和 “卷挂载”部分,添加运行代码可使用的可选键值对、配置映射或附加文件。
  12. 单击创建。

任务规格

您可以创建一个包含或不包含初始任务的车队,并随时添加任务。

在控制台中指定任务

若要创建一个不包含初始任务的车队,请参阅 《 使用控制台创建不包含初始任务的车队 》。 若要在创建后添加任务,请参阅 《 使用控制台向车队添加任务 》。

您可以通过以下任一方式指定任务:

  • 任务数量:选择“任务数量”,并指定任意正整数。
  • 任务索引:要指定一组任务,可以指定一组任务索引,其中包含以逗号分隔的范围列表和正整数,例如 2-5,7-8,10。 选择“任务索引”,并输入范围。
  • 来自文件的任务:若要让不同的任务使用不同的命令或参数运行,您可以创建一个任务规范文件来覆盖镜像定义。 可选的 idx 字段可用于指定自定义任务索引。 该文件必须采用 JSONL 格式。 选择“来自文件的任务”。 请上传本地文件,或指定位于 IBM Cloud Object Storage 中的文件路径。 请参阅以下示例,了解可以添加到任务规范文件中的行。
    { "cmds": ["my", "multipart", "command"], "args": ["arg1", "arg2"] }
    { "cmds": ["other", "cmd"], "args": ["arg"], "idx": "foo" }
    { "args": ["argA", "argB", "argC"], "idx": "bar" }
    { "cmds": ["just", "another", "command"], "idx": "1234" }
    
  • 来自 IBM Cloud Object Storage 的任务:根据持久化数据存储( Object Storage 存储桶)中的对象指定任务。 每个对象都会生成一个任务。 选择“来自 Cloud Object Storage”,然后创建或选择一个持久化数据存储。 可选地,指定一个子路径。

批次名称(可选):为通过此操作添加的所有任务指定一个批次名称。 批处理名称用于标识和分组相关任务。 批处理名称无需具有唯一性,因此在重试失败的任务时,您可以重复使用原始的批处理名称。 例如,批次名称中可以包含日期或客户名称。

在命令行界面(CLI)中指定任务

若要创建一个不包含初始任务的车队,请参阅 《 使用 CLI 创建不包含初始任务的车队 》。 若要在创建后添加任务,请参阅“使用 CLI 将任务添加到现有车队”。 要创建一个带有初始任务的车队,请参阅 《 使用 CLI 创建带有初始任务的车队 》。

您可以通过以下任一方式指定任务。

  • 任务数量:请指定任意正整数。 使用 --tasks 选项来指定要运行的任务数量。 若要创建一个没有任务的车队,请省略 --tasks 选项。
  • 任务索引:要指定一组任务,可以指定一个任务索引,其中包含以逗号分隔的范围列表和正整数,例如 2-5,7-8,10。 请使用 --task-indexes 选项。
  • 来自文件的任务:若要让不同的任务使用不同的命令或参数运行,您可以创建一个任务规范文件来覆盖镜像定义。 可选的 idx 字段可用于指定自定义任务索引。 该文件必须采用 JSONL 格式。 使用 --tasks-from-local-file 或 --tasks-from-cos-object 选项指定文件。 请参阅以下示例,了解可以添加到任务规范文件中的行。
    { "cmds": ["my", "multipart", "command"], "args": ["arg1", "arg2"] }
    { "cmds": ["other", "cmd"], "args": ["arg"], "idx": "foo" }
    { "args": ["argA", "argB", "argC"], "idx": "bar" }
    { "cmds": ["just", "another", "command"], "idx": "1234" }
    
  • 来自 IBM Cloud Object Storage 的任务:根据持久化数据存储( Object Storage 存储桶)中的对象指定任务。 每个对象都会生成一个任务。 使用 --tasks-from-cos-bucket 选项来指定一个 Object Storage 存储桶以及可选的子路径。

使用控制台创建不包含初始任务的车队

您可以不指定任何任务就创建一支车队。 如果 “最小容器槽位”或 “备用容器槽位”不为零,则会立即为工作节点进行配置。 否则,在添加第一个任务之前,不会创建任何工作者。

当舰队作为共享的、长期存在的资源,从多个来源接收任务或按计划接收任务时,请采用此方法。

若要创建一个没有初始任务的车队,请按照 《 使用控制台运行车队 》中的步骤操作。 在第 8 步中,将 “指定初始任务”设置为 “否”。

复制舰队以创建新舰队

您可以使用 Code Engine 控制台,通过复制现有车队的配置来创建新车队。 “创建副本”功能会将源集群的所有配置设置(包括容器镜像引用、资源分配、环境变量和扩展设置)复制到一个新的集群中,随后您可以对该集群进行独立自定义。 任务不会被复制。

新机队作为独立的工作负载运行。 源舰队不会受到新舰队任何变化的影响,反之亦然。

开始之前,请确保您的项目中已创建了一个现有的车队。

  1. 找到 “Code Engine”项目页面。
  2. 点击项目名称即可打开“概览”页面。
  3. 点击 “车队”以打开您的车队列表。
  4. 请通过以下任一方式打开 “创建副本”选项:
    • 点击您要复制的舰队名称,以打开该舰队的页面。 然后点击页面右上角的 “操作”菜单,选择 “创建副本”。
    • 在舰队列表中,点击要复制的舰队的行操作图标(⋮),然后选择 “创建副本”。
  5. 在“创建车队”页面上,源车队的配置已预先填入。 请为新车队输入一个唯一的名称。 请使用项目中唯一的名称。
  6. 检查新集群的任何配置设置(例如容器镜像、资源分配、环境变量或扩展设置),并可根据需要进行修改。
  7. 点击 “创建”以创建新的车队。

使用控制台向车队添加任务

您可以随时通过 “添加任务”按钮向车队添加任务——无论该车队处于 “待处理”、“运行中”还是 “待命” 状态。

与此同时,Code Engine 会异步创建任务记录,并在需要时分配额外的工作进程。

请按照以下步骤在 Code Engine 控制台中向现有车队添加任务。

  1. 找到 “Code Engine”项目页面。
  2. 点击项目名称即可打开“概览”页面。
  3. 点击 “车队”以打开您的车队列表。 点击您的车队名称,即可打开详情页面。
  4. 点击“添加任务”。
  5. 指定要添加到车队中的一组任务。 另请参阅 “任务说明”。
  6. 可选:添加一个有意义的批处理名称。
  7. 单击添加。

使用 CLI 创建不包含初始任务的车队

使用以下示例命令运行一个不包含初始任务的车队。 该命令允许其他选项。 有关所有可用命令选项的完整列表,请参阅 CLI 参考文档。

ibmcloud ce fleet run --name my-fleet --image icr.io/codeengine/helloworld --subnetpool-name my-pool --tasks-state-store mytaskstore
--name
资源组的名称。 在同一项目的所有车队中,该值必须是唯一的。 如果没有指定舰队名称,则会随机生成一个。
--image
用于处理任务的容器镜像的引用。 此字段为必填项。
--subnetpool-name 或 --subnetpool-id
用于机群网络部署的子网池名称。
用于机群网络部署的子网池标识。

您必须指定 --subnetpool-name 或 --subnetpool-id。

--tasks-state-store
指定用于存储机群任务状态的持久数据存储。 此字段为必填项。

示例输出:

Successfully created fleet with name 'my-fleet' and ID '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'
Run 'ibmcloud ce fleet get --fleet-id 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e' to check the fleet status.
Run 'ibmcloud ce fleet worker list --fleet-id 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e' to retrieve a list of provisioned workers.
OK

使用 CLI 将任务添加到现有车队中

请使用以下示例命令将任务添加到现有机队中。 该命令允许其他选项。 有关所有可用命令选项的完整列表,请参阅 CLI 参考文档。

或者,您可以使用 ibmcloud ce fleet task create 命令。

示例

ibmcloud ce fleet task add --fleet-id 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e --tasks 1 --batch-name transactions-2026-09-04

示例输出

Successfully added tasks to fleet with name 'fleet-0123456789' and ID '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'
Run 'ibmcloud ce fleet get --fleet-id 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e' to check the fleet status.
Run 'ibmcloud ce fleet worker list --fleet-id 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e' to retrieve a list of provisioned workers.
Run 'ibmcloud ce fleet task list --fleet-id 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e' to retrieve a list of tasks.
OK
--fleet-id
任务所属机群的 UUID。 此字段为必填项。
--tasks
指定要由机群处理的任务数量。 此字段为必填项。
--batch-name
用于当前调用中添加的所有任务的批处理名称。 它可用于识别和分组相关任务。 批处理名称无需具有唯一性,因此在重试失败的任务时,您可以重复使用原始的批处理名称。 例如,批次名称中可以包含日期或客户名称。
此值是可选的。 如果未指定,则使用批处理名称“default”。

使用 CLI 创建包含初始任务的车队

使用以下示例命令运行包含初始任务的舰队。 该命令允许其他选项。 有关所有可用命令选项的完整列表,请参阅 CLI 参考文档。

当所有可用任务处理完毕后,机队将进入待机状态。 不再需要用于提供最低容器槽位的工人将逐步减少,直到添加新任务为止。

ibmcloud ce fleet run --name my-fleet --image icr.io/codeengine/helloworld --subnetpool-name my-pool --tasks-state-store mytaskstore --tasks 1
--name
资源组的名称。 在同一项目的所有车队中,该值必须是唯一的。 如果没有指定舰队名称,则会随机生成一个。
--image
用于处理任务的容器镜像的引用。 此字段为必填项。
--subnetpool-name 或 --subnetpool-id
用于机群网络部署的子网池名称。
用于机群网络部署的子网池标识。

您必须指定 --subnetpool-name 或 --subnetpool-id。

--tasks-state-store
指定用于存储机群任务状态的持久数据存储。 此字段为必填项。
--tasks
要运行的任务数。

示例输出:

Successfully created fleet with name 'my-fleet' and ID '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'
Run 'ibmcloud ce fleet get --fleet-id 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e' to check the fleet status.
Run 'ibmcloud ce fleet worker list --fleet-id 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e' to retrieve a list of provisioned workers.
Run 'ibmcloud ce fleet task list --fleet-id 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e' to retrieve a list of tasks.
OK