概述
之前 在树莓派集群上部署了 k8s,发现运行 control-panel 的节点在没有任何任务的情况下,负载也经常到 9-13,已经无法正常 SSH 登录,所以决定使用 k3s 来部署 kubernetes 集群。
k3s 是轻量级的 Kubernetes,当前版本:v1.26.5+k3s1 (7cefebea)
。
系统架构
整体架构使用 带有嵌入式数据库的单服务器 形式。
部署准备
网络拓扑
使用 家中闲置树莓派 4B 和零刻 EQ12 来搭建整个集群。
hostname | role |
---|---|
EQ12 | server |
rb1 | agent |
rb2 | agent |
rb3 | agent |
软件支持
vxlan
k3s 默认使用 Flannel VXLAN 管理集群网络,从 Ubuntu 21.10 开始,对 Raspberry Pi 的 vxlan 支持已移至单独的内核模块中。
sudo apt update &&
sudo apt upgrade -y &&
sudo apt install -y linux-modules-extra-raspi
部署
安装 server
参考 快速入门指南 进行部署。
使用 配置文件 控制安装:
- 任何账户执行官方脚本安装的 kubectl 默认的 kubeconfig 都是
/etc/rancher/k3s/k3s.yaml
,而不是~/.kube/config
,所以这里最好设置write-kubeconfig-mode: 644
。 - 由于 traefik 在处理 HTTPS backend service 方面不方便,使用 nginx-ingress 替代。
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
通过 /usr/local/bin/k3s-uninstall.sh
来执行卸载。
设置 kubeconfig
为当前用户设置 kubeconfig,这个配置虽然不会被 k3s 安装的 kubectl 用到,但是下面的 helm 会用到。
mkdir -p $HOME/.kube
sudo cp -i /etc/rancher/k3s/k3s.yaml $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
安装 helm
部署 ingress-nginx
设置代理
nginx-ingress 启动的 pods 需要从国内无法访问的 registry.k8s.io
拉取镜像,给 containerd 临时配置 配置 HTTP 代理 可以解决该问题。
# cat /etc/systemd/system/k3s.service.env
CONTAINERD_HTTP_PROXY=http://clash:7890
CONTAINERD_HTTPS_PROXY=http://clash:7890
CONTAINERD_NO_PROXY=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
重新启动 k3s 服务:
sudo systemctl restart k3s
安装 ingress-nginx
按照 官方文档 安装,这里我们选择使用 helm 安装。
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
确认部署结果:
删除代理
如果之前给 containerd 安装了代理,最好删掉,避免影响服务。
sudo rm /etc/systemd/system/k3s.service.env
sudo systemctl restart k3s
注意事项
- rootless 模式运行 server 比较复杂,不建议使用。
运行状态
确认 k3s 服务运行状态 systemctl status k3s
查看 k3s 服务启动日志 journalctl -u k3s
,下面的日志中列出了一些需要关注的信息,比如:
- apiserver/scheduler/controller-manager 启动选项 (L11-L17)
- server node token 的位置 (L19)
- server node 与 agent node 加入的方法 (L20-L22)
- kubeconfig 位置 (L23)
- PodCIDRs 范围 (L48)
部署 agent
按照 快速入门指南 进行部署。
安装依赖
sudo apt install -y linux-modules-extra-raspi
查找 agent-token:
sudo cat /var/lib/rancher/k3s/server/agent-token
加入集群
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://192.168.122.11:6443 K3S_TOKEN=xxxxxx sh -
Next
- kubernetes-dashboard 管理集群。默认情况下 k3s 不会部署 Dashboard,可以安装来管理集群。
- 如何使用 longhorn 构建分布式存储,通过 longhorn 将磁盘资源进行整合。
评论