
K3s 是 SUSE(前身 Rancher Labs)推出的輕量級 Kubernetes 發行版,二進位檔不到 100MB,最低 512MB RAM 的機器就能跑起來。它通過 CNCF 完整認證,意思是你寫的 YAML 可以直接搬到正式的 Kubernetes 叢集——只是它把 cloud-provider、legacy、alpha 等用不到的東西全部拔掉,最後變成一顆 single binary。為邊緣運算、IoT 裝置、CI/CD pipeline、開發環境量身設計。
這篇會帶你完整搞懂 K3s 的來歷、架構設計、預設內建了什麼、實戰怎麼裝,以及最重要的——什麼情境該用、什麼情境不要硬塞。如果你對容器化還沒概念,建議先看 Docker 是什麼?為什麼工程師愛用容器化 補一下基礎,再回來讀這篇會更順。
K3s 是什麼?從 Kubernetes 講起
先補位 30 秒:Kubernetes 在做什麼事?
Kubernetes(簡稱 K8s,K 加 8 個字母加 s)是 Google 在 2014 年開源的容器編排系統,前身是 Google 內部代號 Borg 的調度系統,目前由 Cloud Native Computing Foundation 維護。它要解決的問題很具體:當你有 100 個 container 散在 10 台機器上跑,誰來決定每個 container 該排在哪一台、哪一台死了該怎麼自動把它搬到別處、流量該怎麼平均分配、版本要怎麼滾動更新——這些事情手動做會把人逼瘋,K8s 就是那個自動處理的編排者。
K8s 的世界有幾個關鍵詞要記:Pod 是最小調度單位(一個或多個 container 綁在一起跑)、Deployment 描述「我希望這個服務跑幾份、用什麼 image」、Service 處理叢集內外的網路存取、Node 是底層那台機器。你寫一份 YAML 把這些講清楚,K8s 就會想辦法讓現實狀態符合你的描述。這個「宣告式管理」是它的精髓,跟傳統「我下指令、機器執行」的命令式思維完全不同。
從 2015 年釋出 1.0 開始,K8s 十年來幾乎輾壓了所有競爭對手——Docker Swarm、Mesos、Nomad——原因不複雜:自動恢復、自動擴縮、宣告式 API、生態系極大。但這些好處的代價是「重」:一個基本可用的叢集要好幾 GB 記憶體、幾十個 process、複雜的網路與儲存設定。對工廠裡那台 4GB RAM 的邊緣盒子、或開發者筆電上想跑個測試環境的場景來說,標準 K8s 根本裝不進去。這就是 K3s 的切入點。
想更完整地理解 Kubernetes 在做什麼、為什麼會出現、適合哪些團隊?延伸閱讀:Kubernetes 是什麼?容器編排核心概念與適用場景完整介紹,那篇文章從架構、核心物件到適用場景全部講清楚。
K3s 的名字怎麼來?
名字其實是個工程師梗。K8s = K + 8 個字母 + s,那把它砍一半呢?K + 4 個字母 + s = K4s 嗎?不是。Rancher Labs 在 2019 年釋出時的內部說法是「Kubernetes 的記憶體佔用大概要砍一半」,所以暱稱就變成 K3s。沒有官方全名、不是縮寫,就是「半個 K8s」的意思。
這個命名背後的設計哲學很直接:把標準 Kubernetes 拿來,砍掉資料中心級才用得到的功能、把外掛換成輕量替代品、把所有東西打包成一個可執行檔。最後產出的東西,依然是「真正的」Kubernetes——只是穿上了適合邊緣場景的合身衣服。
Cloud Native Computing Foundation 在 2026 年 1 月公布的 2025 年度雲端原生調查報告 顯示,82% 的容器使用者已經把 Kubernetes 跑在 production 環境,628 位受訪 IT 專業人員確認 K8s 已經變成跑 AI workload 的事實上作業系統。但這個統計沒告訴你的是:剩下 18% 不是不想用,很多是被資源門檻擋在外面——這就是 K3s 想解決的事。
K3s 在 2020 年正式被 CNCF 接收為 Sandbox project,2022 年升級為 Incubating project。背後的維護者是 SUSE(2020 年併購 Rancher Labs),生態系還包含整個 Rancher 家族(Rancher Manager、Longhorn、RKE2 等),所以你選 K3s 不是選一個短命專案——它有商業公司在養。
ℹ️快速辨識三個名字
**K8s** = 標準 Kubernetes(Google 開源、CNCF 主專案)。**K3s** = SUSE 的輕量版本,這篇主角。**K0s** = Mirantis 推出的另一套輕量版,跟 K3s 是競爭對手但設計哲學略有不同。三個都是 CNCF 認證的 Kubernetes,YAML 大致互通。
K3s 的架構設計:怎麼把 Kubernetes 縮成一顆 binary

標準 Kubernetes 部署起來是一群 process:kube-apiserver、kube-scheduler、kube-controller-manager、etcd、kubelet、kube-proxy⋯⋯每個都要單獨啟動、單獨設定。光是想搞懂「誰跟誰講話」就足以勸退新手。K3s 的做法是把這一切打包成同一顆 Go binary,啟動時用 process 管理機制把它們跑起來。
這個設計的好處不只是「檔案小」,更關鍵的是運維上的簡化。沒有跨 process 的 IPC 設定、沒有版本錯配的可能(因為都是同個 binary)、升級就是換一顆檔案重啟。對在 100 個工廠端點都要部署叢集的場景,這個差異直接決定「能不能落地」,遠超過幾個百分點的優化。
用 SQLite 取代 etcd 是 K3s 最大膽的決定
Kubernetes 的所有狀態資料都存在 etcd 裡——這是一個高可用的分散式 key-value store。問題是 etcd 本身就是個重的元件:要 quorum、要選舉、磁碟 I/O 要快、記憶體吃得不少。對單節點或邊緣環境來說,這完全是殺雞用牛刀。
K3s 預設改用 SQLite。對,就是那個寫嵌入式系統會用的 SQLite。對單節點叢集來說,SQLite 的效能完全夠用,而且少了一大塊複雜度。多節點 HA 場景下,K3s 會切換到 embedded etcd(仍然包在那顆 binary 裡),或者你也可以指定外接 MySQL / PostgreSQL。
⚠️Raspberry Pi + SD card 跑 K3s 的小陷阱
如果你打算把 K3s 跑在 Pi 上、用 SD card 當儲存,要小心 etcd 對磁碟 I/O 的需求。SQLite 在 SD card 上撐得住,但一旦切到 embedded etcd(多節點 HA),SD card 的隨機寫入效能會讓 etcd 的心跳超時,整個叢集會變得不穩。生產環境的 Pi 叢集建議掛 USB SSD 或 NVMe HAT。
被砍掉的東西:你不會想念的 legacy 包袱
K3s 拿掉了大量「資料中心 K8s 才需要、邊緣場景用不到」的元件。看下面這張對照表就清楚:
功能類別 | 標準 K8s | K3s |
|---|---|---|
Storage 後端 | etcd(必要) | SQLite 預設,可選 etcd / MySQL / PG |
Cloud provider 整合 | AWS / GCP / Azure 等內建 | 全部移除(用 out-of-tree CSI / CCM) |
Alpha / Legacy API | 保留以維持相容性 | 拔掉,只留穩定 API |
CNI 網路外掛 | 自己選(Calico / Cilium 等) | 預設 Flannel,可換 |
Container runtime | 自己裝(containerd / CRI-O) | 內建 containerd |
Ingress controller | 自己裝 | 內建 Traefik |
Load balancer | 依賴雲端 LB | 內建 ServiceLB(Klipper) |
Helm 部署 | 自己裝 Helm CLI | 內建 Helm Controller,用 CRD 管理 |
二進位檔大小 | 數百 MB(多元件加總) | < 100 MB single binary |
最低 RAM 需求 | Server 通常 2GB+ | Server 512MB / Agent 75MB |
這張表的重點在於「K3s 把選擇做掉了」,而非單純「K3s 比較少功能」。標準 K8s 給你 100 種選項——你要選 CNI、選 ingress、選 LB、選 storage——然後你會花三天試錯找到能跑的組合。K3s 直接幫你選好,跑起來就有 ingress、有 LB、有 DNS。要換也可以,但 80% 的場景不用換。
K3s 與 K8s 的快速對比表
如果你只想知道「跟 K8s 比起來怎麼選」,先看這張對照表抓個感覺。完整的架構深挖、效能 benchmark、決策樹會在系列下一篇 K3s vs K8s 完整比較:怎麼選? 處理。
比較項目 | 標準 K8s | K3s |
|---|---|---|
安裝時間 | 數小時到數天(含設定) | 一行指令,30 秒 |
控制平面節點 RAM | 建議 4GB 以上 | 最低 512MB |
適合節點規模 | 數百到數千節點 | 實務上 50-100 節點以內 |
典型適用場景 | 資料中心、雲端大型叢集、AI workload | 邊緣、IoT、CI/CD、開發、小型生產 |
ARM 支援 | 有但不是預設優化 | ARM64 / ARMv7 一等公民 |
升級複雜度 | 高(多元件版本協調) | 低(換一顆 binary) |
生態系豐富度 | 極豐富(thousands of operators) | 100% 相容 K8s 生態,但部分雲端整合需自裝 |
背後維護者 | CNCF / Google / 多家雲廠 | SUSE(前 Rancher Labs) |
學習曲線 | 陡(要學一堆元件) | 溫和(先把 K8s 概念跑起來,再進階) |
一句話總結:K3s 把同一套 Kubernetes API 用更聰明的方式打包,讓資源受限或不想養 DevOps 團隊的場景也跑得起來——功能並沒有真的減少。
K3s 適合什麼場景?四個主流應用情境

有一個產業數據很值得參考——Loginline 整理的 2026 Kubernetes 趨勢報告 預估到 2026 年,75% 的企業資料會在邊緣端處理,67% 的企業計畫在邊緣 / Kubernetes / K3s 領域投資。這個數字背後反映的是同一個趨勢:把運算搬到使用者旁邊。而能跑在低資源裝置上、又是 Kubernetes 標準的選項,沒有比 K3s 更主流的了。
場景一:邊緣運算(工廠、零售、電信)
一條產線上有 30 台 PLC、5 台視覺檢測相機、2 台邊緣 AI 推論伺服器。它們不能等資料傳回雲端再處理,網路斷掉也不能停線。傳統做法是每台機器自己跑各自的 service,沒有編排、沒有自動恢復、沒有統一管理。K3s 的角色是把整條產線變成一個小型叢集,掛掉的容器自動重啟、設定變更可以從中央 GitOps 推下來。
零售業也類似。一家便利商店有 POS、監控、會員系統、廣告播放——這些東西如果都是獨立 Docker container 各跑各的,店長根本管不了。把它們收進 K3s,加上 Rancher 中央管理,總部能看見每家店的容器狀態、批次升級、故障告警。
場景二:IoT 裝置與 Raspberry Pi 叢集
這是 K3s 最有名的場景。一個典型例子:某個農業監控系統用 Raspberry Pi 4(2GB RAM)跑 K3s,管理一整片田裡的土壤感測器和氣象站。網路不穩、電力不穩,但只要 Pi 不死,叢集自己會處理服務的重啟和路由。
Homelab 玩家也吃這套。Hacker News 上的自架基礎設施討論串 裡有很多人分享用 3-5 顆 Pi 組叢集,跑 Pi-hole、Home Assistant、Plex、自家的程式。一台壞掉就讓另一台接手,這種小規模 HA 用 docker-compose 寫不出來,用 K3s 一個 manifest 搞定。
場景三:CI/CD pipeline 的暫時性測試環境
每次 PR 進來,CI 啟動一個 K3s 叢集、把整套服務跑起來、跑完整合測試、銷毀叢集——整個過程不到兩分鐘。標準 K8s 啟動時間夠你泡杯咖啡,K3s 30 秒就能讓你開始跑測試。
這在 GitHub Actions、GitLab Runner、Jenkins 上都很常見的模式。如果你還在用 Docker Compose 寫整合測試,可以參考 CI/CD 是什麼?自動化部署完整指南 了解 CI/CD pipeline 的全貌,再考慮要不要把測試環境升級成 K3s。
場景四:本地開發環境,學 Kubernetes 用
第一次學 K8s 的工程師最怕的就是「裝環境裝到爆炸」。Minikube 啟動慢、Kind 跟生產環境差太多、Docker Desktop 內建的 K8s 又重又吃資源。K3s 給你一個「跟生產一樣是 single-process Kubernetes、但啟動快、資源吃得少」的甜蜜點。
筆電開發、寫個 deployment.yaml 直接 apply、打 service、配 ingress——K3s 內建的 Traefik 會幫你把 .local 的網域都接好。這個體驗對學習者來說很關鍵:你不會卡在「怎麼讓我的 service 對外」這種環境問題,可以直接學 K8s 本身。
使用情境 | 為什麼選 K3s | 典型硬體配置 |
|---|---|---|
工廠 / 零售邊緣 | 低資源、能離線運作、中央管理 | x86 邊緣盒子 4GB RAM |
IoT / Homelab | ARM 支援、單一 binary、簡單 | Raspberry Pi 4 / Jetson Nano |
CI/CD 測試環境 | 啟動快、用完即丟、貼近生產 | CI runner pod 1-2GB RAM |
開發學習用 | 貼近真實 K8s、不吃筆電效能 | 筆電本機 2GB RAM 分配 |
中小企業內部系統 | 一套 Kubernetes 叢集就夠用,不用養 DevOps 團隊 | 3 節點小型叢集 8GB RAM 各 |
K3s 安裝實戰:從零到第一個 Pod

理論講夠了,動手裝一次最有感。K3s 的安裝指令真的就是一行——這在 Kubernetes 世界裡是奇蹟。
Server 節點安裝(控制平面)
找一台 Linux 機器(任何發行版,Ubuntu / Debian / CentOS / openSUSE 都行),執行:
curl -sfL https://get.k3s.io | sh -這條指令會下載 K3s binary、安裝成 systemd service、自動啟動。執行完之後,你的 K8s 控制平面已經跑起來了。驗證一下:
sudo k3s kubectl get nodes
sudo k3s kubectl get pods -A應該會看到一個 Ready 狀態的 node,加上 kube-system namespace 裡面 coredns、traefik、metrics-server、local-path-provisioner 等一堆 Pod 已經在跑——這些是 K3s 預設幫你裝好的。
Agent 節點加入(多節點時才需要)
如果你要加更多節點變成多節點叢集,先在 server 拿到 token:
sudo cat /var/lib/rancher/k3s/server/node-token然後在 agent 機器上執行(替換 SERVER_IP 和 TOKEN):
curl -sfL https://get.k3s.io | K3S_URL=https://SERVER_IP:6443 K3S_TOKEN=TOKEN sh -回 server 端 kubectl get nodes 應該就能看到 agent 加進來了。
🚨防火牆是新手最常踩的雷
K3s API server 監聽在 6443 port、Flannel VXLAN 用 8472/UDP、kubelet 用 10250。如果 agent 加不進來、或者 agent 加進來但 Pod 跨節點通訊掛掉,第一個檢查的就是防火牆。雲端 VM 記得開 security group,自架機器記得改 ufw / firewalld 規則。
跑你的第一個 deployment
確認叢集 OK 之後,跑一個經典的 nginx 試試:
sudo k3s kubectl create deployment nginx --image=nginx
sudo k3s kubectl expose deployment nginx --port=80 --type=LoadBalancer
sudo k3s kubectl get svc nginx注意 service type 我們選了 LoadBalancer。在標準 K8s 裡,這需要雲端 LB 配合才會拿到 external IP;但 K3s 內建的 ServiceLB(Klipper)會直接拿節點的 host port 出來給你,所以你會立刻看到 external IP——這就是 K3s 開箱即用的一個小驚喜。
K3s 預設內建了什麼?開箱即用的元件
K3s 的另一個亮點是「裝完就有」的元件。標準 K8s 裝完之後你還要自己挑 ingress controller、挑 storage provisioner、挑 LB——K3s 都幫你選好了。
元件 | 用途 | 可不可以替換 |
|---|---|---|
Traefik | Ingress controller,HTTP/HTTPS 反向代理 | 可(用 --disable=traefik 移除後自裝 nginx-ingress 或 envoy) |
ServiceLB(Klipper) | Service type=LoadBalancer 的 LB 實作 | 可(換成 MetalLB 等) |
Helm Controller | 用 HelmChart CRD 管理 Helm 套件 | 可,但通常不需要 |
CoreDNS | 叢集內 DNS 解析 | 理論上可換,實務上沒人換 |
local-path-provisioner | PVC 自動分配本機儲存 | 可(搭 Longhorn / Rook 等做 HA storage) |
metrics-server | 給 kubectl top 和 HPA 用的指標來源 | 可,通常不換 |
containerd | Container runtime | 可(K3s 1.20+ 之前可選 Docker,新版只支援 containerd) |
有些人會抱怨「這些元件都是 K3s 自己選的、沒得改」——其實不是,每個都可以在安裝時用 --disable 旗標關掉,然後自己裝想要的。但說真的,預設組合對 80% 的場景都夠用。除非你有很明確的需求(例如要用 cert-manager + nginx-ingress 的組合),不然動它的 ROI 不高。
關於 ServiceLB 與 MetalLB 衝突
如果你打算在 K3s 上裝 MetalLB(更專業的 LB 方案),記得先用 --disable=servicelb 把 Klipper 關掉。兩個 LB 同時運作會搶 ARP / IP,造成 routing 一直 flap,是 K3s GitHub issues 上的常客。
什麼情況不該用 K3s?真實限制
K3s 很香,但不是萬靈丹。下面這些場景,你應該選標準 K8s 或其他方案。
超過 50-100 節點的大型叢集
K3s 官方有給過參考數字:3 個 server 節點(每個 4 vCPU / 8GB RAM)的 HA 配置可以撐到約 1200 個 agent。聽起來很多,但這已經是極限。k3s GitHub discussions 上對節點上限的討論 中,社群實務經驗是 50-100 節點以內最舒服,再上去 etcd 跟 SQLite 都會開始吃力。如果你要跑 500+ 節點的大型叢集,老實選標準 K8s + 外接 etcd cluster 比較實在。
需要深度雲端整合(cloud-controller-manager 內建功能)
K3s 把 in-tree cloud provider 全部砍掉了。如果你要用 AWS ELB / GCP Load Balancer / Azure Disk 這些雲端原生資源,需要自己另外裝 out-of-tree cloud-controller-manager。在大型 EKS / GKE 場景,K3s 的優勢就消失了——你已經不缺資源、也已經有雲廠管控制平面,何苦再用輕量版?
依賴 alpha API 或非主流 CRD 的特殊場景
K3s 為了保持穩定性,會比標準 K8s 慢一點才支援新功能,alpha API 也經常被預設關閉。如果你的應用依賴某個剛出爐的 alpha 功能,要先確認 K3s 版本有沒有支援。
純 Windows 容器負載
K3s 設計給 Linux node 跑 Linux container,沒打算支援 Windows worker。如果你需要在 K8s 上跑 .NET Framework 老應用,要找其他方案。
⚠️「我用 K3s 但叢集很大」這句話通常是錯的決定
K3s 的設計目標就是輕量場景。當你發現自己在維護一個 200 節點的 K3s 叢集、每天解 etcd I/O 警報、效能調校到天荒地老——那就是訊號:你選錯工具了。轉去標準 K8s + 託管雲端控制平面(EKS / GKE / AKS)會省很多事。
學完之後:你的下一步
讀到這裡,你應該對 K3s 有了清楚的輪廓——它是什麼、為什麼存在、怎麼跑起來、什麼時候用、什麼時候不用。如果只是「想知道 K3s 是什麼」,到這裡就可以收工了。
但如果你正在做技術選型——「我們公司到底該選 K3s 還是 K8s?」——那這篇還不夠。架構深度比較、效能 benchmark、生產環境真實取捨、決策框架,這些會在系列下一篇 K3s vs K8s 完整比較:架構、效能、適用場景一次說清楚 完整討論。
如果你還沒走過容器化這一關,先把 Docker 是什麼?為什麼工程師愛用容器化 補上,再來看 K8s 系列會輕鬆很多。如果你想直接把應用跑起來、不想自己維護叢集,可以參考 Zeabur 部署平台評價——某種程度上,PaaS 平台幫你把 K8s 都包掉了。
K3s 常見問題
QK3s 真的可以跑 production 嗎?還是只能玩玩?
可以。K3s 是 CNCF 認證的 Kubernetes 發行版,SUSE 也提供商業支援。實務上有大量企業在 production 用 K3s 跑邊緣、IoT、小型內部系統。重點是場景要對——50 節點以內、不需要重度雲端整合的場景,K3s 在 production 沒有問題。
QK3s 跟 MicroK8s、k0s、Kind、Minikube 比起來怎麼選?
K3s 適合 production 邊緣 / IoT / 小型叢集;MicroK8s 是 Canonical 的版本,跟 Snap 整合得深;k0s 是 Mirantis 的競爭品,模組化設計;Kind 和 Minikube 主要是本機開發 / CI 測試用,不適合 production。如果你不確定,從 K3s 開始試最不會錯。
QK3s 的 SQLite 資料會不會掉?需要備份嗎?
需要。SQLite 檔案在 /var/lib/rancher/k3s/server/db/ 底下,掛掉就整個叢集狀態消失。生產環境一定要定期 snapshot 這個目錄、或者直接切換到 embedded etcd(K3s 內建 snapshot 機制)/ 外接 PostgreSQL。
Q我已經會 K8s 了,學 K3s 還要重新學嗎?
不用。K3s 是 100% 相容的 Kubernetes API,你寫的 YAML、kubectl 指令、Helm chart 全部直接通用。差別只在叢集本身的部署 / 管理方式,那部分一個下午就摸熟了。
QK3s 可以跟 Rancher Manager 一起用嗎?
可以,而且是官方推薦組合。Rancher Manager 用來中央管理多個 K3s 叢集(每個門市、每家工廠各一個)。Rancher Manager 本身也建議跑在 K3s 上,避免 chicken-and-egg 問題。
QK3s 升級會不會很痛?
升級是 K3s 比標準 K8s 友善的點之一。可以用 system-upgrade-controller 自動化滾動升級,或者就是換顆 binary 重啟 service。重點是先在測試環境跑過一輪、備份 SQLite/etcd,然後一個節點一個節點升。
把 K3s 用在你的場景上
K3s 真正的價值,在於「讓更多場景用得起 Kubernetes」——「比 K8s 輕」只是達成這個價值的手段。如果你的工廠想做邊緣推論、零售門市要中央管理、開發團隊想要更貼近生產的測試環境,K3s 都是值得認真評估的選項。
如果你正在規劃內部系統、邊緣部署架構,或想找人幫忙評估「我們到底該不該上 Kubernetes」,可以聊聊我們的 AI 與系統開發顧問服務。從技術選型到實際落地,我們協助過不少中小企業跨過這一關,知道哪些坑該繞、哪些工具該選。
讀完這篇,你已經知道 K3s 是什麼、長什麼樣、適合什麼。下一步建議直接讀系列第二篇 K3s vs K8s 完整比較,把選型問題一次釐清。
AUTHOR
自由揚AntonyLin
想了解更多?看看我們的相關服務
相關文章

Google Apps Script 中小企業實戰指南:6 個業務自動化場景與 4 條從 Excel/Sheet 升級路徑

現成 ERP / 套裝 SaaS 為什麼總是不符需求?中小企業老闆完整決策框架——5 個根因、7 維度判斷表、4 階段評估流程

客製化影視器材 / 攝影 / 活動設備出租排程管理系統開發完整指南:6 個關鍵決策、3 個報價區間(35-180 萬)、5 個常見地雷

客製化系統「源碼託管」(Source Code Escrow) 完整指南:4 種託管模式、5 條合約紅線、3 個觸發釋出條件——中小企業老闆給外包工程廠商開發前必須先簽掉的最後一道保險

客製化系統「合約撤退條款」完整指南:6 種退場機制、4 條觸發紅線、3 個資料返還框架 — 老闆簽 200 萬軟體開發合約前必看的最後一道保險

留言(0)
尚無留言,成為第一個留言的人吧!