从零部署应用到 Kubernetes

如何将一个应用完整部署到 K8s 集群并对外暴露服务?

解决方案

标准部署流程(Deployment + Service + Ingress) 推荐

# 1. 创建命名空间
kubectl create namespace myapp

# 2. 创建 Deployment
kubectl create deployment web --image=myregistry/myapp:v1.0 --replicas=3 -n myapp

# 3. 暴露 Service
kubectl expose deployment web --port=80 --target-port=8080 --type=ClusterIP -n myapp

# 4. 验证部署状态
kubectl rollout status deployment/web -n myapp
kubectl get pods -n myapp

# 5. 本地测试
kubectl port-forward svc/web 8080:80 -n myapp

使用命名空间隔离应用,Deployment 管理 Pod 副本,Service 提供稳定的内部访问入口,port-forward 用于本地验证。

适用场景:快速部署验证,适合开发和测试环境

通过 YAML 文件声明式部署

# 生成 YAML 模板
kubectl create deployment web --image=myapp:v1.0 --replicas=3 --dry-run=client -o yaml > deployment.yaml

# 编辑完善后应用
kubectl apply -f deployment.yaml -n myapp
kubectl apply -f service.yaml -n myapp

# 验证
kubectl get all -n myapp

声明式管理更适合生产环境,YAML 文件可以纳入 Git 版本控制,实现 GitOps 工作流。

适用场景:生产环境部署,需要版本控制和可重复性

注意事项

生产环境务必设置 resources.requests 和 limits
确保镜像仓库可访问且镜像 tag 正确
建议配置健康检查(livenessProbe/readinessProbe)

相关命令