{"id":49632232,"url":"https://github.com/u-root/k4s","last_synced_at":"2026-05-05T13:05:12.602Z","repository":{"id":355139765,"uuid":"1216581628","full_name":"u-root/k4s","owner":"u-root","description":"Kubernetes tools (including runc) integrated with u-root via the gobusybox","archived":false,"fork":false,"pushed_at":"2026-05-02T02:40:36.000Z","size":832,"stargazers_count":5,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-02T04:27:24.505Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/u-root.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-21T03:33:41.000Z","updated_at":"2026-05-02T02:40:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/u-root/k4s","commit_stats":null,"previous_names":["u-root/k4s"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/u-root/k4s","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u-root%2Fk4s","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u-root%2Fk4s/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u-root%2Fk4s/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u-root%2Fk4s/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/u-root","download_url":"https://codeload.github.com/u-root/k4s/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u-root%2Fk4s/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32650449,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-05T13:05:11.638Z","updated_at":"2026-05-05T13:05:12.596Z","avatar_url":"https://github.com/u-root.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kuties\n\nk4s is short for KUTIES, which is Kubernetes plus U-root utiliTIES. \n\n![The KUTIES logo](kuties.svg)\n\n## How it works\n\nKubernetes tools (e.g. runc) are integrated via the\n[gobusybox](https://github.com/u-root/gobusybox), \nwhich converts Go programs to Go packages, and then compiles them as one\nprogram (this process takes around 20 seconds). \n\nIn standard [u-root](https://u-root.org/), this allows over 180 commands to be\nbuilt into a single binary smaller than 20MiB. \n\n## Requirements\n\nTo be used in k4s, Go programs must be Go buildable, statically linked, and hence pure Go.\n\nThis will require us to revisit projects, such as k3s and runc, that have evolved over the years and brought in\ndependencies on external, non-Go libraries (e.g. [libpathrs](https://github.com/cyphar/libpathrs/), used in runc);\nexternal non-Go programs (e.g. [nsenter](https://github.com/opencontainers/runc/tree/main/libcontainer/nsenter)); \nsystemd; and embedded binaries.\nThese dependencies can be made compile-time dependent. \n\n## Kubernetes components\n\nAs described in the architecture overview, Kubernetes consists of multiple\n[components](https://kubernetes.io/docs/concepts/overview/components/).\nEven projects claiming to be _single binary_ are, in fact, embedding multiple\nother binaries. They effectively contain multiple Go runtimes, using\ntechniques such as the [`//go embed` directive](https://pkg.go.dev/embed).\n\nHowever, with u-root, we build file system images, typically cpio, to contain\nsymlinks to one BusyBox-style binary with a single, shared Go runtime.\n\nIn the following, we look at what kinds of components we need, what multiple\nKubernetes distros use, and which implementations are the best candidates for\ninclusion in k4s. The main criteria are whether they are pure Go, and how they\naffect the eventual binary size. As usual, we split between control plane and\n[nodes](https://kubernetes.io/docs/concepts/architecture/#node-components).\n\nNote that we build [minimal](https://eevans.co/blog/minimum-viable-kubernetes/)\nsystems, so we omit optional components and addons, because we need the binary\nto fit in a flash part.\n\n### Control Plane\n\n| kind              | implementations         | notes |\n| ----------------- | ----------------------- | ----- |\n| front-end (API)   | kube-apiserver          |       |\n| backing store     | etcd, Kine              |       |\n| scheduler         | kube-scheduler          |       |\n| supervisor        | kube-controller-manager |       |\n\n### Node\n\n| kind              | implementations         | notes |\n| ----------------- | ----------------------- | ----- |\n| runner agent      | kubelet                 |       |\n| container runtime | CRI-O, containerd       |       |\n\n## Kubernetes distributions\n\n\u003e [NOTE]\n\u003e\n\u003e All of the distros are bundling different default configurations as they deem\n\u003e most suitable for their respective target audiences.\n\n### k0s\n\nWhile k0s stays closer to upstream Kubernetes, it still acts as a distribution\nby packaging components and managing resources like networking and control plane\nlifecycle.\nThe [architecture](https://docs.k0sproject.io/stable/architecture/)\ndocumentation describes how the components are set up.\n\n### k3s\n\nk3s disables all alpha features and bundles additional components like Traefik\nand the Local Path Provisioner, which may not be required in all setups.\nInstead of etcd, it comes with Kine for the backing store by default.\nMore details are in the [architecture](https://docs.k3s.io/architecture)\ndocumentation.\n\n### KubeSolo\n\nKubeSolo applies a number of patches to disable various features.\nIt is single-node with clustering and HA logic removed.\nLike k3s, it bundles Kine as the backing store by default.\nMore details are in the [documentation](https://kubesolo.io/documentation).\n\n### Talos\n\nTalos uses fully upstream builds of the basic components, with etcd for the\nbacking store and containerd for the container runtime.\nIt offers a CLI tool for cluster management, showcased in the documentation\n[overview](https://docs.siderolabs.com/talos/v1.12/overview/what-is-talos).\n\n## On u-root\n\nu-root is a core firmware component for 10s of millions of server systems around the world, providing a \ncompact, safe userland for LinuxBoot systems. \n\nIt has been part of the standard server firmware at Google since 2021; ByteDance adopted it a few years later.\nk4s will allow us to integrate Kubernetes capabilities into firmware images, enabling the creation of diskless Kubernetes\nappliances.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fu-root%2Fk4s","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fu-root%2Fk4s","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fu-root%2Fk4s/lists"}