k3s 简介
k3s 是 Rancher 推出的轻量级 k8s。k3s 本身包含了 k8s 的源码,所以本质上和 k8s 没有区别。但为了降低资源占用,k3s 和 k8s 还是有一些区别的,主要是:
- 使用了相比 Docker 更轻量的 containerd 作为容器运行时(Docker 并不是唯一的容器选择)
- 去掉了 k8s 的 Legacy, alpha, non-default features
- 用 sqlite3 作为默认的存储,而不是 etcd
- 其他的一些优化,最终 k3s 只是一个 binary 文件,非常易于部署
所以 k3s 适用于边缘计算,IoT 等资源紧张的场景。同时 k3s 也是非常容易部署的,官网上提供了一键部署的脚本。
下载可执行k3s 安装脚本、二进制文件 和 镜像
mkdir k3s-install
cd k3s-install
curl -sfL https://get.k3s.io > install.sh
chmod +x ./install.sh
wget https://github.com/rancher/k3s/releases/download/${k3s.version}/k3s
wget https://github.com/rancher/k3s/releases/download/${k3s.version}/k3s-airgap-images-amd64.tar
安装k3s主服务器
cp ./k3s /usr/local/bin/
chmod +x /usr/local/bin/k3s
mkdir -p /var/lib/rancher/k3s/agent/images/
cp ./k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
INSTALL_K3S_SKIP_START=true INSTALL_K3S_EXEC="--docker" INSTALL_K3S_BIN_DIR="/usr/local/bin" INSTALL_K3S_SKIP_DOWNLOAD=true sh install.sh
ln -s /usr/local/bin/k3s /usr/bin/k3s
systemctl enable k3s
systemctl start k3s
修改配置文件 /etc/systemd/system/k3s.service 将其中的ExecStart修改为使用docker
ExecStart=/usr/local/bin/k3s server --docker
运行命令,查看状态
kubectl get node
NAME STATUS ROLES AGE VERSION
hostname Ready master 110s v1.14.5-k3s.1
安装agent
cp ./k3s /usr/local/bin/
chmod +x /usr/local/bin/k3s
mkdir -p /var/lib/rancher/k3s/agent/images/
cp ./k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
INSTALL_K3S_SKIP_START=true INSTALL_K3S_EXEC="--docker" INSTALL_K3S_BIN_DIR="/usr/local/bin" INSTALL_K3S_SKIP_DOWNLOAD=true K3S_TOKEN=XXXXX K3S_URL=https://XXXXX:6443 sh install.sh
ln -s /usr/local/bin/k3s /usr/bin/k3s
systemctl enable k3s-agent
systemctl start k3s-agent
token需要从主服务器的 /var/lib/rancher/k3s/server/node-token 获取
安装控制台
创建目录 /data/k3s/rancher-server/var/lib/rancher
docker run -d -v /data/k3s/rancher-server/var/lib/rancher/:/var/lib/rancher/ --restart=unless-stopped --name rancher-server -p 38080:80 -p 38443:443 rancher/rancher:stable