Kubernetes on Raspbian (Raspberry Pi)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Alex Ellis a712282e44 Update issue templates 4 years ago
.github Update issue templates 4 years ago
script Add Adaptations / derived works 6 years ago
.DEREK.yml Create .DEREK.yml 6 years ago
GUIDE.md Minor update 5 years ago
LICENSE Initial porting of my gist. 6 years ago
README.md Remove extra space 4 years ago

README.md

Kubernetes on Raspbian

This repository holds the "original tutorial" for "Kubernetes on Raspbian" by Alex Ellis using kubeadm. It also has a list of reader's clusters for your inspiration and Alex's newest work with k3s.

My modest stack of RPis

If you'd like to read more about Kubernetes clusters, see Alex's write-up over the past 5 years of building with Docker and these tiny devices:

Five years of Raspberry Pi Clusters

Start the guide

Pick between k3s or kubeadm.

My current recommendation is to use k3s from Rancher Labs. It is normal Kubernetes and passes the conformance tests written by the CNCF. I'm yet to be convinced of why someone wouldn't use this for a hobbyist build and I've been pleasantly surprised by it. Rancher Labs offers commercial support and k3s is GA, even more reason to use this option.

k3s is:

  • faster, and uses fewer resources - 300MB for a server, 50MB for an "agent"
  • well-maintained and ARMHF / ARM64 just works
  • HA is available as of k3s 1.0 along with Kubernetes 1.16
  • still normal, upstream, compliant Kubernetes
  • doesn't appear to run into some of the complicated issues we've seen with kubeadm

k3sup diagram

You may also enjoy k3sup ("ketchup") - a tool I built with the community to bootstrap k3s clusters over SSH. It has a simple k3sup install / join syntax and is available on GitHub. See more at: https://k3sup.dev

Start with a tutorial now (newest listed first):

2) Or pick kubeadm (advanced users)

This guide is part of a larger blog post: Build your own bare-metal ARM cluster.

My current thinking is that only advanced users should attempt to install Kubernetes with kubeadm. Historically, it's had some unfortunate issues around timeouts and being slow, k3s makes installation and operation seamless.

Once you're up and running please share your clusters on Twitter with @alexellisuk.

You can also join the OpenFaaS Slack community's dedicated channel for ARM and Raspberry Pi #arm-and-pi. Just email alex at openfaas dot com for your invitation.

Attribution

You're welcome to make use of this guide and to refer to it, but please do not copy it or pass it off as your own without giving attribution to the author(s). If you have suggestions or have found that some of the instructions have fallen out of date, then please see the Contributions section below on how to contribute.

Reader's clusters

Submit your cluster and description by creating a GitHub issue.

Adaptations / derived works

Contributions

Contributions are welcome, but must be tested and justified.

Please make sure each commit is signed off with git commit -s (this means don't edit in the GitHub UI).

See below for more information.

Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.