Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
external-dns
Configure external DNS servers (AWS Route53, Google CloudDNS and others) for Kubernetes Ingresses and Services
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
To begin, I highly recommend K3s by Rancher. Just go straight for the Triple HA Master with kube-karp on your RPis. This is the juicy way. Also don't listen to anyone saying you shouldn't run pods on your master nodes, you totally can and would be a waste of resources if you didn't. - Kube karp for master nodes VIP: https://github.com/immanuelfodor/kube-karp - HA Embedded k3s: https://rancher.com/docs/k3s/latest/en/installation/ha-embedded/
Some notes on Plex/Emby/Kodi and transcoding. If you want true transcoding with GPU acceleration, you have to have Nvidia GPU or be a k8s device plugin genius. The whole idea of mounting elastic devices in k8s is fairly new and rather complex. In the mean time transcoding is best done on a beefy device with a proper CPU (eg i7) or specifically Nvidia GPU because there are numerous pre-made plugins. I just run Plex and Emby on an old ATX gaming machine without GPU acceleration and it works totally fine. They were barely usable for just me when running on the RPis, wouldn't recommend it unless you can figure out how to mount the correct devices in the pod using a custom raspberry pi device plugin . . . lol good luck! - Arm labs device manager: https://community.arm.com/developer/research/b/articles/posts/a-smarter-device-manager-for-kubernetes-on-the-edge - Deis labs Akri device manager: https://github.com/deislabs/akri - Nvidia GPU plugin: https://github.com/NVIDIA/k8s-device-plugin
- SMB CSI: https://github.com/kubernetes-csi/csi-driver-smb - OpenEBS if you got the hardware for it: https://openebs.io/
Some notes on Plex/Emby/Kodi and transcoding. If you want true transcoding with GPU acceleration, you have to have Nvidia GPU or be a k8s device plugin genius. The whole idea of mounting elastic devices in k8s is fairly new and rather complex. In the mean time transcoding is best done on a beefy device with a proper CPU (eg i7) or specifically Nvidia GPU because there are numerous pre-made plugins. I just run Plex and Emby on an old ATX gaming machine without GPU acceleration and it works totally fine. They were barely usable for just me when running on the RPis, wouldn't recommend it unless you can figure out how to mount the correct devices in the pod using a custom raspberry pi device plugin . . . lol good luck! - Arm labs device manager: https://community.arm.com/developer/research/b/articles/posts/a-smarter-device-manager-for-kubernetes-on-the-edge - Deis labs Akri device manager: https://github.com/deislabs/akri - Nvidia GPU plugin: https://github.com/NVIDIA/k8s-device-plugin
- SMB CSI: https://github.com/kubernetes-csi/csi-driver-smb - OpenEBS if you got the hardware for it: https://openebs.io/
For SSL, DNS, and Ingress: - k3s comes with traefik, use it - Cert manager will auto pilot your lets encrypt: https://cert-manager.io/ - Disable the servicelb in k3s, its awful, use MetalLb instead, it is necessary for Plex: https://metallb.universe.tf/ - External DNS will manage your, well . . . external DNS: https://github.com/kubernetes-sigs/external-dns
For SSL, DNS, and Ingress: - k3s comes with traefik, use it - Cert manager will auto pilot your lets encrypt: https://cert-manager.io/ - Disable the servicelb in k3s, its awful, use MetalLb instead, it is necessary for Plex: https://metallb.universe.tf/ - External DNS will manage your, well . . . external DNS: https://github.com/kubernetes-sigs/external-dns
Get comfortable with these tools, they install stuff: - kubectl/kustomize: https://kubectl.docs.kubernetes.io/references/ - Helm: https://helm.sh/
For SSL, DNS, and Ingress: - k3s comes with traefik, use it - Cert manager will auto pilot your lets encrypt: https://cert-manager.io/ - Disable the servicelb in k3s, its awful, use MetalLb instead, it is necessary for Plex: https://metallb.universe.tf/ - External DNS will manage your, well . . . external DNS: https://github.com/kubernetes-sigs/external-dns
- https://github.com/rancher/harvester - https://kubevirt.io/ - https://docs.virtlet.cloud/
- https://github.com/rancher/harvester - https://kubevirt.io/ - https://docs.virtlet.cloud/
For your second question, yes you most definitely can do everything you want to do with Home Assistant. I also installed it and it works as expected. The pod is not what is exposed on your network, it is the service of type LoadBalancer which exposes an external IP on your network. This is where MetalLb comes into play. You simply tell the Home Assistant service to be type LoadBalancer and add some annotations to configure MetalLB. Do take not on the gotcha with LB services wanting to expose UDP and TCP, you need two services with a shared IP to do so. - https://metallb.universe.tf/usage/#ip-address-sharing - here is the chart I used: https://github.com/k8s-at-home/charts/tree/master/charts/home-assistant
Related posts
- How to take down production with a single Helm command
- Deploy Kubernetes in Minutes: Effortless Infrastructure Creation and Application Deployment with Cluster.dev and Helm Charts
- Kubernets Helm Chart
- Let's Celebrate Relicensing from an Open Source to a Proprietary License
- Simplified Deployment: A Deep Dive into Containerization and Helm