The other day I was having a nice chat with a good friend of mine. The conversation was mainly about orchestration and scheduling of containers in cloud environments. Needless to say, Kubernetes was mentioned. The actual content of the conversation is irrelevant for this post. But there was a comment he made about another team that took them 8 months to have a plain Kubernetes cluster up and running in AWS (Custom EC2 isntances). He was impressed how long took them to have it, as in our case took just one day with
kops and then few more days to have the proper automation and integration. But I was not impressed. It is actually normal. There is a reson for this.
I totally understand him, these kind of Kubernetes clusters are not very common. It takes a lot of time to grow them and instruct them where containers will be expected and where they should go. We are talking, of course, of grass fed, free range biological kubernetes cluster. This clusters differ a lot with regular clusters. Instead of masters, you need a fence. Kubernetes are very curious by nature and they trend to expand and exhaust the soil resources. But remember to size it properly, they still need to be able to walk and there should be enough grass to feed your cluster. Another main difference is the speed of deployment and scheduling. While a regular deployment in the cloud will take few seconds in average to deploy a container, these clusters can take up to few minutes. The mobility of these animals is not as their homonimous in the cloud, but the increase greatly the quality of the deployment. In other words: the decrement in speed, is won in quality. The amount of maintenance is also reduced, as the Kubernetes know haw to build all the dependencies and requirements of the container, plus they take care of it as if it were their baby. This is a normal behavior of the wild Kubernetes. If you need to scale up, just expand your fence and give them more space. Be careful, the cluster should be scaled up at least 6 months in advance of the predicted high load. Note this is only needed if you really have no space for your containes in the initial area delimited by the fence which is pretty inprobable as they trend to pile them saving space. As you can see, the amount of resources a container needs to run are allocated naturally and effectively.
Impressive, right? But how do I get one? That is pretty easy, but I am afraid all companies and ethusiasts start with buying a farm with some terrain. The second step is to get your initial fence built. It is recommended to have some margin to extend it in case you need to scale up, but as said before, it will be rare. The next step is to contact a biological kubernetes provider. There are several around, so just contact the closest to your location and order few of them. For a small cluster of about 500 containers, 2 of these kubernetes will siffice. And now comes the critical part: You need to gorw them. Be sure to have the grass fresh and uncut, they enjoy it like that. It is very important also to have a fresh source of water handy to freshen the grass and serve as a source of fresh water for the kubernetes. It takes from 6 to 8 months to have healthy kubernetes adults who can deploy, maybe even more. You know they are ready when they start building deployment platforms fro the containers and start stashing pods (made out of dried grass threads). Basically that is it. Of course, there can be situations that can impact your kubernetes cluster buildup, but this cases are out of the scope of this article.
You may by now, my dear reader, asking yourself: but how they actually deploy? Right. After building the container, as always, place them in the repository tray. The provider can provide the adecuate tray for the race of kubernetes that is in the cluster. During their youth, they develop and train small arms (very similar to the ones on a Tyronsaurus Rex). Once they are adult and the deployment structure is built, they add the containers to their daily routine. Petting them, moving them to one deployment to another or destroying them in an environmental friendly way. Sometimes, you need to assist providing the needed materials for the deployment. They will provide specific written isntructions about this. Have a notebook and a pen o pencil handy as they may ask for it. Don’t worry about where to get the materials, as they are pretty common in all farms.
These clusters are, definately, intersting, but may not be the best solution for everybody. As a conclusion: yes, it is possible to spend 8 months in having a proper Kubernetes cluster fully functional, selfhealing and redundant. But these clusters require a huge amount of love and patience. So maybe a regular cloud based cluster is the better solution for you.