We are looking to deploy microservices that will run on a cloud (the cloud is unknown at this point).
The microservices needs to be able to scale and so our thoughts are to implement them using a stack of containers.
I'm looking for software (preferably open source) that will run on top of the cloud and will manage these microservices, give the ability to add or remove nodes to/frome each microservice if it is required.
In addition, since each microservice will be implemented using a stack of containers, we need to be able to distribute jobs/tasks between the nodes and have an updated status of each task. We need to be able to provide the status of these tasks - whether the status is 'SUCCESSFUL' or 'ERROR'. We need some retry mechanism for tasks. We need fault tolerance - in case a node running a task has crashed the task should be picked up by another node.
Also we require a job scheduling capability, meaning that based on some schedule a task/job will be generated and be sent to one of the nodes of a microservice, But the execution of the each iteration will can be dependant on the status of the previous iteration.
I've looked at a lot of frameworks but I got lost since everything seems to fit my needs (Mesos, kubernetes, Ignite and more)
What would you recommend given all these requirements (or some of these requirements) and can the decision be made independently from the cloud that the cluster is running on, or do some clouds provide these capabilities on their own and it wouldn't make sense to seperate the decision?