从 Docker Compose 到 Kubernetes:物联网管理系统迁移思路(补)

实验整体思路

从 Docker Compose 单机部署迁移到 Kubernetes 集群部署,核心是理解两套编排体系的差异。

实验步骤回顾

第一阶段:环境准备

步骤 做了什么 为什么
1 准备三台 CentOS 7.9 虚拟机 搭建集群需要至少一个 master 和一个 node
2 关闭防火墙、SELinux、Swap K8S 的硬性要求,否则初始化会报错
3 安装 Docker 20.10.24 容器运行时
4 安装 kubeadm、kubelet、kubectl 1.20.15 K8S 管理工具(最终降级到这个版本)

关键决策:K8S 1.22 已移除 dockershim,无法直接使用 Docker,所以降级到 1.20.15。


第二阶段:镜像准备

步骤 做了什么 为什么
5 编写 Dockerfile(后端、数据库、前端) 将应用打包成容器镜像
6 在 Windows 拉取基础镜像 虚拟机无法访问外网
7 上传到 master 并导入 Docker 离线环境的标准做法

关键发现openjdk:11-jre-slim 已废弃,改用 eclipse-temurin:11-jre


第三阶段:集群搭建

步骤 做了什么 为什么
8 kubeadm init 初始化 master 创建控制平面
9 安装 Flannel 网络插件 跨节点 Pod 通信需要 CNI
10 kubeadm join 将 node2 加入集群 扩展集群工作节点

卡点:node1 始终无法正常加入,最后改用 master + node2 继续实验。


第四阶段:应用部署

步骤 做了什么 为什么
11 将镜像分发到 node2 每个节点都需要有镜像才能运行 Pod
12 创建 PV 解决存储问题 数据库需要持久化存储
13 手动建表 MySQL 初始化脚本没自动执行
14 修改前端配置 + 换端口解决缓存 浏览器缓存无法清除时的绕过方法

第五阶段:验证

步骤 做了什么
15 浏览器访问 http://192.168.116.168:30081
16 设备增删改查功能全部正常

架构变化对比

对比项 Docker Compose Kubernetes
部署单位 docker-compose.yml Deployment + Service + PVC
服务发现 固定 IP 或容器名 Service + DNS
存储 宿主机 Volume PV + PVC
暴露服务 宿主机端口映射 NodePort / Ingress
扩容 手动改配置重启 kubectl scale
更新 停服重启 滚动更新

核心问题汇总

问题 原因 解决方案
kubeadm init 失败 K8S 1.22 移除了 dockershim 降级到 1.20.15
镜像拉取超时 虚拟机无法访问外网 Windows 拉取 + 离线导入
openjdk 找不到 镜像已废弃 改用 eclipse-temurin
镜像拉不到 node2 镜像只在 master 手动分发到 node2
数据库 Pod Pending 没有 PV 创建 hostPath PV
device 表不存在 SQL 脚本没自动执行 手动建表
前端调不到后端 浏览器缓存 config.js 换 NodePort 端口
相关推荐
江湖有缘17 小时前
Docker实战 :使用Docker部署OneTerm堡垒机
运维·docker·容器
张忠琳17 小时前
【NPU】Ascend Docker Runtime v26.0.1 之二 runtime/process/process.go — 超深度逐行分析
云原生·容器·架构·kubernetes·npu·docker-runtime
Kevin Wang72721 小时前
Nvidia-AGX-spark部署手册——课堂质量诊断(jetpack:r36)
python·docker·容器
回眸不遇1 天前
将 Docker虚拟磁盘文件ext.vhdx迁移出C盘 ,更换到D盘
c语言·docker·容器
雨辰AI1 天前
K8s人大金仓主从高可用搭建|容器化集群自动同步+故障切换(生产完整版)
云原生·容器·kubernetes
潘正翔1 天前
k8s基础_kubeadm搭建k8s集群
linux·运维·docker·云原生·容器·kubernetes
Echo flower1 天前
Docker 容器中 Puppeteer 僵尸进程排查与修复
运维·docker·容器·puppeteer
流星白龙1 天前
【Docker】3.Docker 组件与生产应用
docker
潘正翔1 天前
k8s进阶_Harbor镜像仓库
git·云原生·容器·kubernetes·gitee·github
江湖有缘1 天前
Docker实战 | 使用Docker部署Donetick任务与家务管理应用
运维·docker·容器