K8S系列文章之 [使用 Alpine 搭建 k3s]
- 官方文档:K3s - 轻量级 Kubernetes | K3s
官方描述,可运行在 systemd 或者 openrc 环境上,那就往精简方向走,使用 alpine 做系统。与 RHEL、Debian 的区别,主要在防火墙侧;其他基础配置需求类似,脚本指令一致。
-
下载安装包【离线安装】:Releases · k3s-io/k3s (github.com) 国内源清华源 k3s
- k3s
- k3s-airgap-images-amd64.tar.gz
-
拉取官方安装脚本
curl -o install.sh https://get.k3s.io
准备基础环境 ,集群环境,需要克隆多台设备。
-
修改主机名,配置 hosts 文件
# 修改主机名,每个节点不同 echo "master01" > /etc/hostname # 配置静态解析,所有节点相同 cat >> /etc/hosts <<EOF 172.16.60.101 master01 172.16.60.102 master02 172.16.60.103 master03 172.16.60.111 worker01 172.16.60.112 worker02 EOF
-
【重要】引导配置,因为 alpine 自身引导与其他发行版不同,以下为独有配置。
-
编辑配置文件夹
/etc/update-extlinux.conf
末尾添加default_kernel_opts="... cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory"
-
更新配置并重启
update-extlinux reboot
-
安装搭建
单节点部署,all in one
-
下发应用,将 k3s、k3s镜像包、安装脚本下发到各台设备。
-
安装 k3s 应用
# 部署应用,会自动添加可执行权限 install k3s /usr/local/bin/k3s
-
镜像加载
mkdir -p /var/lib/rancher/k3s/agent/images cp k3s-airgap-images-amd64.tar.gz /var/lib/rancher/k3s/agent/images/
-
离线安装
# 脚本权限配置 chmod +x install.sh # 使用离线安装包,默认初始化,使用的是 sqlite INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh
-
根据官方文档,附加参数初始化,对定制友好server | K3s;
--node-ip
指定本机IP,同理可绑定其他控制节点或者工作节点IP# 指定网段,并使用 etcd 初始化 INSTALL_K3S_SKIP_DOWNLOAD=true \ sh install.sh server \ --node-ip 172.16.60.101 \ --cluster-init
-
-
检查
# 检查镜像 crictl images # 查看 pod kubectl get pods -A
加入工作节点
-
server 节点查看生成的 token
/var/lib/rancher/k3s/server/node-token
-
将离线应用上传到工作节点,k3s、k3s镜像、k3s脚本
-
工作节点加入,token 即上面获取的这个
# 脚本赋权 chmod +x install.sh # 执行节点加入,节点标识 agent INSTALL_K3S_SKIP_DOWNLOAD=true \ K3S_URL=https://172.16.60.101:6443 \ K3S_TOKEN=K1041f78ac262a8437b79db9557132330054c977edd98e662e9963574f1d8d6b751::server:e439183f4e6296937662f108f7b3363f \ ./install.sh agent
-
检查
# 查看服务,工作节点 rc-service k3s-agent status # 查看运行状态,服务节点 kubectl get nodes
扩容控制节点
-
如果是快速初始化,使用的是 sqlite ,需要转换为 etcd
# 停止服务 rc-service k3s stop # 使用 --cluster-init 转换 INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh --cluster-init
-
master02 启动服务,节点标识 server
INSTALL_K3S_SKIP_DOWNLOAD=true \ K3S_URL=https://172.16.60.101:6443 \ K3S_TOKEN=K1041f78ac262a8437b79db9557132330054c977edd98e662e9963574f1d8d6b751::server:e439183f4e6296937662f108f7b3363f \ ./install.sh server
-
master03 启动服务
INSTALL_K3S_SKIP_DOWNLOAD=true \ K3S_URL=https://172.16.60.101:6443 \ K3S_TOKEN=K1041f78ac262a8437b79db9557132330054c977edd98e662e9963574f1d8d6b751::server:e439183f4e6296937662f108f7b3363f \ ./install.sh server
-
检查状态,在 master01 操作
kubectl get nodes
-
在所有节点均能执行 kubectl 命令,只需将 master01 的config文件分发到其他节点
# master 节点 cp /etc/rancher/k3s/k3s.yaml ~/.kube/config # 将 config 配置分发给其他节点 scp ~/.kube/config root@master02:~/.kube/ scp ~/.kube/config root@worker01:~/.kube/