The idea of independently deploying a Kubernetes cluster on your servers or in the cloud looks attractive: it seems that it is cheaper than paying for a Managed solution from a provider. Everything is not clear: in practice, you can find hidden costs and pitfalls.
At the same time, Self-Hosted can be an option for large companies since they have shareware resources and a staff of specialists to support the technology, and sometimes even an ardent desire to build and develop their platform at all costs. But with small and medium-sized businesses, the situation is slightly different; the decision needs to be weighed from all sides.
I’m Dmitry Lazarenko, Product Director of VK Cloud Solutions (former MCS). In the article, I will tell you the features of deploying a Self-Hosted Kubernetes cluster and what you need to know before launching.
It Will Take Time, Money And Administrators Who Understand Kubernetes To Start
The first expense item is for specialists who know how to work with this system and will be able to service the cluster. These are expensive guys, there are not many of them on the market, and it isn’t easy to hire them.
Why does Kubernetes significantly increase the cost of specialists? It seems easy to deploy a cluster; for this, there is official documentation and installers, such as Kubespray or Kubeadm. However, if a company has an engineer who can read a line of documentation and figure out how to put Kubernetes on servers with a single command, that’s not all; his work will not be limited to this.
In reality, deploying a cluster is only half the battle. In this form, it will work until the first problem, which will inevitably arise in a week or a month. For example, pods will stop being created due to incorrect resource configuration on the controller-manager. Or the cluster will become unstable due to disk problems etc. Or running СronJob due to controller-manager errors will start endlessly spawning new pods. Or, the cluster will experience network errors due to a bad DNS configuration choice.
In general, there can be many problems, so you need a separate person who knows how to deploy a cluster, debug, and run applications in a production environment.
In addition, along with Kubernetes, new needs appear in the company, such as monitoring for error detection, data storage, and logging. The cluster needs to be developed to get the expected profit from the technology. This takes time, so even an experienced administrator will not be able to allocate a week to set up a cluster and some hours to administer it.
Most likely, you will need a full-time person who will deal only with Kubernetes, support, and develop the cluster. A department may be born to support the infrastructure in a large company.