Lightweight Kubernetes
 
 
 
 
Go to file
Erik Wilson 02dccd328a
Merge pull request #1835 from evrardjp/remove-trailing-whitespaces
Remove trailing whitespaces
2020-05-28 17:07:01 -07:00
.github/ISSUE_TEMPLATE Ask more clearly for K3s args and logs 2020-03-13 15:24:19 -07:00
cmd Update check-config.sh for k3s 2019-11-13 08:34:24 -07:00
contrib Remove trailing whitespaces 2020-05-27 17:27:30 +02:00
e2e Add e2e tests 2019-02-28 10:31:59 -07:00
manifests coredns: readiness- and livenessProbe tweaks 2020-05-06 22:18:32 +02:00
package [systemd] Add value to LimitNOFILE due to performance problems 2020-05-03 09:37:00 +02:00
pkg Merge pull request #1795 from StateFarmIns/support_for_setting_default_ssl_ciphers 2020-05-15 09:41:37 -07:00
scripts Merge pull request #1835 from evrardjp/remove-trailing-whitespaces 2020-05-28 17:07:01 -07:00
tests/perf Merge pull request #1494 from joakimr-axis/joakimr-axis_backticks 2020-03-25 12:15:41 -07:00
vendor Update k8s 1.18.3 2020-05-26 15:59:35 -07:00
.dockerignore Add rpm build & repo publish 2020-03-10 11:48:14 -07:00
.drone.yml Use curl to send dispatch event to k3s-upgrade repo 2020-03-16 19:30:40 +02:00
.gitignore Check for changes in the airgap image list 2020-03-09 19:58:00 -07:00
.golangci.json Upgrade to golangci-lint 2019-03-25 16:04:28 -07:00
BUILDING.md Fix markdown files according to markdownlint recommendations 2020-03-04 11:06:55 +01:00
CODE_OF_CONDUCT.md add code of conduct 2020-05-11 06:12:16 -07:00
Dockerfile.dapper Bump golang to 1.13.11 2020-05-26 15:55:58 -07:00
Dockerfile.manifest Upgrade golang to v1.13.8 2020-02-14 15:14:49 -07:00
Dockerfile.test.dapper Update sonobouy to v0.17.2 2020-04-18 23:59:08 -07:00
LICENSE Initial Commit 2019-01-01 01:23:01 -07:00
Makefile $ must be escaped in Makefile 2020-04-27 12:09:07 -07:00
README.md update readme 2020-05-04 10:11:42 -07:00
Vagrantfile Reduce memory for dev vms 2020-03-16 17:12:21 -07:00
channel.yaml Bump stable version from v1.17.4 to v1.18.2 2020-05-13 09:45:39 -07:00
docker-compose.yml Remove docker-compose default token 2019-12-12 18:02:54 -07:00
go.mod Update k8s 1.18.3 2020-05-26 15:59:35 -07:00
go.sum Update k8s 1.18.3 2020-05-26 15:59:35 -07:00
install.sh Merge pull request #1735 from stellirin/performance 2020-05-06 16:37:37 -07:00
k3s.service [systemd] Add value to LimitNOFILE due to performance problems 2020-05-03 09:37:00 +02:00
main.go Drop openapi hack 2019-08-28 20:53:39 -07:00
vendor.go Update k3s for k8s 1.17.0 2019-12-15 23:28:19 -07:00

README.md

k3s - Lightweight Kubernetes

Lightweight Kubernetes. Easy to install, half the memory, all in a binary less than 100 MB.

Great for:

  • Edge
  • IoT
  • CI
  • Development
  • ARM
  • Embedding k8s
  • Situations where a PhD in k8s clusterology is infeasible

What is this?

k3s is a fully compliant Kubernetes distribution with the following changes:

  1. Packaged as a single binary.
  2. Lightweight storage backend based on sqlite3 as the default storage mechanism. etcd3, MySQL, Postgres also still available.
  3. Wrapped in simple launcher that handles a lot of the complexity of TLS and options.
  4. Secure by default with reasonable defaults for lightweight environments.
  5. Minimal to no OS dependencies (just a sane kernel and cgroup mounts needed). k3s packages required dependencies
    • containerd
    • Flannel
    • CoreDNS
    • CNI
    • Host utilities (iptables, socat, etc)
    • Ingress controller (traefik)
    • Embedded service loadbalancer
    • Embedded network policy controller

What's with the name?

We wanted an installation of Kubernetes that was half the size in terms of memory footprint. Kubernetes is a 10 letter word stylized as k8s. So something half as big as Kubernetes would be a 5 letter word stylized as k3s. There is no long form of k3s and no official pronunciation.

Documentation

Please see the official docs site for complete documentation on k3s.

Quick-Start - Install Script

The k3s install.sh script provides a convenient way for installing to systemd or openrc, to install k3s as a service just run:

curl -sfL https://get.k3s.io | sh -

A kubeconfig file is written to /etc/rancher/k3s/k3s.yaml and the service is automatically started or restarted. The install script will install k3s and additional utilities, such as kubectl, crictl, k3s-killall.sh, and k3s-uninstall.sh, for example:

sudo kubectl get nodes

K3S_TOKEN is created at /var/lib/rancher/k3s/server/node-token on your server. To install on worker nodes we should pass K3S_URL along with K3S_TOKEN or K3S_CLUSTER_SECRET environment variables, for example:

curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=XXX sh -

Manual Download

  1. Download k3s from latest release, x86_64, armhf, and arm64 are supported.
  2. Run server.
sudo k3s server &
# Kubeconfig is written to /etc/rancher/k3s/k3s.yaml
sudo k3s kubectl get nodes

# On a different node run the below. NODE_TOKEN comes from
# /var/lib/rancher/k3s/server/node-token on your server
sudo k3s agent --server https://myserver:6443 --token ${NODE_TOKEN}