叠甲
这是一个折腾派程序员的记录,以下配置建立 k3s 集群并不是必须的
just for fun、好奇心、探索欲、练习。
大部分过程都是昨晚ai实现的,中午复盘了一下,因此产出本笔记。
背景
手里有一些小鸡:
-
华为云
-
北方某区 3 台 ubuntu24 2c2g 2Mbps 100g/月
-
西南某区 1 台 ubuntu24 2c2g 2Mbps 100g/月
-
-
阿里云
- 南方某城 1 台 ubuntu24 2c2g 3Mbps 按固定带宽计费,理论上每个月出流量最多 972g。
-
腾讯云
- 海外 1 台 ubuntu24 2c2g 30Mbps 1024g/月
-
racknerd
- us 1 台 ubuntu24 1c1g 1gMbps 2t/月
这些小鸡主要部署了自用 ai 应用、自用 api 站,服务零散分布在各个服务器上,感到不太方便,需要一个整合方案。
看到有佬友给出过实践:
技术栈解释
查询相关资料
-
tailscale 做跨区域组网
-
k3s 作为轻量级 k8s 提供集群能力
-
k9s 作为 tui 简化
kubectl命令操作 -
prometheus 做监控+grafana 做数据可视化
以此为目标,可以简单搭建好一个自己的 k3s 集群。
过程
ssh 准备
现有机子登录方式不一,有的密码、有的密钥,先统一成:
-
新建非 root 用户,有 sudo 权限
-
禁止密码登录,使用密钥登录
-
禁止 root 登录
编写servers.yaml文件,记录所有服务器信息,ip、别名、用户、端口等等。
编写脚本对servers.yaml做解析,完成 ssh 准备,方便后续操作。
顺便把云平台的控制台都开好,方便后续更改安全组规则。
安全检查
在此之前,我的机子都很零散,很少检查安全问题,在组网之前,考虑可能存在以下问题:
-
是否 ssh 被攻破
-
是否存在可疑用户
-
是否存在可疑进程
-
是否存在可疑网络连接
-
是否存在可疑文件系统
-
是否存在可疑文件
-
是否存在可疑定时任务
使用Lynis进行安全检查。编写脚本执行。
加固
通过安全检查,使自己对机子情况心里有个数,根据具体情况进行加固。
最底线方案:更改 ssh 端口、缩小安全组放行范围 + 之前的禁止登录规则
比较麻烦的地方:
在各个云平台里面新建或者编辑现有安全组,racknerd 这种没有安全组的则手动调整 ufw,先开 22 端口进去执行脚本,完成后再把 22 端口关闭。以后用的就是非 22 端口。
这里我本想使用terraform来管理安全组,但是发现腾讯云对lighthouse轻量服务器的安全组查询支持不太好,调试了半天,这些云平台安全组规则最后还是去控制台更改方便一点。
组网
前期准备完成,使用tailscale进行组网。
在tailscale官网注册账号,下载tailscale客户端。免费账户 100 个节点,足够使用。
让 ai 编写脚本完成。
调整网络配置
由于之后要频繁拉取镜像,需要调整网络配置。
改 dns、注册镜像源、或者本机下载好资源,然后通过局域网分享给其他机子。
k3s
根据个人情况选择三台机器,作为 etcd 控制平面。在此我使用的是我华为云北方同区域的三台。
从一个节点开始,作为 master 节点,安装 k3s。之后再选两个机子作为 master 节点组成 etcd 控制平面。最后再加入其他机子作为 agent 节点。
完成之后测试 get nodes 之类的命令。
k9s
k9s 可以直接安装在自己本地,然后配置 k3s 的 kubectl 配置文件即可。我安装在自己的 wsl 里面。
prometheus+grafana
选择了一个比较空闲的 master 节点安装监控。之后通过以下命令访问看板。
kubectl port-forward -n monitoring svc/kube-prometheus-stack-grafana 3000:80 --address 0.0.0.0
import 的是13105
后面安装各种组件,实操过程我基本都交给 gemini 去规划执行了。
最痛的地方在于经常有仓库或者镜像拉不下来,所以调整网络配置实际上是最耗时间的。
复盘
-
资源匮乏,意义有限。目前这个集群的 etcd 延迟受网络波动影响较大,并且机子配置也很局限,带宽不够,拉大镜像也很折磨,适合喜欢折腾的人参考。
-
servers.yaml 管理可以考虑结合
Ansible,我使用的是 ai 生成 sh 脚本。 -
下一步会继续研究存储 Storage 和入口 Ingress。后续会在帖子里面更新。
-
Prometheus 可能会考虑用 VictoriaMetrics 替换。测试了没啥太大的性能提升,内存占用看起来少了一些,但数据同一个看板数据也少了,存在很多未探索的内容。。。 -
可以把海外鸡做 Docker Registry Proxy。有一点用,但是用处不大。木桶的短板在于国内的几台小鸡带宽太小了。 -
master 之间可以考虑用云内网 ip 通信,master 和 worker 之间用 Tailscale IP
2026.01.13 iperf3测试
| Network Path | Throughput | Overhead | Notes |
|---|---|---|---|
| Raw Internal IP (172.31.x.x) | 1.75 Gbits/sec | - | Pure TCP/IP over Huawei VPC |
| Tailscale IP (100.x.x.x) | 1.66 Gbits/sec | ~5.1% | WireGuard encryption over VPC |
tailscale可以自动检测并使用局域网通信,不需要显式指定master之间使用内网,并且使用tailscale局域网ip,可以无视云平台安全组规则

