Learn Kubernetes with Google
learnkubernetes.withgoogle.com
learnkubernetes.withgoogle.com
What is Istio? Why would I want to install it? Can you teach me what Kubernetes is first, and how to install that?
Yeah you really need to understand what K8s does before even thinking about a service mesh like Istio, weird that it’s the first link on the page.
If you scroll down to "View all series" they have one listed as "KUBERNETES FOR COMPLETE BEGINNERS"[1]. The content is 1-2 years old which can be quite a ways back in our field.
[1]: https://learnkubernetes.withgoogle.com/kubernetes-essentials....
After a search, I guess this one would be the best starting point:
https://learnkubernetes.withgoogle.com/kubernetes-essentials...
It is bigger than what one person can typically learn on their own.
Which makes sense since it is based on a tool for teams at Google.
Most organizations don't have Google like teams.
And most organizations don't have Google sized problems...and Kubernetes is based on solutions to Google sized problems.
Kubernetes can be a fairly exotic solution to fairly mundane problems.
There is however, perhaps, an inherent elegance in API design and separation of concerns which could result in a transformation in the control of storage and compute at all scales.
and it's always mostly poorly documented, particularly regarding how to set it up (api server parameters etc).
my guess is that google pushes kubernetes as a "runtime" but meant to be used via its proprietary implementation on google cloud.
First , there is the issue of Docker and Kubernetes compatibility that I ran into. I could not get Docker shim to work and pivoted to Containerd. Once I sorted this out , I was able to get my Kubernete cluster deployed. Or So I thought.
I ran into an issue of my nodes not using the correct IP address to join the cluster. Apparently, there is a flag you need to enable in the nodes like KUBELET_EXTRA_ARGS="--node-ip=<your node ip address>". Once I got this sorted out by modifying /etc/systemd/system/kubelet.service.d/10-kubeadm.conf , my nodes were able to join the cluster properly and I was ready to do actual development. Or so I thought.
There is this issue of Loadbalancer. I had no idea that the only way to get Kubernetes to work and expose deployed services require a cloud vendor specific load balancer. If you deploy Kubernetes using Kubeadmin and VMs, you do not get a load balancer. So now I have to deploy something called MetalLB or create services of type NodePort so that they can be accessed using node ip addresses. MetalLB requires knowledge of BGP which I don't have. So I will stick to NodePort.
So now I have to deploy a vm with Haproxy as the Loadbalancer that could forward the calls to Nodeports of my services on my Kubernetes cluster on my laptop.
I have been told it is roses all the way once the cluster is working with the load balancer. Or so I think.
edit: of course, not very useful if your services aren't using HTTP.
https://kubernetes.io/docs/concepts/services-networking/ingr...
not sure how up-to-date it is, but it really helped me understand how k8s works.
On the other hand, having at least some idea of how the thing you're using works under the hood is never a bad idea.
The lasting contribution of Docker is the Dockerfile, learning that and the alternative ways to build an image is sufficient in 2022.
There's no harm in learning Docker even if it gets replaced completely in the next 10 years, because there's enough industry inertia behind it that any replacement will be highly backwards compatible.
This one seems highly relevant: https://wizardzines.com/zines/containers/
This was also posted on HN a couple weeks ago: https://earthly.dev/blog/chroot/
> You do not need to panic. It’s not as dramatic as it sounds.
> TL;DR Docker as an underlying runtime is being deprecated in favor of runtimes that use the Container Runtime Interface (CRI) created for Kubernetes. Docker-produced images will continue to work in your cluster with all runtimes, as they always have.
> If you’re an end-user of Kubernetes, not a whole lot will be changing for you. This doesn’t mean the death of Docker, and it doesn’t mean you can’t, or shouldn’t, use Docker as a development tool anymore. Docker is still a useful tool for building containers, and the images that result from running docker build can still run in your Kubernetes cluster.
Which confusingly, is under the TLD .goog instead of .google, for god knows what reason...
Likely for privilege separation.