Workload

概念

Workload 在 Eru 里代表一个最终部署实例抽象, 在不同的 runtime 上可能代表容器/虚拟机/daemon 进程.

操作

Workload 拥有全局唯一到 ID, 通过 ID 可以完成一系列通用操作:
  1. 1.
    Create
  2. 2.
    Stop
  3. 3.
    Start
  4. 4.
    Remove
  5. 5.
    Execute: 在容器 namespace 里, 或者 VM 内部, 执行指定的命令
  6. 6.
    Realloc: 动态调整 workload 的资源配额. 详见 资源
  7. 7.
    Replace: 删除旧实例, 原地起新实例, 可继承网络配置
  8. 8.
    Copy: 从实例里拷贝指定文件到客户端
  9. 9.
    Send: 从客户端拷贝指定文件到实例内部
注意 Realloc 是实时重分配, 容器进程不会被停止; 不过 Yavirt 虚拟机暂不支持实时重分配.

生命周期

Eru Workload 可以在创建时指定 after_startbefore_stop hook, 可以用来完成一系列应用初始化和清理的工作. 详见 spec.
Eru Workload 还可以在创建时指定 healthcheck 来定义应用的健康状态, 可以定义 tcp ports 和 http url 作为检测方式. 详见 spec.
Workload 本身的状态由节点上的 eru-agent 监控和上报给 eru-core, 上报信息包括:
  1. 1.
    running: 实例是否存活
  2. 2.
    healthy: 在 healthcheck 定义下的实例是否健康
  3. 3.
    networks: 实例 IP
  4. 4.
    extension: 其他 tags
eru-core 提供了一个接口 WorkloadStatusStream 供第三方监听 Workload 的生命状态, 一旦有状态变化会推送消息给监听方, 从而完成 failover 等机制.

健康检查

健康检查是由 spec 中的 healthcheck 部分定义的.
详细的信息参见 健康检查.
Last modified 13d ago