Kubernetes providers - Notes
Quick comments to the different Kubernetes providers or Kubernetes distributions.
K3s
- Great for the first experiments with self-hosted Kubernetes. Low HW requirements, easy installation.
- Contains LoadBalancer ServiceLB (former Klipper).
- Contains Ingress Controller Traefik. It does not play well with Domino Verse (with a simple forwarding rule), so I replaced it with Ingress NGINX. (How to disable Traefik on K3s.)
- The default StorageCless is local-path. It does not support volume expansion. You can deploy other storage provider that supports volume expansion, like Longhorn.
RKE2
- Good distro for hosting Kubernetes on-premises. Easy installation.
- RKE2 deploys Ingress NGINX as an Ingress Controller.
- No storage class is defined out of the box; you need to install your CSI. Good choice could be Longhorn because, created by the same company that maintains RKE2.
- Load balancers are not provided. You can deploy one of the solutions designed for on-prem, like MetalLB.
AWS EKS
- Kubernetes managed service, by Amazon.
- For a quick cluster creation, use eksctl tool.
- EKS does not deploy CSI driver by default. YOu have to install it manually.
More info: Amazon EBS CSI driver - The default StorageCless is gp2. The storageClass is not enabled for expansion by default.
You can enable it with this command:kubectl patch sc gp2 -p '{"allowVolumeExpansion": true}'
- You can deploy EKS native Ingress Controller, or you can install Ingress NGINX controler.
- AWS native load balancers expose services as a hostname. Point your custom domain names (alpha.space.demo) to these hostnames using CNAME records in your DNS zone.
Azure AKS
- Kubernetes managed service, by Microsoft.
- Several StorageClesses created in the cluster, of of the box.
You can use managed-csi (default) or managed-csi-premium, for example.
All classes are enabled for Volume Expansion. - There is a simple Ingress controller, that could be enabled by adding addon “http_application_routing”. The add-on is being retired, so you should not use it. You can use a new native Web Application Routing as an ingress controller.
Or you can deploy a classic Ingress NGINX controller.
IMPORTANT: You need to add the proper annotation to the Ingress Controller (using /healthz for a health check, as described in the link above), otherwise Azure load balancer would think that backend server is not ready and will not route traffic to Domino HTTP. - Azure native load balancers expose services as an IP address. Point your custom domain names (alpha.space.demo) to these IPs using A records in your DNS zone.
Google GKE
- Kubernetes managed service, by Microsoft.
- Several StorageClesses created in the cluster, of of the box.
You can use standard-rwo (default), _standard or premium-rwo. - GKE offers its Ingress Controler (info), but I deployed Ingress NGINX which works fine.
Linode LKE
- A good alternative to big Kubernetes providers.
- No Ingress Controller is installed by default; Linode suggests using Ingress NGINX.
- CSI is deployed by Linode, storage classes:
linode-block-storage-retain
,linode-block-storage
. - Load balancers are provided by Linode.