We all know K3s. It's a slimmed down version of Kubernetes. It only contains mostly v1 resources and is considered the most lightweight Kubernetes distro to exist (and the easiest to onboard to, even easier with k3sup). However, I haven't seen K3s get public cloud adoption from some vendors, because you have to manually install it in your IaaS or your local cloud if you're ever going to try it out.
However, a new cloud hosting company, Civo decided that: "Hey, if K3s is this popular, why not we build our platform on top of it?" And that's what they exactly did.
Of course, knowing such a service exists now, I decided to give it a spin by joining their #Kube100 beta. And this is my insight on the platform and K3s being used in a large production setting.
Civo itself is a rather new player in the Kubernetes hosting club, but its certainly the first to offer K3s as its Kubernetes distribution of choice.
Now this may not sound like amazing but its certainly an eye-opener since most of the vendors have their own distributions of the infamous container orchestration software, and they're certainly not lighweight most of the time (most vendor Kubernetes distributions eats almost an average 10% of the RAM and the CPU cycle of the instances it runs in).
However, the platform itself is not just a Kubernetes PaaS, its also an IaaS, which means you can spin your own VMs to use for varying workloads, along with other services it offers such as an authoritative DNS, Load Balancers, Firewalls, to name a few.
The UI of the platform is rather easy to navigate as well, all of the information laid out in a non-obtrusive and straightforward manner.
Of course, we didn't come here to review the IaaS, we're here to test the waters of their Kubernetes platform. Being based on the K3s distribution, you may think your K8s knowledge would be the same for this? Not really. K3s removes most of the non-stable APIs, so that means if you use a non-stable API in your workload there's no way you can run K3s unless you have to relearn everything.
Now, you may also ask, what about Ingresses? Keeping in mind that K3s removes most of the non-v1 APIs, so does that mean we have to use services in
LoadBalancer? Not precisely.
If you've done K3s before we all know that the Ingress class in K3s is provided by Traefik. And it resides in
extensions/v1beta1, and to use the Ingress class, it works like this:
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: cattle-ingress namespace: cattle-system annotations: kubernetes.io/ingress.class: traefik spec: rules: - host: suzuhara.kiana.cloud http: paths: - path: / backend: serviceName: cattle-service servicePort: http
It's not that much relearning, but if you use anymore than just the ingresses that is non-v1, then you're out of luck.
Now with the preliminary out of the way, the Kubernetes platform is neatly tucked in just second of the instances tab, and its very straightforward to use.
The cluster creation screen is also quite straightforward and simple, you can pick how many nodes you want plus the size of the instances. And what I found interesting is the marketplace section because you can install these addons for your cluster during build time, a welcome change since you want your cluster to be pre-done with all the bells and whistles you need.
I already made a cluster to shave off some time writing this article. I decided to install the Longhorn Storage Block addon, Metrics Server, Linkerd and Rancher (Rancher fully supports K3s since the start).
So, now that you caught a glimpse of the platform, you may ask what's good and what's bad in it?
Of course because this is a K3s platform, you benefit on a platform that uses less resources than your traditional Kubernetes solution, making it a go-to if you want a lightweight solution. It's relatively simple as well, and you can even spin up Kubernetes clusters from Civo's CLI.
And as I mentioned before, unlike most Kube distributions, the addons are installed on build time, shaving off time from setting up your instances, this is a must if you want to just go around and start using the platform.
Because this is a rather new platform, expect some bugs. I had a bug where the instance of a cluster I'm creating that had the same name as the one I've deleted would get stuck in finalizing the cluster. And the marketplace is rather limited, but it gets the job done.
As for the distro itself, of course, you will need to relearn some parts if you use beta/alpha resources, and ingresses are not on
networking.k8s.io but on
extensions/v1beta1 with the
traefik class (if you have traefik installed).
Some addons require additional setup as well (such as Rancher, because the ingress for it is not exposed by default for security reasons), but that's understandable. There's no control plane within the cloud console itself so you have to rely on a external control plane for this (such as Rancher) - but that's a good thing, since it gives the users choice.
Another thing to note that Civo is UK-based so their datacenters are in Europe, so if you're aiming for cross-region, that's not possible at the moment.
K3s has seen a lot of limelight from people, especially from the Raspberry Pi community, and its amazing to see that K3s would get its own hosted solution so that means anyone can try out K3s in the safe confines of a hosted provider, and this would spark even more interest on using K3s on hosted platforms now that someone has done it.
As for Civo, their platform is stable and this hosted Kubernetes is certainly production ready. Though I may wonder when are they going to get Kubernetes-certified? Maybe in release? Time will tell.
Civo may be late to the Kubernetes race, but its the first to introduce a wanted change - a simple Kubernetes solution hosted in a public cloud.
If you decided to want to try it, the #Kube100 Beta program is open, and you can join here.