如何在Linux上部署微服务架构

来源:Golang编程网作者:南京GEO公司头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何在Linux上部署微服务架构》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上部署微服务架构》有用,将其分享出去将是对创作者最好的鼓励。

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

如何在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

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。