K3s 是一個完全兼容的輕量級Kubernetes 發行版,具有以下增強功能:
- 打包為單個二進制文件。
- 基於 sqlite3 作為默認存儲機制的輕量級存儲后端。etcd3、MySQL、Postgres 也仍然可用。
- 包裹在簡單的啟動器中,可以處理很多復雜的 TLS 和選項。
- 默認情況下使用輕量級環境的合理默認值進行保護。
- 添加了簡單但強大的“內置電池”功能,例如:本地存儲提供程序、服務負載均衡器、Helm 控制器和 Traefik 入口控制器。
- 所有 Kubernetes 控制平面組件的操作都封裝在單個二進制文件和進程中。這允許 K3s 自動化和管理復雜的集群操作,例如分發證書。
- 外部依賴被最小化(只需要一個現代內核和 cgroup 掛載)。K3s 包所需的依賴項,包括:
-
- containerd
- Flannel
- coreDNS
- CNI
- 主機實用程序(iptables、socat 等)
- ingress controller(traefik)
- 嵌入式服務負載均衡器
- 嵌入式網絡策略控制器
為什么使用k3s?
1、K3s 是一種高度可用、經過認證的 Kubernetes 發行版,專為無人值守、資源受限、遠程位置或物聯網設備內部的生產工作負載而設計。
2、K3s 打包為一個 <40MB 的二進制文件,可減少安裝、運行和自動更新生產 Kubernetes 集群所需的依賴項和步驟。
3、ARM64 和 ARMv7 都支持二進制文件和多架構映像。從 Raspberry Pi 到 AWS a1.4xlarge 32GiB 服務器,K3s 都能很好地工作。(支持 x86_64、ARMv7 和 ARM64)
一、架構
- server節點被定義為運行k3s server命令的機器(裸機或虛擬)。
- agent節點被定義為運行k3s agent命令的機器。
架構圖:
1)單服務集群
2)高可用集群
代理節點注冊工作原理:
1、k3s agent向server端發起websocket注冊連接。並將隨機生成的節點密碼發送給server端。(/etc/rancher/node/password)
2、server端將密碼存儲為kubernetes secrets,命名空間為kube-system,名字<host>.node-password.k3s
二、資源分析
1、網絡
K3s 服務器需要端口 6443 才能被所有節點訪問。
k3s 節點入站規則:
協議
|
港口
|
來源
|
描述
|
---|---|---|---|
協議
|
港口
|
來源
|
描述
|
TCP | 6443 | K3s 代理節點 | Kubernetes API 服務器 |
UDP | 8472 | K3s 服務器和代理節點 | 僅 Flannel VXLAN 需要 |
TCP | 10250 | K3s 服務器和代理節點 | Kubelet 指標 |
TCP | 2379-2380 | K3s服務器節點 | 僅對於具有嵌入式 etcd 的 HA 需要 |
2、CPU和內存
1)硬件要求根據您的部署規模進行擴展。此處概述了最低建議。
- RAM:最低 512MB(我們建議至少 1GB)
- CPU:1 最低
2)以下是高可用 K3s 服務器中節點的最低 CPU 和內存要求
部署規模
|
節點
|
虛擬處理器
|
內存
|
---|---|---|---|
小的 | 高達10 | 2 | 4GB |
中等的 | 最多 100 | 4 | 8 GB |
大的 | 高達 250 | 8 | 16 GB |
超大 | 高達 500 | 16 | 32GB |
XX-大 | 500+ | 32 | 64GB |