k3s介绍
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 |