Files
2026-05-02 13:50:52 +08:00

3.3 KiB
Raw Permalink Blame History

Tank War Server - Kubernetes部署指南

概述

Tank War Server是一个基于WebSocket的多人坦克对战游戏服务器,支持1v1和3v3对战模式。本文档说明如何将服务器部署到Kubernetes集群中。

前置要求

  • Docker
  • Kubernetes集群访问权限
  • kubectl命令行工具
  • 对目标K8s集群的访问配置

部署步骤

1. 准备环境

确保您已配置好对目标Kubernetes集群的访问:

# 检查集群连接
kubectl cluster-info

# 查看当前上下文
kubectl config current-context

2. 构建Docker镜像

# 在server目录下构建镜像
cd server
docker build -t tankwar-server:latest .

3. 部署到Kubernetes

使用提供的部署脚本:

# 给脚本执行权限
chmod +x deploy.sh

# 执行部署
./deploy.sh

或者手动部署:

# 创建命名空间
kubectl create namespace tankwar

# 部署应用
kubectl apply -f k8s-deployment.yaml -n tankwar

# 等待部署完成
kubectl rollout status deployment/tankwar-server -n tankwar

4. 验证部署

# 查看Pod状态
kubectl get pods -n tankwar

# 查看服务信息
kubectl get svc -n tankwar

# 查看日志
kubectl logs -l app=tankwar-server -n tankwar

配置说明

环境变量

  • PORT: 服务器端口(默认:3000
  • HOST: 绑定地址(默认:0.0.0.0
  • NODE_ENV: 运行环境(默认:production

资源限制

  • 内存请求:256Mi,限制:512Mi
  • CPU请求:250m,限制:500m

健康检查

服务器提供健康检查端点:

  • URL: /health
  • 返回JSON格式的健康状态信息

网络配置

服务使用LoadBalancer类型暴露,可以通过外部IP访问。WebSocket连接地址格式:

ws://<external-ip>:3000

监控和日志

查看日志

# 查看所有Pod日志
kubectl logs -l app=tankwar-server -n tankwar

# 查看特定Pod日志
kubectl logs <pod-name> -n tankwar

扩展和伸缩

# 扩展副本数量
kubectl scale deployment/tankwar-server --replicas=5 -n tankwar

# 查看资源使用情况
kubectl top pods -n tankwar

故障排除

常见问题

  1. 镜像构建失败

    • 检查Docker守护进程是否运行
    • 确认Dockerfile语法正确
  2. 部署失败

    • 检查kubectl集群连接
    • 验证k8s-deployment.yaml文件语法
  3. Pod无法启动

    • 查看Pod事件:kubectl describe pod <pod-name> -n tankwar
    • 检查资源配额是否足够
  4. 连接问题

    • 确认服务已分配外部IP
    • 检查防火墙规则

调试命令

# 查看Pod详细信息
kubectl describe pod -l app=tankwar-server -n tankwar

# 进入Pod调试
kubectl exec -it <pod-name> -n tankwar -- /bin/sh

# 查看服务端点
kubectl get endpoints tankwar-server-service -n tankwar

维护操作

更新部署

# 重新构建镜像
docker build -t tankwar-server:latest .

# 更新部署
kubectl rollout restart deployment/tankwar-server -n tankwar

清理部署

# 删除部署
kubectl delete -f k8s-deployment.yaml -n tankwar

# 删除命名空间
kubectl delete namespace tankwar

安全考虑

  • 在生产环境中考虑使用Ingress控制器
  • 配置适当的网络策略
  • 定期更新镜像以修复安全漏洞
  • 监控资源使用情况防止资源耗尽