1"use strict";(self.webpackChunkk_3_s_docs=self.webpackChunkk_3_s_docs||[]).push([[5899],{71920:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"introduction","title":"K3s - Lightweight Kubernetes","description":"Lightweight Kubernetes. Easy to install, half the memory, all in a binary of less than 100 MB.","source":"@site/docs/introduction.md","sourceDirName":".","slug":"/","permalink":"/","draft":false,"unlisted":false,"editUrl":"https://github.com/k3s-io/docs/edit/main/docs/introduction.md","tags":[],"version":"current","lastUpdatedAt":1789781277000,"frontMatter":{"slug":"/","title":"K3s - Lightweight Kubernetes"},"sidebar":"mySidebar","next":{"title":"Quick-Start Guide","permalink":"/quick-start"}}');var s=t(74848),r=t(28453);const l={slug:"/",title:"K3s - Lightweight Kubernetes"},o="What is K3s?",a={},c=[];function d(e){const n={h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Lightweight Kubernetes. Easy to install, half the memory, all in a binary of less than 100 MB."}),"\n",(0,s.jsx)(n.p,{children:"Great for:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Edge"}),"\n",(0,s.jsx)(n.li,{children:"Homelab"}),"\n",(0,s.jsx)(n.li,{children:"Internet of Things (IoT)"}),"\n",(0,s.jsx)(n.li,{children:"Continuous Integration (CI)"}),"\n",(0,s.jsx)(n.li,{children:"Development"}),"\n",(0,s.jsx)(n.li,{children:"Single board computers (ARM)"}),"\n",(0,s.jsx)(n.li,{children:"Air-gapped environments"}),"\n",(0,s.jsx)(n.li,{children:"Embedded K8s"}),"\n",(0,s.jsx)(n.li,{children:"Situations where a PhD in K8s clusterology is infeasible"}),"\n"]}),"\n",(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"what-is-k3s",children:"What is K3s?"})}),"\n",(0,s.jsx)(n.p,{children:"K3s is a fully compliant Kubernetes distribution with the following enhancements:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Distributed as a single binary or minimal container image."}),"\n",(0,s.jsx)(n.li,{children:"Lightweight datastore based on sqlite3 as the default storage backend. etcd3, MySQL, and Postgres are also available."}),"\n",(0,s.jsx)(n.li,{children:"Wrapped in simple launcher that handles a lot of the complexity of TLS and options."}),"\n",(0,s.jsx)(n.li,{children:"Secure by default with reasonable defaults for lightweight environments."}),"\n",(0,s.jsx)(n.li,{children:"Operation of all Kubernetes control plane components is encapsulated in a single binary and process, allowing K3s to automate and manage complex cluster operations like distributing certificates."}),"\n",(0,s.jsx)(n.li,{children:"External dependencies have been minimized; the only requirements are a modern kernel and cgroup mounts."}),"\n",(0,s.jsxs)(n.li,{children:['Packages the required dependencies for easy "batteries-included" cluster creation:',"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"containerd / cri-dockerd container runtime (CRI)"}),"\n",(0,s.jsx)(n.li,{children:"Flannel Container Network Interface (CNI)"}),"\n",(0,s.jsx)(n.li,{children:"CoreDNS Cluster DNS"}),"\n",(0,s.jsx)(n.li,{children:"Traefik Ingress controller"}),"\n",(0,s.jsx)(n.li,{children:"ServiceLB Load-Balancer controller"}),"\n",(0,s.jsx)(n.li,{children:"Kube-router Network Policy controller"}),"\n",(0,s.jsx)(n.li,{children:"Local-path-provisioner Persistent Volume controller"}),"\n",(0,s.jsx)(n.li,{children:"Spegel distributed container image registry mirror"}),"\n",(0,s.jsx)(n.li,{children:"Host utilities (iptables, socat, etc)"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h1,{id:"whats-with-the-name",children:"What's with the name?"}),"\n",(0,s.jsx)(n.p,{children:"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."})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var i=t(96540);const s={},r=i.createContext(s);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.