首页
/ 最全面的Pig-Mesh微服务Kubesphere部署指南

最全面的Pig-Mesh微服务Kubesphere部署指南

2026-02-04 04:18:12作者:裘旻烁

还在为Spring Cloud微服务集群部署头疼?一文掌握Pig-Mesh在Kubesphere的完美适配方案!本文将带你从零搭建高可用微服务集群,解决服务发现、配置管理、监控告警等核心问题。

读完本文你将获得:

  • ✅ Pig-Mesh全模块Kubernetes部署配置
  • ✅ Kubesphere服务网格与监控集成
  • ✅ 持久化存储与配置管理最佳实践
  • ✅ 自动化CI/CD流水线搭建

架构总览

Pig-Mesh采用标准的Spring Cloud微服务架构,在Kubesphere中的部署架构如下:

graph TB
    subgraph "Kubesphere集群"
        subgraph "网络层"
            GW[Gateway网关]
            IN[Ingress控制器]
        end
        
        subgraph "应用层"
            AUTH[认证服务]
            UPMS[用户权限服务]
            MONITOR[监控服务]
            CODEGEN[代码生成服务]
            QUARTZ[定时任务服务]
        end
        
        subgraph "基础设施层"
            NACOS[注册中心]
            MYSQL[MySQL数据库]
            REDIS[Redis缓存]
        end
    end
    
    IN --> GW
    GW --> AUTH
    GW --> UPMS
    GW --> MONITOR
    GW --> CODEGEN
    GW --> QUARTZ
    
    AUTH -.-> NACOS
    UPMS -.-> NACOS
    MONITOR -.-> NACOS
    CODEGEN -.-> NACOS
    QUARTZ -.-> NACOS
    
    AUTH -.-> MYSQL
    UPMS -.-> MYSQL
    CODEGEN -.-> MYSQL
    QUARTZ -.-> MYSQL
    
    AUTH -.-> REDIS
    UPMS -.-> REDIS

核心模块部署配置

1. Nacos注册中心部署

创建 nacos-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pig-nacos
  namespace: pig-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app: pig-nacos
  template:
    metadata:
      labels:
        app: pig-nacos
    spec:
      containers:
      - name: nacos
        image: nacos/nacos-server:2.2.3
        ports:
        - containerPort: 8848
        - containerPort: 9848
        env:
        - name: MODE
          value: standalone
        - name: SPRING_DATASOURCE_PLATFORM
          value: mysql
        - name: MYSQL_SERVICE_HOST
          value: pig-mysql
        - name: MYSQL_SERVICE_DB_NAME
          value: nacos
        - name: MYSQL_SERVICE_USER
          value: root
        - name: MYSQL_SERVICE_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: password
---
apiVersion: v1
kind: Service
metadata:
  name: pig-nacos
  namespace: pig-system
spec:
  selector:
    app: pig-nacos
  ports:
  - name: http
    port: 8848
    targetPort: 8848
  - name: grpc
    port: 9848
    targetPort: 9848

2. MySQL数据库配置

创建 mysql-deployment.yaml:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: pig-mysql
  namespace: pig-system
spec:
  serviceName: pig-mysql
  replicas: 1
  selector:
    matchLabels:
      app: pig-mysql
  template:
    metadata:
      labels:
        app: pig-mysql
    spec:
      containers:
      - name: mysql
        image: mysql:8.0
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: password
        - name: MYSQL_DATABASE
          value: pig
        volumeMounts:
        - name: mysql-data
          mountPath: /var/lib/mysql
  volumeClaimTemplates:
  - metadata:
      name: mysql-data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "nfs-client"
      resources:
        requests:
          storage: 20Gi

3. 网关服务部署

创建 gateway-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pig-gateway
  namespace: pig-system
spec:
  replicas: 2
  selector:
    matchLabels:
      app: pig-gateway
  template:
    metadata:
      labels:
        app: pig-gateway
    spec:
      containers:
      - name: gateway
        image: pig-gateway:latest
        ports:
        - containerPort: 9999
        env:
        - name: SPRING_CLOUD_NACOS_SERVER_ADDR
          value: pig-nacos:8848
        - name: SPRING_REDIS_HOST
          value: pig-redis
        resources:
          requests:
            memory: "256Mi"
            cpu: "250m"
          limits:
            memory: "512Mi"
            cpu: "500m"
---
apiVersion: v1
kind: Service
metadata:
  name: pig-gateway
  namespace: pig-system
spec:
  selector:
    app: pig-gateway
  ports:
  - port: 9999
    targetPort: 9999

配置管理与服务发现

ConfigMap配置

创建 configmap.yaml 集中管理配置:

apiVersion: v1
kind: ConfigMap
metadata:
  name: pig-common-config
  namespace: pig-system
data:
  application.yml: |
    spring:
      cloud:
        nacos:
          discovery:
            server-addr: pig-nacos:8848
          config:
            server-addr: pig-nacos:8848
      datasource:
        url: jdbc:mysql://pig-mysql:3306/pig?useUnicode=true&characterEncoding=utf8
        username: root
        password: ${MYSQL_PASSWORD}
      redis:
        host: pig-redis
        port: 6379

服务网格集成

在Kubesphere中启用服务网格,为Pig-Mesh提供服务治理能力:

服务网格拓扑

监控与日志方案

1. 应用监控配置

修改 pig-monitor部署 支持Prometheus:

FROM openjdk:21-jdk
COPY target/pig-monitor.jar app.jar
EXPOSE 5001
ENV JAVA_OPTS="-javaagent:/app/jmx_prometheus_javaagent.jar=8080:/app/config.yaml"
CMD java $JAVA_OPTS -jar app.jar

2. 日志收集配置

创建 log-collector.yaml:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluent-bit
  namespace: kube-system
spec:
  template:
    spec:
      containers:
      - name: fluent-bit
        image: fluent/fluent-bit:2.1
        volumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: config
          mountPath: /fluent-bit/etc/
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
      - name: config
        configMap:
          name: fluent-bit-config

CI/CD自动化流水线

Kubesphere DevOps配置

创建 devops-pipeline.yaml:

apiVersion: devops.kubesphere.io/v1alpha3
kind: Pipeline
metadata:
  name: pig-mesh-pipeline
spec:
  parameters:
  - name: BRANCH_NAME
    defaultValue: "main"
  stages:
  - name: clone
    steps:
    - name: clone-code
      command: git clone https://gitcode.com/pig-mesh/pig
      workingDir: /home/jenkins-agent
  - name: build
    steps:
    - name: maven-build
      command: mvn clean package -DskipTests
      workingDir: /home/jenkins-agent/pig
  - name: docker-build
    steps:
    - name: build-image
      command: |
        docker build -t pig-gateway:latest ./pig-gateway
        docker build -t pig-auth:latest ./pig-auth
        docker build -t pig-upms:latest ./pig-upms/pig-upms-biz
  - name: deploy
    steps:
    - name: k8s-deploy
      command: kubectl apply -f deploy/k8s/

运维与故障排查

健康检查配置

在每个服务的Deployment中添加健康检查:

livenessProbe:
  httpGet:
    path: /actuator/health
    port: 9999
  initialDelaySeconds: 60
  periodSeconds: 10
readinessProbe:
  httpGet:
    path: /actuator/health
    port: 9999
  initialDelaySeconds: 30
  periodSeconds: 5

常见问题处理

  1. 服务注册失败

    • 检查Nacos服务状态:kubectl get pods -n pig-system | grep nacos
    • 查看日志:kubectl logs pig-nacos-xxx -n pig-system
  2. 数据库连接问题

    • 验证MySQL服务:kubectl exec -it pig-mysql-0 -n pig-system -- mysql -uroot -p
    • 检查网络策略:确保服务间网络通畅
  3. 配置中心异常

    • 确认ConfigMap是否正确挂载
    • 检查Nacos配置是否同步

性能优化建议

  1. 资源限制配置

    resources:
      requests:
        memory: "512Mi"
        cpu: "250m"
      limits:
        memory: "1Gi"
        cpu: "500m"
    
  2. HPA自动扩缩容

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: pig-gateway-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: pig-gateway
      minReplicas: 2
      maxReplicas: 10
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 70
    

通过本文的完整指南,你可以在Kubesphere上快速部署和管理Pig-Mesh微服务集群,享受完整的服务治理、监控和自动化运维能力。

下一步行动:

  • 🚀 部署你的第一个Pig-Mesh服务
  • 📊 配置监控告警规则
  • 🔄 设置自动化CI/CD流水线
  • 📈 优化资源分配和性能调优

记得点赞收藏,随时回来查阅!

登录后查看全文
热门项目推荐
相关项目推荐