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
posted @ 2021-08-24 09:29  Lenwen  阅读(4955)  评论(0编辑  收藏  举报