Loading... # Kubernetes 应用部署流程入门 # 一、概述 ## 1. 简介 ### A. 是什么 Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。理解应用在 Kubernetes 集群中的完整部署流程,是掌握 Kubernetes 的第一步。 ### B. 为什么学 - 深入理解 Kubernetes 的工作原理 - 掌握从代码到集群的完整部署路径 - 提升故障排查和问题解决能力 ### C. 学完能做什么 - 独立完成应用在 Kubernetes 集群中的部署 - 理解 Kubernetes 内部各组件之间的关系 - 排查部署过程中的常见问题 ## 2. 前置知识 ### A. 必备技能 - Docker 基础操作和镜像构建 - 基本 Linux 命令操作 - 了解容器和容器化概念 ### B. 推荐知识 - YAML 配置文件语法 - HTTP 和网络基础 # 二、部署流程概述 ## 1. 核心流程 应用在 Kubernetes 集群中运行需要经过 6 个关键步骤: ```mermaid graph TD subgraph 开发阶段 A[构建应用 Build] --> B[容器化 Docker build] B --> C[推送镜像 Docker push] end subgraph 部署阶段 C --> D[创建清单 Manifests] D --> E[部署集群 kubectl apply] E --> F[暴露应用 Expose] end subgraph Kubernetes 内部 G[Deployment] --> H[ReplicaSet] H --> I[Pods] I --> J[Containers] end E -.触发.-> G style A fill:#e1f5ff style B fill:#e1f5ff style C fill:#e1f5ff style D fill:#fff4e1 style E fill:#fff4e1 style F fill:#fff4e1 style G fill:#ffe1f5 style H fill:#ffe1f5 style I fill:#ffe1f5 style J fill:#ffe1f5 ```  # 三、详细步骤 ## 1. 构建应用 ### A. 应用类型 - Java:Spring Boot、Java EE - Node.js:Express、Koa、Nest.js - Python:Django、Flask、FastAPI ### B. 构建产物 生成可执行文件或压缩包,准备容器化 ## 2. 容器化 ### A. 编写 Dockerfile 定义应用运行环境、依赖和启动命令 ### B. 构建镜像 ```bash docker build -t myapp:v1 . ``` ## 3. 推送镜像 ### A. 登录镜像仓库 ```bash docker login ``` ### B. 推送镜像到 Docker Hub ```bash docker push myapp:v1 ``` 这样 Kubernetes 才能从镜像仓库拉取应用镜像。 ## 4. 创建 Kubernetes 清单 ### A. Deployment 资源 管理 Pods,确保应用始终运行指定数量的副本 ### B. Service 资源 暴露应用,为 Pods 提供稳定的网络访问入口 ### C. 清单示例 deployment.yaml: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp image: myapp:v1 ports: - containerPort: 8080 ``` service.yaml: ```yaml apiVersion: v1 kind: Service metadata: name: myapp-service spec: selector: app: myapp ports: - port: 80 targetPort: 8080 type: ClusterIP ``` ## 5. 部署到集群 ### A. 应用 Deployment ```bash kubectl apply -f deployment.yaml ``` ### B. 应用 Service ```bash kubectl apply -f service.yaml ``` ### C. Kubernetes 内部流程 ```mermaid graph LR A[Deployment] -->|管理| B[ReplicaSet] B -->|维护| C[Pod 1] B -->|维护| D[Pod 2] B -->|维护| E[Pod N] C --> F[Container] D --> F E --> F style A fill:#4CAF50,color:#fff style B fill:#2196F3,color:#fff style C fill:#FFC107 style D fill:#FFC107 style E fill:#FFC107 style F fill:#FF5722,color:#fff ```  当执行 kubectl apply 时,Kubernetes 会在后台执行以下操作: - Deployment 创建对应的 ReplicaSet - ReplicaSet 根据副本数创建指定数量的 Pods - 每个 Pod 启动一个或多个 Containers - Container 拉取镜像并运行应用 ## 6. 暴露应用 ### A. NodePort 通过集群节点的 IP 和端口暴露服务,端口范围 30000-32767 ### B. LoadBalancer 云厂商提供的负载均衡器,自动分配外部 IP ### C. Ingress 基于 HTTP/HTTPS 的七层路由,支持域名和路径规则 ### D. 选择建议 - 本地测试:NodePort - 生产环境:Ingress + LoadBalancer # 四、验证部署 ## 1. 查看 Pods 状态 ```bash kubectl get pods ``` ## 2. 查看 Service 信息 ```bash kubectl get svc ``` ## 3. 查看应用日志 ```bash kubectl logs -f <pod-name> ``` ## 4. 进入容器调试 ```bash kubectl exec -it <pod-name> -- /bin/bash ``` # 五、常见问题 ## 1. 镜像拉取失败 检查镜像名称、标签和镜像仓库访问权限 ## 2. Pod 无法启动 查看 Pod 状态和事件:kubectl describe pod <pod-name> ## 3. 无法访问应用 检查 Service 类型、端口映射和网络策略 # 六、原流程图参考  *** ## 参考资料 1. [FromCodeToCloud on X](https://x.com/fromcodetocloud/status/2033540142196314449?s=20) 最后修改:2026 年 03 月 17 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏