在Linux系统上部署微服务架构,需要结合容器化技术和编排工具,实现服务的快速部署、弹性扩展和稳定运维,整个流程可以分为环境准备、服务容器化、编排部署和运维优化四个核心阶段。

一、部署前的环境准备
首先需要准备一台运行Linux系统的服务器,推荐选择Ubuntu 20.04或者CentOS 7及以上版本,同时需要安装以下基础依赖:
- JDK:微服务如果是Java开发需要安装JDK 8及以上版本,本文以Spring Boot微服务为例
- Docker:用于微服务容器化打包,版本建议选择20.10及以上
- Kubernetes:用于多微服务实例的编排管理,可选择kubeadm快速搭建单节点集群
1.1 安装Docker
在Ubuntu系统上安装Docker的命令如下:
# 更新软件包索引 sudo apt-get update # 安装依赖包 sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common # 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 添加Docker软件源 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" # 安装Docker sudo apt-get update sudo apt-get install -y docker-ce # 验证Docker安装成功 sudo docker --version
1.2 安装Kubernetes单节点集群
使用kubeadm安装Kubernetes的命令如下:
# 安装kubeadm、kubelet、kubectl sudo apt-get update && sudo apt-get install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl # 初始化集群 sudo kubeadm init --pod-network-cidr=10.244.0.0/16 # 配置kubectl权限 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config # 安装网络插件 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
二、微服务容器化打包
微服务容器化需要将服务代码打包成可执行的jar包,再编写Dockerfile生成镜像,以Spring Boot微服务为例:
2.1 打包Spring Boot服务
在项目根目录执行Maven打包命令:
mvn clean package -DskipTests
打包完成后会在target目录下生成xxx.jar文件,比如user-service-0.0.1-SNAPSHOT.jar。
2.2 编写Dockerfile
在项目根目录创建Dockerfile文件,内容如下:
# 基础镜像使用OpenJDK 8 FROM openjdk:8-jdk-alpine # 设置工作目录 WORKDIR /app # 将打包好的jar包复制到容器中 COPY target/user-service-0.0.1-SNAPSHOT.jar /app/user-service.jar # 暴露服务端口,根据实际服务端口调整 EXPOSE 8080 # 启动命令 ENTRYPOINT ["java", "-jar", "/app/user-service.jar"]
2.3 构建并推送镜像
执行以下命令构建镜像并推送到镜像仓库,这里以本地仓库为例:
# 构建镜像 sudo docker build -t user-service:latest . # 验证镜像构建成功 sudo docker images | grep user-service # 运行容器测试镜像是否正常 sudo docker run -d -p 8080:8080 --name test-user-service user-service:latest # 测试接口是否正常 curl http://127.0.0.1:8080/health
三、使用Kubernetes编排部署微服务
微服务架构通常包含多个服务实例,使用Kubernetes可以实现服务的自动部署、负载均衡和故障自愈。
3.1 编写Deployment配置
创建user-service-deployment.yaml文件,定义服务的部署配置:
apiVersion: apps/v1
kind: Deployment
metadata:
name: user-service
labels:
app: user-service
spec:
replicas: 3 # 部署3个实例
selector:
matchLabels:
app: user-service
template:
metadata:
labels:
app: user-service
spec:
containers:
- name: user-service
image: user-service:latest
imagePullPolicy: Never # 使用本地镜像
ports:
- containerPort: 8080
# 健康检查配置
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 20
periodSeconds: 5
3.2 编写Service配置
创建user-service-service.yaml文件,定义服务的访问入口:
apiVersion: v1
kind: Service
metadata:
name: user-service
spec:
selector:
app: user-service
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: NodePort # 使用NodePort暴露服务
3.3 部署服务
执行以下命令部署服务:
# 部署Deployment kubectl apply -f user-service-deployment.yaml # 部署Service kubectl apply -f user-service-service.yaml # 查看部署状态 kubectl get pods kubectl get svc
部署完成后,可以通过服务器IP:NodePort访问user-service服务,NodePort可以通过kubectl get svc命令查看。
四、部署后的运维优化
微服务部署完成后,还需要做好运维工作保障服务稳定:
- 资源限制:在Deployment配置中设置CPU和内存的requests和limits,避免单个服务占用过多资源
- 日志收集:使用ELK或者Loki收集微服务日志,方便问题排查
- 监控告警:使用Prometheus+Grafana监控服务的CPU、内存、请求延迟等指标,设置异常告警
- 滚动更新:当需要更新服务版本时,修改镜像版本后重新执行
kubectl apply,Kubernetes会自动执行滚动更新,避免服务中断
五、常见问题排查
部署过程中如果遇到问题,可以通过以下方式排查:
- 查看Pod状态:
kubectl describe pod [pod名称],查看事件信息定位问题 - 查看容器日志:
kubectl logs [pod名称],查看服务运行日志 - 检查镜像是否正常:
sudo docker images确认镜像存在,sudo docker run本地测试镜像 - 检查网络连通性:
kubectl exec -it [pod名称] -- curl [服务名]:[端口]测试服务间调用是否正常
注意:生产环境不建议使用单节点Kubernetes集群,建议搭建多节点高可用集群,同时镜像需要推送到私有仓库或者公有云镜像仓库,不要使用本地镜像。
Linux微服务Spring_BootDockerKubernetes修改时间:2026-07-10 16:30:35