devalias.net icon indicating copy to clipboard operation
devalias.net copied to clipboard

[DeepDive] Kubernetes on Unraid (Slackware) + OpenFaaS

Open 0xdevalias opened this issue 6 years ago • 2 comments

Concept

It would be cool to be able to run Kubernetes easily on top of Unraid, which appears to be built on Slackware.

tl;dr

  • Enable VM support on unraid
  • Install kubectl
  • Set/persist minikube's MINIKUBE_HOME ENV var to a drive location that will persist on reboot (eg. /mnt/cache/foo)
    • export MINIKUBE_HOME=/mnt/cache/minikube
  • Install minikube
    • curl -Lo minikube https://storage.googleapis.com/minikube/releases/v1.1.1/minikube-linux-amd64 && chmod +x minikube && sudo cp minikube /usr/local/bin/ && rm minikube
    • this would be even better if it was wrapped up as an unraid plugin..
  • Install docker-machine-driver-kvm2
    • curl -Lo docker-machine-driver-kvm2 https://storage.googleapis.com/minikube/releases/v1.1.1/docker-machine-driver-kvm2 && chmod +x docker-machine-driver-kvm2 && sudo cp docker-machine-driver-kvm2 /usr/local/bin/ && rm docker-machine-driver-kvm2
    • this would be even better if it was wrapped up as an unraid plugin..
  • Set minikube's default driver to KVM2
    • minikube config set vm-driver kvm2
  • Start minikube
    • minikube start or minikube start -p foo
  • ???
  • Profit!

Research

Unraid

VMs

  • http://unraid.local/Settings/VMSettings
    • Enable VMs: Yes
    • Libvirt storage location: /mnt/cache/libvirt/libvirt.img
    • Default VM storage path: /mnt/cache/VMs/
    • Default ISO storage path:: /mnt/user/Foo/
  • http://unraid.local/VMs
    • Add VM: http://unraid.local/VMs/VMTemplates
    • https://forums.unraid.net/forum/45-vm-templates/
    • https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_getting_started_guide/sect-domain_xml_intro
  • https://lime-technology.com/wp/virtualization-host/
    • https://forums.unraid.net/topic/37013-a-brief-synopsis-of-kvm-hvm-and-vfio/
  • https://forums.unraid.net/forum/51-vm-engine-kvm/
  • https://wiki.unraid.net/UnRAID_6/VM_Management
    • KVM, QEMU, VirtIO, VirtFS, VFIO, Libvirt
  • https://serverfault.com/questions/324281/how-do-you-increase-a-kvm-guests-disk-space

Plugins

  • https://forums.unraid.net/topic/74396-creating-new-plugin/
    • https://forums.unraid.net/topic/52623-plugin-system-documentation/
    • https://forums.unraid.net/topic/33322-how-does-the-plugin-system-work-documentation-added-wip/
    • https://forums.unraid.net/topic/42808-plugin-templates-for-ca-appstore/
    • https://forums.unraid.net/topic/38431-plug-in-application-template-categorizer/
    • https://forums.unraid.net/forum/61-plugin-support/
  • https://wiki.unraid.net/UnRAID_Plugins_for_V6

Kubernetes

  • https://kubernetes.io/
    • https://kubernetes.io/docs/setup/
  • https://github.com/kubernetes/minikube
    • https://github.com/kubernetes/minikube/releases
    • https://kubernetes.io/docs/setup/learning-environment/minikube/
    • https://kubernetes.io/docs/tasks/tools/install-minikube/
      • https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-on-linux
    • https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#kvm2-driver
      • minikube config set vm-driver kvm2
      • minikube start --vm-driver kvm2
    • https://github.com/kubernetes/minikube/blob/master/docs/env_vars.md#other-variables
      • MINIKUBE_HOME

OpenFaaS

  • https://www.openfaas.com/
    • https://www.openfaas.com/blog/introducing-openfaas-for-lambda/
    • https://www.openfaas.com/blog/openfaas-cloudrun/
  • https://docs.openfaas.com/
  • https://github.com/openfaas
    • https://github.com/openfaas/faas
    • https://github.com/openfaas/faas-cli
    • https://github.com/openfaas/faas-netes
    • https://github.com/openfaas/openfaas-cloud
    • https://github.com/openfaas/store
    • https://github.com/openfaas/workshop
  • https://github.com/openfaas-incubator
    • https://github.com/openfaas-incubator/ofc-bootstrap
    • https://github.com/openfaas-incubator/connector-sdk
  • https://github.com/faas-and-furious

Slackware

  • Slackware's package management tools include:
    • installpkg
    • removepkg
    • upgradepkg
    • etc
  • https://slackbuilds.org/repository/14.2/misc/deb2tgz/
    • Shell script that converts Debian packages to Slackware packages.

0xdevalias avatar Jun 16 '19 04:06 0xdevalias

Working with version 1.18.1 instead of 1.1.1.

Consider adding a dedicated user:

  • useradd -m -d /mnt/user/system/kube kube
  • usermod -a -G users kube
  • su kube
  • export PATH=.:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
  • minikube start

image

jess-sys avatar Mar 31 '21 09:03 jess-sys

I would expect this to use all cores and all ram, making it unusable when using VM-s

BoKKeR avatar Mar 04 '22 11:03 BoKKeR