Lessons Learned & Reflection
Takeaways
I decided to start learning Kubernetes by building my own cluster. If you're familliar with any type of DevOps environments, then you know how important it is to understand and orchestrate Kubernetes clusters. I took my normal approach to learning new things, and dove in head first. I like to learn things hands-on, which is why I built a homelab: I can experiment, break things, build things, and not have to worry about it ruining or messing with day-to-day "critical" services I use.
Normally, when it comes to learning new technologies, I've been able to find well structured and thorough guides on how to do so. However this time was much different than previous experiences. Any guides or tutorials I could find were outdated, which is expected as Kubernetes updates are relativelyalways constant.being pushed out. The Official Docs were great in explaining all of the components, but the installation wasn't the clearest. and I definitely messed up my VMs and had to restart a couple of times. More than a couple. The biggest takeaway I've learned from this experience is creating snapshots at important stages. I've wasted plenty of time by making mistakes, then not being able to undo them and having to rebuild and reconfigure new VMs. With snapshots, I could just rollback to my last-saved image state and instead of having to start from scratch, I could start from 1-2 steps from where I just was. Snapshots for me, was game changing.
Another important takeaway from this is to not rely on one source for directions, especially if its not the official documentation. I ended up piecing together different prep/build stages from 4-5 different sources/tutorials/instructions. Not everyone has the same environment or set up, and what works for them won't necessarily work for you. Learn the ins and outs of your environment and what you're trying to implement, and then adjust and adapt accordingly.
Useful Sources
- Creating a cluster with kubeadm | Kubernetes
- Installing kubeadm | Kubernetes
- Ports and Protocols | Kubernetes
- flannel-io/flannel: flannel is a network fabric for containers, designed for Kubernetes (github.com)