Skip to content

K3s

为什么使用K3s

K3s 是一个轻量级的、完全兼容的 Kubernetes 发行版本。非常适合初学者。

K3s将所有 Kubernetes 控制平面组件都封装在单个二进制文件和进程中,文件大小<100M,占用资源更小,且包含了kubernetes运行所需要的部分外部依赖和本地存储提供程序。

K3s提供了离线安装包,安装起来非常方便,可以避免安装过程中遇到各种网络资源访问问题。

K3s特别适用于边缘计算、物联网、嵌入式和ARM移动端场景。

K3s完全兼容kubernetes,二者的操作是一样的。

官方网站:K3s

官方文档:K3s - 轻量级 Kubernetes | K3s

GitHub:k3s-io/k3s:轻量级 Kubernetes (github.com)

集群搭建

K3s集群分为k3s Server(控制平面)和k3s Agent(工作节点)。所有的组件都打包在单个二进制文件中。

An image

必要条件

  • 两个节点不能具有相同的主机名。
  • K3s Server 需要 6443 端口才能被所有节点访问。

系统要求

Spec最低推荐
CPU1 核2 核
RAM512MB1 GB

运行环境

主机名IP地址K3S版本操作系统
k8s-master192.168.56.109v1.28.4+k3s2Debian12
k8s-worker1192.168.56.111v1.28.4+k3s2Debian12
k8s-worker2192.168.56.112v1.28.4+k3s2Debian12

环境搭建

脚本安装

K3s 提供了一个安装脚本,可以方便地将其作为服务安装在基于 systemd 或 openrc 的系统上。该脚本可在 https://get.k3s.io 获得。

sh
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

运行此安装后:

  • K3s 服务将被配置为在节点重启后或进程崩溃或被杀死时自动重启。
  • 将安装其他实用程序,包括 kubectlcrictlctrk3s-killall.shk3s-uninstall.sh
  • kubeconfig 文件将写入到 /etc/rancher/k3s/k3s.yaml,由 K3s 安装的 kubectl 将自动使用该文件。

离线安装

下载安装包

执行安装脚本

k3s二进制文件移动到/usr/local/bin目录,并添加执行权限

sh
mv ./k3s /usr/local/bin
chmod +x /usr/local/bin/k3s

将镜像移动到/var/lib/rancher/k3s/agent/images/目录(无需解压)

sh
mkdir -p /var/lib/rancher/k3s/agent/images/
cp ./k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/

k8s-master节点执行:

sh
#修改权限
chmod +x install.sh

#离线安装
INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh

#安装完成后,查看节点状态
kubectl get node

#查看token
cat /var/lib/rancher/k3s/server/node-token
#K10029d7b64178f74561612bd741e95506371a73a2b55e011c22c92b164aa673a8a::server:9b09060f34e6475cc98f9f96f3d7c0b5

k8s-worker1k8s-worker2节点执行

sh
INSTALL_K3S_SKIP_DOWNLOAD=true \
K3S_URL=https://192.168.31.120:6443 \
K3S_TOKEN=K10029d7b64178f74561612bd741e95506371a73a2b55e011c22c92b164aa673a8a::server:9b09060f34e6475cc98f9f96f3d7c0b5 \
./install.sh

测试运行

sh
# 查看节点信息
kubectl get node
# resp
NAME     STATUS   ROLES                  AGE     VERSION
master   Ready    control-plane,master   2m32s   v1.28.4+k3s2
node1    Ready    <none>                 37s     v1.28.4+k3s2
node2    Ready    <none>                 26s     v1.28.4+k3s2