183 lines
3.3 KiB
Markdown
183 lines
3.3 KiB
Markdown
# 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控制器
|
||
- 配置适当的网络策略
|
||
- 定期更新镜像以修复安全漏洞
|
||
- 监控资源使用情况防止资源耗尽 |