K3S搭建

K3S搭建
iamxunK3s介绍
简介
K3s 是轻量级的 Kubernetes。K3s 易于安装,仅需要 Kubernetes 内存的一半,所有组件都在一个小于 100 MB 的二进制文件中。
它适用于
- Edge
- IoT
- CI
- Development
- ARM
- 嵌入 K8s
- 不去学习那么多的 Kubernetes 高深知识也能上手使用
什么是 K3s
K3s 是一个完全兼容的 Kubernetes 发行版,具有以下增强功能:
- 打包为单个二进制文件。
- 使用基于 sqlite3 作为默认存储机制的轻量级存储后端。同时支持使用 etcd3、MySQL 和 Postgres。
- 封装在简单的启动程序中,可以处理很多复杂的 TLS 和选项。
- 默认情况下是安全的,对轻量级环境有合理的默认值。
- 添加了简单但强大的 batteries-included 功能,例如:
- 本地存储提供程序
- service load balancer
- Helm controller
- Traefik ingress controller
- 所有 Kubernetes control plane 组件的操作都封装在单个二进制文件和进程中。因此,K3s 支持自动化和管理复杂的集群操作(例如证书分发等)。
- 最大程度减轻了外部依赖性,K3s 仅需要现代内核和 cgroup 挂载。K3s
打包了所需的依赖,包括:
- containerd
- Flannel (CNI)
- CoreDNS
- Traefik (Ingress)
- Klipper-lb (Service LB)
- 嵌入式网络策略控制器
- 嵌入式 local-path-provisioner
- 主机实用程序(iptables、socat 等)
为什么叫 K3s
我们希望安装的 Kubernetes 只占用一半的内存。Kubernetes 是一个 10 个字母的单词,简写为 K8s。Kubernetes 的一半就是一个 5 个字母的单词,因此简写为 K3s。K3s 没有全称,也没有官方的发音。
K3s 工具介绍
K3s 有以下增强功能:
打包为单个二进制文件
- 把 K8S 相关的组件,比如 kube-api/ kube-manager 都打包到同一个二进制文件里面,这样的话,只需要启动这个文件就可以快速的启动对应的组件。
使用基于 sqlite3 的默认存储机制
- 同时支持使用 etcd3、MySQL 和 PostgreSQL 作为存储机制。
默认情况下是安全的
- 在 K3s 中有一个默认的证书管理机制(默认一年有效期),也有一个可以轮转证书的功能(就是在小于九十天之内重启 K3s 的话,就会自动续一年)。
功能强大的 batteries-included 功能
- 就是虽然有些服务本身这个二进制文件并没有提供,但是可以通过内置的服务,将配置文件放到指定的目录下面,就可以在启动的时候一并将该服务启动或替换默认组件。
所有 K8S control-plane 组件都封装在单个二进制文件和进程中
- 因为封装在二进制文件中,所以启动的时候只有一个进程。好处在于只需要管理这个单一进程就可以了,同时也具备操作复杂集群的能力。
最大程度减轻了外部依赖性
- 即稍新一点的 Linux 内核就可以了(需要 kernel 和 cgroup 挂载)。 之所以叫做 K3S 是因为希望安装的 K8S 在内存占用方面只是一半的大小,而一半大的东西就是一个 5 个字母的单词,简写为 K3S。
生命周期
- 同时支持 3 个 K8s 版本,支持的生命周期与 K8s 相同
- 可以参考: Kubernetes 版本及版本偏差支持策略 进行学习
更新周期
- 当 K8s 更新新版本后,一般 K3s 在一周内同步更新
- 可以通过 这个链接 获取 latest/stable/testing 版本
- 我们默认安装的是 stable 版本,可以运行通过命令进行查看
命名规范
- v1.29.5+k3s1: v1.29.5 为 K8s 版本,k3s1 为补丁版本
K3s 快速入门
原理就是,将 K8S 的相关组件封装到 K3S 的二进制文件中去,然后启动这二进制文件就可以启动一个成熟的 K8S 集群。 我们可以看到 K3S 和 K8S 的架构基本差不多,其中 k3s-server 对应这个 control-plane,而 k3s-agent 对应着 node 节点。
可以看到 k3s 中使用的默认存储是 SQLite(自带),且默认的网络使用的是 Flannel(自带)。 当服务端和客户端都启动之后,通过 Tunnel-Proxy 这个组件进行通信,通过这个通道去管理网络流量。 在 agent 节点中,通过 kubelet 操作 contaninerd 来创建对应 Pod。
- K3s 架构
- K8s 架构
国内的话,建议使用官方提供的 镜像地址,这样不但可以加速本地 K3s 的时候,而且方便部署和更新服务。 这也是为什么建议国内使用 k3s-install.sh 部署服务的原因,因为其内部使用的地址都是从国内去获取的。
K3s 安装
软件环境
软件 | 版本 |
---|---|
操作系统 | Ubuntu 11.4.0-1ubuntu1~22.04 |
K3s | v1.29.5+k3s1 |
服务器角色
角色 | IP |
---|---|
home-host | 192.168.31.20 |
home-node | 192.168.31.30 |
配置说明
参数名 | 描述 |
---|---|
INSTALL_K3S_VERSION | 指定下载 K3s 的版本 |
INSTALL_K3S_SKIP_START | 将不会启动 K3s 服务 |
INSTALL_K3S_NAME | systemd 服务名称 |
K3S_NODE_NAME | 节点名称,不启用默认获取主机名 |
INSTALL_K3S_EXEC | 用于在服务中启动 K3s 的后续子命令 |
master部署
1 | export INSTALL_K3S_VERSION=v1.29.5+k3s1 |
node部署
1 | export INSTALL_K3S_VERSION=v1.29.5+k3s1 |