Kubernetes is great, it's complex
This has been something that has been said in many conversations over the past 3 years and even longer. “Kubernetes is complex” I cannot really argue because yes, it is, but then I feel like so is virtualisation, cloud, and mainframes unless you work with it every day!
Before even getting to the complexities of Kubernetes you first must hop over the hurdle of containers and understand containers before moving onto the orchestration layer. Again, could we see a similar trend with virtualisation? Should you know what is a Virtual Machine before understanding the capabilities of a VM orchestration engine such as vSphere Virtual Centre?
So, containers:
- Containers are self-contained bundles
- They decouple your application's environment from the machine it runs on
- No need to worry about the package or Golang version being present on the host because the Container File (Dockerfile) makes your dependencies explicit.
Thus, giving us the “it worked on my machine” which means it will work on any machine when using containers.
Ok, what about Kubernetes, I have already mentioned that this takes the above container and provides an orchestration layer. In the virtualisation space, this provides the ability for your virtual machines to be highly available across multiple compute nodes in a cluster, if you do not have a virtual centre then you have individual hosts with no High Availability and if a host dies then your VMs also die.
You can run containers on single hosts multiple single hosts like you can virtual machines or you can provide HA with Kubernetes.
When not too Kubernetes.
- If you are only deploying a small number of containers that are not maybe mission-critical, then you may not need the complexity of Kubernetes a single host might be enough.
- If your application within the container does not have a requirement to scale up and down, this would be another strong use case to avoid Kubernetes.
- Your containers and machines/hosts do not often fail (biting my tongue)
- Your application would not benefit from shared persistent storage, load balancing, service discovery, auto-healing, autoscaling etc.
I have made that comparison to VMs a few times now and granted the complexity of virtualisation has become a lot “easier” over the years. I remember configuring ESX 3.5 back in the day and it was complex! But VMware and others enhanced and advanced our experience, now really many people can get hands-on and deploy virtualisation without consultants and professional services. Will Kubernetes go the same way… I believe so.
The biggest advantage and disadvantages of Kubernetes
I have mentioned some of the advantages already to Kubernetes or to be fair any container orchestration engine. The biggest disadvantage of Kubernetes today is the complexity, we can justify complexity in some cases. We justified it with virtualisation. But there is a lot to learn upfront.
Learning
The best way for me to learn about something is to watch or read some content. There are so many people that have created great content when it comes to learning Kubernetes and even in the 3 years where my focus has been on Kubernetes and this space things have dramatically changed already, and I strongly believe we are heading towards what we have now with vSphere 8 for core virtualisation.
My biggest bit of advice here is to have an awareness of what Containers and Kubernetes is, it is coming and the more people I speak to are inheriting the looking after of Kubernetes clusters and they have no idea, they had no runway or chance to learn the ropes.
Then when you have at least that foundation of awareness at least you can be a little more prepared if the above happens to you, equally when you are pulled into a meeting about a new application or a merger you are taking on you have the awareness of Kubernetes and can offer this up to the group to see if that fits the requirements.
Monitoring & Observability = are not the same thing!
I wanted to also add this into the mix as another conversation starter has been around observability data and does it need protecting from a backup perspective.
This is not just Kubernetes-focused but will be apparent in all infrastructures and environments, I feel like there has been a huge trend towards “Observability” over the last 18 months. If someone or a group of people were trying to emphasise the importance of Observability, they nailed it as I find many people talking about it everywhere I go.
But… whilst both Monitoring and Observability are important parts of a healthy environment, they both heavily rely on the same metrics and data in some cases. They are not the same.
Monitoring will tell us when something has happened whilst Observability will sometimes detect and solve an issue before it has even happened.
In this new cloud and cloud-native world, we no longer as IT teams must settle for the reactive nature of monitoring and just finding out when bad things happen. We can leverage observability to understand things before they even happen.
What’s On This Week
This week I am focused on creating slides, demos and talk tracks for KubeHuddle which is next week and then VeeamON the following week.
Next week I will cover KubeHuddle and then the following week will be the big one VeeamON!
Have a great week everyone, Why don’t we add links to any Kubernetes learning resources you have found either before or because of this post?