1.Introduction      

    Manage New scheduler's containerPool, includes below features.

    1. Create prewarm container initially. 

    2. Backfill the prewarm container if possible.

    3. Cold start container based on the ContainerCreationMessage which get from ContainerManager using kafka.

    4. Delete container when get deleteContainerMessage from ContainerManager using kafka.

    4. Maintain several kind pools, e.g. busyPool, inProgressPool, warmedPool, prewarmedPool, prewarmStartingPool.

    5. Send memoryInfo to etcd every 1 second.

2.Design consideration


    1. Create prewarm container initially.

       On kubernetes env, the consuming time of create a pod is longer than common container, so it is better to not create all prewarm pod at the same time. 

       one option is `create prewarm pod gradually`, this can avoid `send a lot of creation pod request to kube api server` in a very short time.

    2. When create prewarm, need to support retry and cannot exceed the maximum retry limit.

    3. when backfill prewarm, need to avoid `creating a large number of additional prewarm`. 

    4. when create container, if doesn't have prewarm container which its memory equal with the action's memory, need to support `choose a higher memory prewarm container`, this is optional.



  • No labels