1) 选择渠道:建议使用Oracle Cloud免费层(常有新加坡区域)或学生/研发生态提供的试用实例。
2) 要求镜像:选择Ubuntu 22.04 LTS或Debian 12,内存至少512MB(建议1GB),磁盘10GB以上。
3) 本地准备:安装SSH客户端(Linux/Mac已自带),若Windows可用PuTTY或Windows Subsystem for Linux。生成SSH密钥:ssh-keygen -t ed25519 -C "you@example.com"。
1) 创建实例并把公钥(~/.ssh/id_ed25519.pub)写入VPS的authorized_keys。
2) 登录:ssh -i ~/.ssh/id_ed25519 ubuntu@
1) 建立非root用户:sudo adduser dev && sudo usermod -aG sudo dev。
2) SSH安全:在/etc/ssh/sshd_config中禁用PermitRootLogin,设置PasswordAuthentication no,重启sshd:sudo systemctl restart sshd。
3) 防火墙:sudo apt install -y ufw && sudo ufw allow OpenSSH && sudo ufw allow 6443/tcp && sudo ufw enable。
1) 推荐用官方脚本:curl -fsSL https://get.docker.com | sh。
2) 添加用户到docker组:sudo usermod -aG docker $USER,然后重新登录使组生效。
3) 验证:docker run --rm hello-world。
1) 安装命令(以root或sudo执行):curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--no-deploy=servicelb --no-deploy=traefik" sh -。
2) 获取kubeconfig:sudo cat /etc/rancher/k3s/k3s.yaml > ~/.kube/config && sudo chown $(id -u):$(id -g) ~/.kube/config。若远程kubectl在本机使用,需要把文件下载并替换server字段为VPS的公网IP。
1) 创建Deployment并暴露服务:kubectl create deployment nginx --image=nginx:stable && kubectl expose deployment nginx --type=NodePort --port=80。
2) 查询端口:kubectl get svc nginx -o wide,记下NodePort(30000-32767),在VPS上确认该端口允许通过ufw:sudo ufw allow
1) 减少拉取时间:在Docker或k3s节点配置镜像加速器(例如国内用户可用阿里云/七牛加速地址),或预先在VPS上docker pull所需镜像并docker save/load到k3s。
2) 私有registry:可在VPS上通过docker run -d -p 5000:5000 --restart=always --name registry registry:2搭建本地仓库,推送测试镜像以节省带宽。
1) 对于测试环境,使用hostPath或local-path存储即可(k3s默认提供local-path-storage)。示例:创建PVC并绑定StorageClass local-path即可实现持久化。
2) 若需要共享存储,可用NFS或将对象存储(云提供)挂载到Pod。
1) 安装轻量监控:在k3s上部署metrics-server或Prometheus(限制采集项降低占用)。
2) 维护习惯:测试完成后删除无用deploy、镜像与快照;设置自动快照策略保留关键快照以防误删。
1) 若需模拟多节点,可用另外2台低配VPS加入k3s集群,安装命令中使用K3S_URL和K3S_TOKEN在agent节点加入主节点。
2) 受限于免费VPS资源,优先用容器模拟多实例(scale replicas)而不是物理多节点来节省成本。
问:免费新加坡VPS适合长期运行k3s吗?
答:免费VPS资源有限,适合短期或轻量级测试。长期运行要注意资源配额、带宽限制和稳定性,关键服务建议迁移到付费或企业级实例。
问:如何在单台VPS上模拟多节点Kubernetes用于CI测试?
答:可使用k3s的多实例(在同机运行多个k3s实例需端口隔离)或用KinD/k3d在容器中启动多个伪节点;更简单的是通过增加Deployment副本数来测试应用层伸缩。
问:如何保证测试环境的安全与数据不外泄?
答:最低限度采用SSH密钥登录、禁用密码、开启防火墙和最小暴露端口;对敏感数据使用加密或不在测试环境中存放真实数据;定期删除无用快照和镜像。