Files
tankwar_proj/server/README.md
T
2026-05-02 13:50:52 +08:00

183 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Tank War Server - Kubernetes部署指南
## 概述
Tank War Server是一个基于WebSocket的多人坦克对战游戏服务器,支持1v1和3v3对战模式。本文档说明如何将服务器部署到Kubernetes集群中。
## 前置要求
- Docker
- Kubernetes集群访问权限
- kubectl命令行工具
- 对目标K8s集群的访问配置
## 部署步骤
### 1. 准备环境
确保您已配置好对目标Kubernetes集群的访问:
```bash
# 检查集群连接
kubectl cluster-info
# 查看当前上下文
kubectl config current-context
```
### 2. 构建Docker镜像
```bash
# 在server目录下构建镜像
cd server
docker build -t tankwar-server:latest .
```
### 3. 部署到Kubernetes
使用提供的部署脚本:
```bash
# 给脚本执行权限
chmod +x deploy.sh
# 执行部署
./deploy.sh
```
或者手动部署:
```bash
# 创建命名空间
kubectl create namespace tankwar
# 部署应用
kubectl apply -f k8s-deployment.yaml -n tankwar
# 等待部署完成
kubectl rollout status deployment/tankwar-server -n tankwar
```
### 4. 验证部署
```bash
# 查看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
```
## 监控和日志
### 查看日志
```bash
# 查看所有Pod日志
kubectl logs -l app=tankwar-server -n tankwar
# 查看特定Pod日志
kubectl logs <pod-name> -n tankwar
```
### 扩展和伸缩
```bash
# 扩展副本数量
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
- 检查防火墙规则
### 调试命令
```bash
# 查看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
```
## 维护操作
### 更新部署
```bash
# 重新构建镜像
docker build -t tankwar-server:latest .
# 更新部署
kubectl rollout restart deployment/tankwar-server -n tankwar
```
### 清理部署
```bash
# 删除部署
kubectl delete -f k8s-deployment.yaml -n tankwar
# 删除命名空间
kubectl delete namespace tankwar
```
## 安全考虑
- 在生产环境中考虑使用Ingress控制器
- 配置适当的网络策略
- 定期更新镜像以修复安全漏洞
- 监控资源使用情况防止资源耗尽