Skip to content

Commit

Permalink
Merge pull request k0sproject#407 from ncopa/clarify-readme
Browse files Browse the repository at this point in the history
Clarify readme
  • Loading branch information
ncopa authored Nov 17, 2020
2 parents 51156e5 + 52e3f58 commit d8dac59
Showing 1 changed file with 57 additions and 45 deletions.
102 changes: 57 additions & 45 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,26 @@

![k0s logo](k0s-logo-full-color.svg)

k0s is yet another Kubernetes distro. Yes. But we do some of the things pretty different from other distros out there.
k0s is an all-inclusive Kubernetes distribution with all the required bells and whistles preconfigured to make building a Kubernetes clusters a matter of just copying an executable to every host and running it.

## Key Features

- Packaged as a single static binary
- Self-hosted, isolated control plane
- Variety of storage backends: etcd, SQLite, MySQL (or any compatible), PostgreSQL
- Elastic control-plane
- Vanilla upstream Kubernetes
- Supports custom container runtimes (containerd is the default)
- Supports custom Container Network Interface (CNI) plugins (calico is the default)
- Supports x86_64 and arm64

## Quick start

```
curl -sSLf get.k0s.sh | sh
k0s server --enable-worker
```

k0s is a single binary all-inclusive Kubernetes distribution with all the required bells and whistles preconfigured to make building a Kubernetes clusters a matter of just copying an executable to every host and running it.

![k0s demo](k0s_demo.gif)

Expand All @@ -30,18 +47,9 @@ _We have seen Kubernetes with cumbersome lifecycle management, high minimum syst
**→** k0s Kubernetes is designed to be lightweight at its core. It comes with a tool to automate cluster lifecycle management. It works on any host OS and infrastructure, and may be extended to work with any use cases such as edge, IoT, telco, public clouds, private data centers, and hybrid & hyper converged cloud applications without sacrificing the pure Kubernetes compliance or amazing developer experience.


Some of the high level goals of the project:
- Packaged as a single binary
- Self-hosted, isolated control plane
- Variety of storage backends: etcd, SQLite, MySQL (or any compatible), PostgreSQL
- Elastic control-plane
- Vanilla upstream Kubernetes

See more in [architecture docs](docs/architecture.md)

## Features
## Other Features

- One static binary
- Kubernetes 1.19
- Containerd 1.4
- Control plane storage options:
Expand All @@ -61,6 +69,8 @@ See more in [architecture docs](docs/architecture.md)
- Metrics-server 0.3
- Custom roles\profiles for worker nodes

See more in [architecture docs](docs/architecture.md)

## Status

We're still on the 0.x.y release versions, so things are not yet 100% stable. That includes both stability of different APIs and config structures as well as the stability of k0s itself. While we do have some basic smoke testing happening we're still lacking more longer running stability testing for k0s based clusters. And of course we only test some known configuration combinations.
Expand All @@ -75,38 +85,6 @@ While some Kubernetes distros package everything and the kitchen sink in, k0s tr

With strong enough arguments we might take in new addons but in general those should be something that are essential for the "core" of k0s.

## Build

`k0s` can be built in 3 different ways:

Fetch official binaries (except `kine` and `konnectivity-server`, which are built from source):
```
make EMBEDDED_BINS_BUILDMODE=fetch
```

Build Kubernetes components from source as static binaries (requires docker):
```
make EMBEDDED_BINS_BUILDMODE=docker
```

Build k0s without any embedded binaries (requires that Kubernetes
binaries are pre-installed on the runtime system):
```
make EMBEDDED_BINS_BUILDMODE=none
```

Builds can be done in parallel:
```
make -j$(nproc)
```

## Smoke test

To run a smoke test after build:
```
make check-basic
```

## Cluster bootstrapping

Move the built `k0s` binary to each of the nodes.
Expand All @@ -128,6 +106,8 @@ Join a new worker node to the cluster by running:
k0s worker "superlongtokenfrompreviousphase"
```

The client config (for kubectl or lens) can be found in `/var/lib/k0s/pki/admin.conf` on the controller. Replace `localhost` with the public IP address for the control plane.

For more detailed description see [creating cluster documentation](docs/create-cluster.md).

### k0s-in-docker
Expand All @@ -136,7 +116,7 @@ For more detailed description see [creating cluster documentation](docs/create-c

To run a single node controller+worker combo, just run it in docker with:
```
docker run -d --name k0s-controller --hostname controller --privileged -v /var/lib/k0s -p 6443:6443 docker.pkg.github.com/k0sproject/k0s/k0s:<version>
docker run -d --name k0s-controller --hostname controller --privileged -v /var/lib/k0s -p 6443:6443 k0sproject/k0s
```

Replace `<version>` with a released version number, we build the image for all tagged releases.
Expand All @@ -147,3 +127,35 @@ Just grab the kubeconfig with `docker exec k0s-controller cat /var/lib/k0s/pki/a

Read more details at [running k0s in Docker](docs/k0s-in-docker.md).

## Build

`k0s` can be built in 3 different ways:

Fetch official binaries (except `kine` and `konnectivity-server`, which are built from source):
```
make EMBEDDED_BINS_BUILDMODE=fetch
```

Build Kubernetes components from source as static binaries (requires docker):
```
make EMBEDDED_BINS_BUILDMODE=docker
```

Build k0s without any embedded binaries (requires that Kubernetes
binaries are pre-installed on the runtime system):
```
make EMBEDDED_BINS_BUILDMODE=none
```

Builds can be done in parallel:
```
make -j$(nproc)
```

## Smoke test

To run a smoke test after build:
```
make check-basic
```

0 comments on commit d8dac59

Please sign in to comment.