K8S 部署 seata

22 篇文章 0 订阅


官方文档

k8s中volumeMounts.subPath的巧妙用法

 

创建 Deployment 文件

deploymemt.yaml

  • namespace:指定命名空间
  • image:使用 1.5.2 版本的镜像
  • ports:暴露 8091 和 7091 端口
  • volumeMounts:容器中的存储
  • mountPath: 存储路径
  • subPath:指定出具体文件
  • volumes:pod 存储
  • configMap.name:对应 configMap 文件的 metadata. name
apiVersion: apps/v1
kind: Deployment
metadata:
  name: seata-server
  namespace: common
  labels:
    k8s-app: seata-server
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: seata-server
  template:
    metadata:
      labels:
        k8s-app: seata-server
    spec:
      containers:
        - name: seata-server
          image: docker.io/seataio/seata-server:1.5.2
          imagePullPolicy: IfNotPresent
          ports:
            - name: http-7091
              containerPort: 7091
              protocol: TCP
            - name: http-8091
              containerPort: 8091
              protocol: TCP
          volumeMounts:
            - name: seata-config
              mountPath: /seata-server/resources/application.yml
              subPath: application.yml
      volumes:
        - name: seata-config
          configMap:
            name: seata-server-config

 

创建 ConfigMap 文件

configmap.yaml
映射 application.yml 文件,例子使用 seata 原始配置文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: seata-server-config
  namespace: common
data:
  application.yml: |
    server:
      port: 7091

    spring:
      application:
        name: seata-server

    logging:
      config: classpath:logback-spring.xml
      file:
        path: ${user.home}/logs/seata
      extend:
        logstash-appender:
          destination: 127.0.0.1:4560
        kafka-appender:
          bootstrap-servers: 127.0.0.1:9092
          topic: logback_to_logstash

    console:
      user:
        username: seata
        password: seata

    seata:
      config:
        # support: nacos, consul, apollo, zk, etcd3
        type: file
      registry:
        # support: nacos, eureka, redis, zk, consul, etcd3, sofa
        type: file
      store:
        # support: file 、 db 、 redis
        mode: file
    #  server:
    #    service-port: 8091 #If not configured, the default is '${server.port} + 1000'
      security:
        secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
        tokenValidityInMilliseconds: 1800000
        ignore:
          urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login

 

创建 Service 文件

service.yaml
对外暴露 NodePort 端口

apiVersion: v1
kind: Service
metadata:
  name: seata-server
  namespace: common
  labels:
    k8s-app: seata-server
spec:
  type: NodePort
  ports:
    - port: 8091
      nodePort: 30893
      protocol: TCP
      name: seata-8091
    - port: 7091
      nodePort: 30793
      protocol: TCP
      name: seata-7091
  selector:
    k8s-app: seata-server

 

运行

kubectl apply -f deployment.yaml
kubectl apply -f configmap.yaml
kubectl apply -f service.yaml

 

访问

访问 ip:30793 即可访问 seata
默认账号:seata
默认密码:seata

在这里插入图片描述
 

高可用部署

修改 configmap 映射的 application.yml 文件

  • seata.config:配置 seata 配置文件路径
  • seata.registry:配置 seata 注册地址
seata:
  config:
    type: nacos
    nacos:
      server-addr: nacosIp:port
      namespace: seata
      group: dev
      username: nacos
      password: nacos
      data-id: seata-dev.yml
  registry:
    type: nacos
    nacos:
      application: seata-server
      server-addr: nacosIp:port
      group: dev
      namespace: seata
      cluster: default
      username: nacos
      password: nacos

deployment 添加多个 pod
在这里插入图片描述

成功注册上 nacos
在这里插入图片描述

 

踩坑

  • 问题:按照官方文档 Seata 高可用部署,镜像使用 1.5.0 及以上的版本时,seata 无法正常注册到 nacos
    解决办法:镜像使用 1.4.2 版本

  • 问题:使用 1.4.2 版本版本后,高可用还是有问题,nodeport 暴露后无法访问
    解决办法:使用本文部署

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 Kubernetes部署 Seata,您可以按照以下步骤进行操作: 1. 创建 Seata 的配置文件: 在您的 Kubernetes 集群上创建一个 ConfigMap,将 Seata 的配置文件存储为一个或多个配置项。您可以根据需要创建一个名为 `seata-config` 的 ConfigMap,并将 Seata 的配置文件内容存储在其中。 2. 部署 Seata Server: 创建一个名为 `seata-server` 的 Deployment,指定 Seata Server 的容器镜像和其他相关配置。确保将 Seata Server 的端口暴露出来,以便其他服务可以连接到它。 3. 部署 Seata TC(Transaction Coordinator): 创建一个名为 `seata-tc` 的 Deployment,指定 Seata TC 的容器镜像和其他相关配置。确保将 Seata TC 的端口暴露出来,并将其连接到 Seata Server。 4. 配置微服务应用: 对于使用 Seata 进行分布式事务管理的微服务应用,需要添加 Seata 的依赖,并配置相关的数据源代理、事务管理器等。 5. 配置 Seata AT(Automatic Transaction)模式: 如果您使用的是 Seata AT 模式(自动事务),则需要在需要进行分布式事务管理的业务方法上添加 `@GlobalTransactional` 注解。 6. 部署其他微服务应用: 部署其他需要使用 Seata 进行分布式事务管理的微服务应用,并按照第 5 步的方式配置。 请注意,以上步骤仅提供了一个大致的部署流程,具体的实现细节可能会根据您的实际需求和环境而有所不同。建议您参考 Seata 官方文档以获取更详细的部署指南和配置说明。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值