(Source: Hannah Hillam: (http://verbalvomits.tumblr.com/post/163741753121/me-trying-to-do-anything-lately))
I never thought my first project would be so difficult, or how hard it would be to stick to it. I keep being told over and over again that it’s not hard to start a project, it’s just hard to complete it. Halfway into deploying Kubernetes on my Google Cloud cluster, I’m starting to believe them. I’ve spent hours staring at my home directory to build the energy to debug a service, or install an application. Luckily, with each small victory, the easier it becomes to complete more of the project.
It started with this guide:
CoreOS provides Container Linux, Tectonic for Kubernetes and the Quay image registry; key components to secure…coreos.com
It seemed easy enough, roll up the cluster, add all the configuration files, and start the services. Boom, you have Kubernetes orchestrating your docker containers, and hey, you have Flannel (so you can connect it to your Raspberry Pi, since Flannel ❤ ARM) and a Calico overlay too.
I quickly found out I vastly under-estimated the complexity of this project. I’ve spent hours re-reading the guide, crawling through Stack Overflow, and even joining the Kubernetes, Calico, and Docker Slack channels. I finally gained the courage to ask for help in the Slack groups, which sent me to the CoreOS IRC channel. Once I connected with someone there, I learned that the guide I’ve been using was out of date (which is nicely printed at the top, in small text).
Nowadays when people deploy Kubernetes onto their cluster I s’pose they enjoy using nifty applications, such as Kops, Tectonic, anything with Kubeadm, and so forth.
But, what’s the point of using those tools if you don’t understand how Kubernetes really works? How are you supposed to fix this when it breaks, if a tool did the hard part for you?
After another couple hours of finding out how to make your own cloud-config files, ripping down my old cluster and building a new one, and some more coffee, I finally was able to get flannel and docker to start. (Hint, if flannel isn’t able to start due to not being able to reach out to it’s API, it’s probably because your ETCD_ENDPOINTs are not set properly.)
The biggest lessons I’ve learned so far is how to set timers for yourself, and realize when you’re not making progress. Even with starting this blog, I’ve been putting off until the completion of the entire Kubernetes project itself to make a single post. Or, when I could not figure out why I was getting an error when I tried to start etcd2 that it couldn’t connect to an API, I waited hours before asking a friend. This project has started me putting my anxieties and confidence behind me, and taking the plunge so I can get things done.
Now, the fun actually begins, of putting applications within the docker containers.
Kubernetes is an open-source container orchestration service, and one of the neatest things I’ve seen since the Turing Machine.
For how it works, check out: