k8sd is a cluster-manager for Kubernetes and is primarily used in the Canonical Kubernetes platform.
k8sd provides cluster management capabilities for Kubernetes, handling bootstrapping, node joining, configuration management, and cluster lifecycle operations.
The API is defined and versioned in github.com/canonical/k8s-snap-api.
This project builds three main binaries:
- k8sd: The main daemon that manages the Kubernetes cluster
- k8s: The CLI tool for interacting with k8sd and managing the cluster
- k8s-apiserver-proxy: A proxy component for the Kubernetes API server
Build with dynamic linking
make dynamicThe compiled binaries will be placed in the bin/dynamic/ directory.
Build with static linking
make staticThe compiled binaries will be placed in the bin/static/ directory.
Format the code and tidy dependencies:
make go.fmtRun golangci-lint:
make go.lintRun go vet:
make go.vetRun unit tests with coverage:
make go.unitGenerate documentation from code:
make go.docRemove build artifacts:
make cleanDo you have questions about Canonical Kubernetes? Perhaps you'd like some advice from more experienced users or discuss how to achieve a certain goal? Get in touch on the #canonical-kubernetes channel on the Kubernetes Slack workspace.
Please report any bugs and issues on the k8s-snap repository.
Canonical Kubernetes is covered by the Ubuntu Code of Conduct.
Canonical Kubernetes is a proudly open source project, and we welcome and encourage contributions to the code and documentation. If you are interested, take a look at our contributing guide.
Canonical Kubernetes is released under the GPL-3.0 license.
© 2015-2026 Canonical Ltd.