Search code examples
kubernetesdocker-swarmmarathon

How to define a specialized node in docker orchestration


I want to deploy a application split in Producer, FIFO and Consumer services. I have several Producer that push jobs in a Queue and Several Consumer that treat jobs. To simplify the deployment process, I would like to use a docker orchestration app (like Marathon/Mesos, Kubernetes or Docker swarm). My Consumer already run inside docker.

My issu was, Consumer need to run on computer/server with GPU and other on CPU only. Is it possible in a cluster to define specialise node that will run one kind of service ?


Solution

  • Yes, especially with a more recent version (1.6+) of kubernetes, it has a very rich configuration for communicating how Pods should be assigned to Nodes. If your setup is very simple, then a nodeSelector will be effective enough and super easy to setup and explain to others.

    If your needs are more complex, kubernetes will enable that, but it will take a bit more reading and testing; as will be the case if you need to keep other Pods off of the Nodes in question

    I have also seen some GPU-specific annotations that magically show up on our EC2 Nodes, but I don't have the Node metadata in front of me to give you more specific examples