As with anything in the technology field, there is no one size fits all solution…
And even kubernetes solving a big amount of problems you might have when exposing and scaling your application, it also brings some problems that you need to weight before deciding if this is the right technology for you or not.
One of the things to consider, is that kubernetes is built to support stateless services, sure it supports drive mounts, but you’ll have many problems with pods waiting for long hours to stop waiting for the drives to dismount, or pods waiting to start because no available node is compatible with the drive mount it needs.
Another thing that might be a red-flag is that kubernetes might decide that a pod needs to move to another node due to high cpu or memory usage, and if your application doesn’t have many copies of each pod running, this might cause some minor service outage (unless you combine this with the problem related above, then it might become a huge problem)
A third red-flag for kubernetes might be if you do not have enough hardware resources, for example if you work in a small project or company, and your hardware is a little more than your application needs to run, the extra load that kubernetes need to run the additional resources, DNS, load balancing, kubelet, … might cause you problems for your application, because nothing of that is free.
One other thing is that if you want to deploy your own kubernetes server, you need to study a lot before doing that, it is way easier to pay for a hosted service from Google, AWS, Azure, … Kubernetes has a lot of moving parts, and is really complex to maintain.
But if none of these problems apply to you, you can read the other posts about how to package and deploy your application to kubernetes:
- How to use docker to to have an uniform development, test and production environment
- First pod
- A service to access your pod
- Horizontal autoscaling
- Ingress reverse proxy
Of course these are not the only “red flags” for kubernetes, but if any of these apply to you, you might want to consider other solutions for your deployment, maybe docker swarm is enough for you, maybe you do not need containers at all, …
If you have any questions or comments about this, please leave a comment or talk direct to me through any social network 😀