Wanderlust旅游应用在Kubernetes上的完整部署指南
项目概述
Wanderlust是一个旅游相关的应用程序,本文将详细介绍如何在Kubernetes集群上部署这个应用。通过本教程,您将学习到从环境准备到应用部署的完整流程,包括Docker镜像构建、Kubernetes资源配置以及应用调试等关键步骤。
环境准备
在开始部署前,需要确保具备以下环境条件:
-
AWS EC2实例:需要2台Ubuntu系统的EC2实例,建议配置为:
- 实例类型:t2.medium
- 根卷大小:29GB
-
Kubernetes集群:使用kubeadm工具搭建的Kubernetes集群
部署步骤详解
1. 初始设置
首先以root用户身份进行操作:
sudo su
2. 获取应用代码
获取Wanderlust应用的代码仓库:
git clone -b devops <代码仓库地址>
3. 检查集群状态
确认Kubernetes节点状态正常:
kubectl get nodes
4. 创建命名空间
为Wanderlust应用创建专用的命名空间:
kubectl create namespace wanderlust
kubectl config set-context --current --namespace wanderlust
5. DNS解析配置
确保集群DNS解析正常工作:
kubectl get pods -n kube-system -o wide | grep -i core
如果发现coredns只在主节点运行,可以通过编辑部署将副本数从2增加到4:
kubectl edit deploy coredns -n kube-system -o yaml
6. 前端配置
进入前端目录并配置环境变量:
cd frontend
vi .env.docker
在配置文件中,将公共IP地址替换为工作节点的实际IP地址。
构建前端Docker镜像:
docker build -t madhupdevops/frontend-wanderlust:v2.1.8 .
7. 后端配置
进入后端目录并配置环境变量:
cd ../backend/
vi .env.docker
需要配置以下关键变量:
- MONGODB_URI:MongoDB服务名称
- REDIS_URL:Redis服务名称
- FRONTEND_URL:工作节点公共IP
构建后端Docker镜像:
docker build -t madhupdevops/backend-wanderlust:v2.1.8 .
8. 镜像推送
将构建好的镜像推送到Docker镜像仓库:
docker login
docker push madhupdevops/frontend-wanderlust:v2.1.8
docker push madhupdevops/backend-wanderlust:v2.1.8
9. Kubernetes资源配置
进入Kubernetes配置目录并按顺序应用各个资源文件:
cd ../kubernetes
- 创建持久卷(PV):
kubectl apply -f persistentVolume.yaml
- 创建持久卷声明(PVC):
kubectl apply -f persistentVolumeClaim.yaml
- 部署MongoDB:
kubectl apply -f mongodb.yaml
- 部署Redis:
kubectl apply -f redis.yaml
- 部署后端服务:
kubectl apply -f backend.yaml
- 部署前端服务:
kubectl apply -f frontend.yaml
10. 部署验证
检查所有部署和服务状态:
kubectl get all
查看各个Pod的日志以确保服务正常运行:
kubectl logs <pod-name>
11. 访问应用
在浏览器中访问应用,端口号为31000:
http://<工作节点公共IP>:31000/
常见问题排查
-
服务连接问题:如果后端服务无法连接MongoDB或Redis,请确保这些服务已完全启动(等待3-4分钟)。
-
DNS解析问题:如果遇到服务发现失败,检查coredns是否在所有节点正常运行。
-
镜像构建失败:确保Dockerfile中所有依赖项正确配置,网络连接正常。
最佳实践建议
-
资源限制:为每个容器配置适当的资源请求和限制,避免资源争用。
-
健康检查:为所有服务添加就绪性和存活性探针。
-
配置管理:考虑使用ConfigMap和Secret管理应用配置,而非直接硬编码在环境变量中。
-
自动伸缩:为前端和后端服务配置Horizontal Pod Autoscaler,根据负载自动调整副本数量。
通过本教程,您应该已经成功在Kubernetes集群上部署了Wanderlust应用。这种部署方式提供了良好的可扩展性和可靠性,适合生产环境使用。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0191
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0113
Step-3.7-FlashStep-3.7-Flash是一个拥有 1980 亿参数的稀疏混合专家(MoE)视觉语言模型,由 1960 亿参数的语言主干网络和 18 亿参数的视觉编码器组合而成,具备原生图像理解能力。Python00
JoyAI-EchoJoyAI-Echo,这是一个独立的、仅用于推理的版本,旨在实现分钟级多镜头音视频生成。它采用了经过蒸馏的DMD生成器、配对的跨模态记忆以及故事级别的一致性。其性能的核心在于,一个跨模态视听记忆库能够在长达五分钟的视频中保持角色外观和语音音色的一致性。同时,一个训练后处理流程将基于记忆的强化学习与分布匹配蒸馏相结合,实现了7.5倍的速度提升,显著增强了视觉质量和对齐效果。00
omega-aiOmega-AI:基于java打造的深度学习框架,帮助你快速搭建神经网络,实现模型推理与训练,引擎支持自动求导,多线程与GPU运算,GPU支持CUDA,CUDNN。Java04
llm-universe本项目是一个面向小白开发者的大模型应用开发教程,在线阅读地址:https://datawhalechina.github.io/llm-universe/Jupyter Notebook08