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 reddit.com/r/homelab

Our great sponsors
  • SonarLint - Clean code begins in your IDE with SonarLint
  • InfluxDB - Access the most powerful time series database as a service
  • 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

  • SonarLint

    Clean code begins in your IDE with SonarLint. Up your coding game and discover issues early. SonarLint is a free plugin that helps you find & fix bugs and security issues from the moment you start writing code. Install from your favorite IDE marketplace today.

  • 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

  • InfluxDB

    Access the most powerful time series database as a service. Ingest, store, & analyze all types of time series data in a fully-managed, purpose-built database. Keep data forever with low-cost storage and superior data compression.

  • 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

    ⚠️ 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