Looking for a sanity check on a project I'm working on at home, hoping you fine people can help - Raspberry Pi Kubernetes Cluster

This page summarizes the projects mentioned and recommended in the original post on /r/homelab

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • kube-karp

    ☸ Add a floating virtual IP to Kubernetes cluster nodes for load balancing easily.

  • 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/

  • akri

    A Kubernetes Resource Interface for the Edge

  • 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

  • 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.

    InfluxDB logo
  • cstor-operators

    Collection of OpenEBS cStor Data Engine Operators

  • - SMB CSI: https://github.com/kubernetes-csi/csi-driver-smb - OpenEBS if you got the hardware for it: https://openebs.io/

  • k8s-device-plugin

    NVIDIA device plugin for Kubernetes

  • 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

  • csi-driver-smb

    This driver allows Kubernetes to access SMB Server on both Linux and Windows nodes.

  • - SMB CSI: https://github.com/kubernetes-csi/csi-driver-smb - OpenEBS if you got the hardware for it: https://openebs.io/

  • external-dns

    Configure external DNS servers (AWS Route53, Google CloudDNS and others) for Kubernetes Ingresses and Services

  • 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

  • metallb

    A network load-balancer implementation for Kubernetes using standard routing protocols

  • 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

  • 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.

    WorkOS logo
  • helm

    The Kubernetes Package Manager

  • Get comfortable with these tools, they install stuff: - kubectl/kustomize: https://kubectl.docs.kubernetes.io/references/ - Helm: https://helm.sh/

  • cert-manager

    Automatically provision and manage TLS certificates in Kubernetes

  • 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

  • harvester

    Open source hyperconverged infrastructure (HCI) software

  • - https://github.com/rancher/harvester - https://kubevirt.io/ - https://docs.virtlet.cloud/

  • kubevirt

    Kubernetes Virtualization API and runtime in order to define and manage virtual machines.

  • - https://github.com/rancher/harvester - https://kubevirt.io/ - https://docs.virtlet.cloud/

  • charts

    Discontinued ⚠️ Deprecated : Helm charts for applications you run at home (by k8s-at-home)

  • 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

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts