k0s

command module
v1.31.2-0...-0cd5e1e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 26, 2024 License: Apache-2.0 Imports: 6 Imported by: 0

README

k0s - The Zero Friction Kubernetes by Team Lens

Go build k0s network conformance Go Reference GitHub Repo stars Releases

GitHub release (latest by date) GitHub release (latest SemVer including pre-releases) GitHub commits since latest release (by date)

k0s-logo-dark k0s-logo-light

What happened to GitHub stargazers?

In September 2022 we made a human error while creating some build automation scripts&tools for the GitHub repository. Our automation accidentally changed the repo to a private one for few minutes. That itself is not a big deal and everything was restored quickly. But the nasty side effect is that it also removed all the stargazers at that point. :(

Before that mishap we had 4776 stargazers, making k0s one of the most popular Kubernetes distro out there.

So if you are reading this, and have not yet starred this repo we would highly appreciate the ⭐ to get our numbers closer to what they used to be.

Overview

k0s is an open source, all-inclusive Kubernetes distribution, which is configured with all of the features needed to build a Kubernetes cluster and packaged as a single binary for ease of use. Due to its simple design, flexible deployment options and modest system requirements, k0s is well suited for

  • Any cloud
  • Bare metal
  • Edge and IoT

k0s drastically reduces the complexity of installing and running a CNCF certified Kubernetes distribution. With k0s new clusters can be bootstrapped in minutes and developer friction is reduced to zero. This allows anyone with no special skills or expertise in Kubernetes to easily get started.

k0s is distributed as a single binary with zero host OS dependencies besides the host OS kernel. It works with any Linux without additional software packages or configuration. Any security vulnerabilities or performance issues can be fixed directly in the k0s distribution that makes it extremely straightforward to keep the clusters up-to-date and secure.

Key Features

Getting Started

If you'd like to try k0s, please jump in to our:

  • Quick Start Guide - Create a full Kubernetes cluster with a single node that includes both the controller and the worker.
  • Install using k0sctl - Deploy and upgrade multi-node clusters with one command.
  • NanoDemo - Watch a .gif recording on how to create a k0s instance.
  • Run k0s in Docker - Run k0s controllers and workers in containers.
  • For docs, tutorials, and other k0s resources, see docs main page.

Join the Community

  • k8s Slack - Reach out for support and help from the k0s community.
  • GitHub Issues - Submit your issues and feature requests via GitHub.

We welcome your help in building k0s! If you are interested, we invite you to check out the Contributing Guide and the Code of Conduct.

Community hours

We will be holding regular community hours. Everyone in the community is welcome to drop by and ask questions, talk about projects, and chat.

We currently have a monthly office hours call on the last Tuesday of the month.

To see the call details in your local timezone, check out https://dateful.com/eventlink/2735919704.

Adopters

k0s is used across diverse environments, from small-scale far-edge deployments to large data centers. Share your use case and add yourself to the list of adopters.

Motivation

We have seen a gap between the host OS and Kubernetes that runs on top of it: How to ensure they work together as they are upgraded independent from each other? Who is responsible for vulnerabilities or performance issues originating from the host OS that affect the K8S on top?

k0s is fully self contained. It’s distributed as a single binary with no host OS deps besides the kernel. Any vulnerability or perf issues may be fixed in k0s Kubernetes.

We have seen K8S with partial FIPS security compliance: How to ensure security compliance for critical applications if only part of the system is FIPS compliant?

k0s core + all included host OS dependencies + components on top may be compiled and packaged as a 100% FIPS compliant distribution using a proper toolchain.

We have seen Kubernetes with cumbersome lifecycle management, high minimum system requirements, weird host OS and infra restrictions, and/or need to use different distros to meet different use cases.

k0s 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.

Status

k0s is ready for production (starting from v1.21.0+k0s.0). Since the initial release of k0s back in November 2020, we have made numerous releases, improved stability, added new features, and most importantly, listened to our users and community in an effort to create the most modern Kubernetes product out there. The active development continues to make k0s even better.

Scope

While some Kubernetes distros package everything and the kitchen sink, k0s tries to minimize the amount of "add-ons" to bundle in. Instead, we aim to provide a robust and versatile "base" for running Kubernetes in various setups. Of course we will provide some ways to easily control and setup various "add-ons", but we will not bundle many of those into k0s itself. There are a couple of reasons why we think this is the correct way:

  • Many of the addons such as ingresses, service meshes, storage etc. are VERY opinionated. We try to build this base with fewer opinions. :D
  • Keeping up with the upstream releases with many external addons is very maintenance heavy. Shipping with old versions does not make much sense either.

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

The requirements for building k0s from source are as follows:

  • GNU Make (v3.81 or newer)
  • coreutils
  • findutils
  • Docker

All of the compilation steps are performed inside Docker containers, no installation of Go is required.

The k0s binary can be built in two different ways:

The "k0s" way, self-contained, all binaries compiled from source, statically linked and embedded:

make

The "package maintainer" way, without any embedded binaries (requires that the required binaries are provided separately at runtime):

make EMBEDDED_BINS_BUILDMODE=none

The embedded binaries can be built on their own:

make -C embedded-bins

Builds can be done in parallel:

make -j$(nproc)

Smoke test

Additionally to the requirements for building k0s, the smoke tests do require a local Go installation. you can run ./vars.sh go_version in a terminal to find out the version that's being used to build k0s. It will print the corresponding Go version to stdout.

To run a basic smoke test after build:

make check-basic

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
api
ctr
hack
tool module
internal
io
oci
pkg/sysinfo/probes
Package probes provides a framework for implementing and executing "probes".
Package probes provides a framework for implementing and executing "probes".
inttest
pkg
apis/autopilot
Package autopilot contains API Schema definitions for the autopilot.k0sproject.io API group.
Package autopilot contains API Schema definitions for the autopilot.k0sproject.io API group.
apis/autopilot/v1beta2
Package v1beta2 is the v1beta2 version of the API.
Package v1beta2 is the v1beta2 version of the API.
apis/etcd
Package k0s contains API Schema definitions for the etcd.k0sproject.io API group.
Package k0s contains API Schema definitions for the etcd.k0sproject.io API group.
apis/etcd/v1beta1
Package k0s contains API Schema definitions for the etcd.k0sproject.io API group.
Package k0s contains API Schema definitions for the etcd.k0sproject.io API group.
apis/helm
Package helm contains API Schema definitions for the helm.k0sproject.io API group.
Package helm contains API Schema definitions for the helm.k0sproject.io API group.
apis/helm/v1beta1
Package v1beta1 is the v1beta1 version of the API.
Package v1beta1 is the v1beta1 version of the API.
apis/k0s
Package k0s contains API Schema definitions for the k0s.k0sproject.io API group.
Package k0s contains API Schema definitions for the k0s.k0sproject.io API group.
apis/k0s/v1beta1
Package v1beta1 is the v1beta1 version of the API.
Package v1beta1 is the v1beta1 version of the API.
client/clientset/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
client/clientset/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
client/clientset/typed/autopilot/v1beta2
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset/typed/autopilot/v1beta2/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
client/clientset/typed/etcd/v1beta1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset/typed/etcd/v1beta1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
client/clientset/typed/helm/v1beta1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset/typed/helm/v1beta1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
client/clientset/typed/k0s/v1beta1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset/typed/k0s/v1beta1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
component/worker/nllb
Package nllb contains all components used to implement node-local load balancing across Kubernetes API servers for worker nodes.
Package nllb contains all components used to implement node-local load balancing across Kubernetes API servers for worker nodes.
debounce
Package debounce provides functionality to "debounce" multiple events in a given interval and handle only the most recent one.
Package debounce provides functionality to "debounce" multiple events in a given interval and handle only the most recent one.
k0scontext
Package k0scontext provides various utilities for working with Go contexts.
Package k0scontext provides various utilities for working with Go contexts.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL