开发者社区 > 云原生 > 中间件 > 正文

k8s部署seata,是不是必须使用docker手动拉取镜像然后改配置文件,最后才能使用k8s部署?

k8s部署seata,是不是必须先使用docker手动拉取镜像然后改配置文件,最后才能使用k8s部署脚本部署?

展开
收起
鸡蛋灌饼儿 2023-02-19 10:47:08 381 1
2 条回答
写回答
取消 提交回答
  • 快速启动
    创建 seata-server.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: seata-server
      namespace: default
      labels:
        k8s-app: seata-server
    spec:
      type: NodePort
      ports:
        - port: 8091
          nodePort: 30091
          protocol: TCP
          name: http
      selector:
        k8s-app: seata-server
    
    ---
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: seata-server
      namespace: default
      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:latest
              imagePullPolicy: IfNotPresent
              env:
                - name: SEATA_PORT
                  value: "8091"
                - name: STORE_MODE
                  value: file
              ports:
                - name: http
                  containerPort: 8091
                  protocol: TCP
    

    使用自定义配置文件
    指定配置文件可以通过挂载文件或使用 ConfigMap 的方式实现,挂载后需要通过指定 SEATA_CONFIG_NAME 指定配置文件位置,并且环境变量的值需要以file:开始, 如: file:/root/seata-config/registry

    • Deployment
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: seata-server
      namespace: default
      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:latest
              imagePullPolicy: IfNotPresent
              env:
                - name: SEATA_CONFIG_NAME
                  value: file:/root/seata-config/registry
              ports:
                - name: http
                  containerPort: 8091
                  protocol: TCP
              volumeMounts:
                - name: seata-config
                  mountPath: /root/seata-config
          volumes:
            - name: seata-config
              configMap:
                name: seata-server-config
    
    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: seata-server-config
    data:
      registry.conf: |
        registry {
            type = "nacos"
            nacos {
              application = "seata-server"
              serverAddr = "192.168.199.2"
            }
        }
        config {
          type = "nacos"
          nacos {
            serverAddr = "192.168.199.2"
            group = "SEATA_GROUP"
          }
        }
    

    ——参考来源于SEATA官方文档

    2023-12-23 18:50:59
    赞同 1 展开评论 打赏
  • 北京阿里云ACE会长

    不是必须的。K8s(Kubernetes)部署Seata(一个分布式事务解决方案)时,可以直接使用Seata官方提供的K8s部署脚本。这个脚本会自动完成Seata镜像的拉取、配置文件的修改以及K8s部署。
    以下是部署Seata到K8s的步骤:

    1. 确保您已经正确安装并配置了K8s环境。
    2. 获取Seata的K8s部署脚本。您可以在Seata的GitHub仓库中找到这个脚本:https://github.com/seata/seata/blob/master/docs/deployment/k8s.sh
    3. 保存K8s部署脚本到您的本地计算机。
    4. 在K8s环境中执行部署脚本。运行以下命令:

    bash ./k8s.sh [options]

    其中,[options]是您需要传递给脚本的参数。这些参数包括:Seata集群的名称、Seata服务实例的名称、Seata配置文件的路径等。

    1. 脚本会自动拉取Seata镜像、创建K8s资源对象(如Deployment、Service等)并部署Seata服务。
      注意:在执行部署脚本之前,请确保您的K8s环境中已经配置了Docker镜像仓库,以便脚本可以自动拉取Seata镜像。如果您需要自定义Seata的配置文件,可以在部署脚本中传递配置文件路径参数,脚本会自动修改配置文件。
    2023-12-19 20:23:08
    赞同 展开评论 打赏

为企业提供高效、稳定、易扩展的中间件产品。

相关电子书

更多
ACK 云原生弹性方案—云原生时代的加速器 立即下载
ACK集群类型选择最佳实践 立即下载
企业运维之云原生和Kubernetes 实战 立即下载