Airbyte中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 最新
    • 标签
    • 热门
    • 用户
    • 群组
    • 达之云

    入湖入仓,数据传输管道。开源软件Airbyte中文社区

    微信号:AirbyteCN

    QQ群:114917858

    k8s环境下部署airbyte

    安装部署
    1
    1
    2597
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • D
      dazdata 最后由 编辑

      k8s环境搭建

      测试推荐使用k3s,生产建议使用云服务商提供的k8s服务(如GKS,EKS,AKS),或者通过kubeadmin进行搭建。

      (可选,按需操作)日志配置

      默认配置

      Airbyte 的k8s部署自带了一个单节点的Minio环境,默认情况下所有的日志都会推送到这个Minio节点。
      如果想要将日志推送到本地的Minio节点,请确保指定的认证用户同时具备读和写的权限。

      自定义配置

      Airbyte 支持将日志推送到Minio节点,S3存储桶 和GCS存储桶

      1. 配置推送到本地的Minio节点。
        想要将日志推送到本地的Minio节点,用户需要修改kube/overlays/stable(位于airbyte安装目录)目录下的.env文件,修改以下字段。
        S3_LOG_BUCKET=<your_minio_bucket_to_write_logs_in>
        AWS_ACCESS_KEY_ID=<your_minio_access_key>
        AWS_SECRET_ACCESS_KEY=<your_minio_secret_key>
        S3_MINIO_ENDPOINT=<endpoint_where_minio_is_deployed_at>
        #S3_LOG_BUCKET_REGION设置为空
        S3_LOG_BUCKET_REGION=
        S3_PATH_STYLE_ACCESS=true
        
      2. 配置推送到S3存储桶
        如果想将日志推送至S3,使用 AWS 凭证创建一个新的 S3 存储桶。
      • 修改kube/overlays/stable/.env(可以在启动 Airbyte 的位置找到该目录)下的以下环境变量。
        S3_LOG_BUCKET=<your_s3_bucket_to_write_logs_in>
        S3_LOG_BUCKET_REGION=<your_s3_bucket_region>
        #S3_MINIO_ENDPOINT设置为空
        S3_MINIO_ENDPOINT=
        #S3_PATH_STYLE_ACCESS设置为空
        S3_PATH_STYLE_ACCESS=
        
      • 修改kube/overlays/stable/.secrets(可以在启动 Airbyte 的位置找到该目录)下的以下环境变量。
        AWS_ACCESS_KEY_ID=<your_aws_access_key_id>
        AWS_SECRET_ACCESS_KEY=<your_aws_secret_access_key>
        

      部署airbyte

      1. 拉取airbyte代码,并进入airbyte目录

        git clone https://github.com/airbytehq/airbyte.git
        cd airbyte
        
      2. (可选,按需操作)修改airbyte部署的命名空间,默认为default命名空间。修改kube/overlays/stable/kustomization.yaml,将namespace字段改为想要安装到的对应命名空间。

      3. 拉起airbyte服务。

        kubectl apply -k kube/overlays/stable
        
      4. 检查airbyte所有服务状态。

        #查看所有的服务。如果修改了命名空间,将default改为对应的命名空间。
        kubectl get pod -n default |grep airbyte
        
      5. 部署完成,查看webapp服务的node port,通过node port 访问airbyte。访问地址http://k8s-node-ip:node-port

        #获取airbyte-webapp的node port。如果修改了命名空间,将default改为对应的命名空间。
        kubectl get svc -n default  |grep airbyte-webapp-svc|awk '{print $5}'|awk -F: '{print $2}'
        

      生产环境部署

      设置pod资源限制
      • 核心容器pod:

        • 要为核心pod提供不同的资源配置,可以在kube/overlays/stable-with-resource-limits/set-resource-limits.yaml文件中设置资源限制
        • 要使用带资源限制的配置, 部署的时候请使用kubectl apply -k kube/overlays/stable-with-resource-limits这个命令
      • 连接器容器pod:

        • 默认情况下,连接器的pod在拉起的时候是没有资源限制的。要配置资源限制,请修改kube/overlays/stable/.env 或kube/overlays/stable-with-resource-limits/.env (根据你需要启动的配置决定)
      • 卷容量:

        • To specify different volume sizes for the persistent volume backing Airbyte, modify kube/resources/volume-* files.
        • 想要给pv指定不同的容量,请修改 kube/resources/ 目录下 volume 开头的资源配置文件。
      提高job并发能力

      运行并行job(如获取规范、检查连接、刷新schema和执行同步)的能力受到几个因素的限制。所有的job都由Airbyte-worker-pods消费并执行。增加worker的数量将允许处理更多的job。

      要创建更多 worker pod,需增加airbyte-worker部署的副本数。可以参考 Kustomization 补丁中增加 worker pod 的例子,在以下两个目录airbyte/kube/overlays/dev-integration-test/kustomization.yaml和airbyte/kube/overlays/dev-integration-test/parallelize-worker.yaml

      要通过.env限制暴露的端口,需要配置环境变量TEMPORAL_WORKER_PORTS的值。您可以在每个暴露的端口并行运行job。如果您没有足够的端口进行通信,job可能无法完成或暂停,直到有端口可用为止。

      用户也可以为 Pod 上运行的最大并行job设置限制。可以配置MAX_SPEC_WORKERS、MAX_CHECK_WORKERS、MAX_DISCOVER_WORKERS和MAX_SYNC_WORKERSworker这四个环境变量。这些需要配置到pod deployment里,而不是.env。用户可以使用这些变量给不同的类型的worker配置不用的资源限制。

      云日志

      Airbyte 将日志写入两个不同的目录:app-logging目录和job-logging目录。应用程序日志、服务器日志和调度程序日志将写入该app-logging目录。作业日志写入job-logging目录。这两个目录都位于顶层。例如,应用程序日志目录可能位于s3://log-bucket/app-logging. 我们建议使用专用的日志记录桶,不要将其用于其他目的。

      Airbyte每分钟发布一次日志,所以日志延迟一分钟很正常。Cloud Storages 不支持追加操作。每个发布者都会创建自己的日志文件,这意味着您的日志存储桶中将有数百个文件。

      每个日志文件都未压缩,并命名为{yyyyMMddHH24mmss}{podname}{UUID}。要查看日志,请到相关文件夹并下载所需时间段的文件。

      使用外部数据库

      用户可以使用外部的Postgres数据库替换k8s中使用的单节点Postgres数据。如果需要替换,只需要修改kube/overlays/stable/.env 或kube/overlays/stable-with-resource-limits/.env (根据你需要启动的配置决定)中DB相关的环境变量。

      运维指南

      1. 查看 API server 日志

        kubectl logs deployments/airbyte-server
        
      2. 查看连接器日志
        可以通过查看调度程序日志来访问所有日志。至于连接器容器日志,使用 Airbyte UI 或 Airbyte API 将它们隔离以用于特定的作业尝试并更容易理解。Airbyte 启动的连接器 pod 不会将日志直接中继到 Kubernetes 日志记录。您必须通过 Airbyte 访问这些日志。

      3. 修改卷容量
        要修改卷容量,请修改.spec.resources.requests.storage value。然后重新apply。对于生产环境,需要跟踪卷的使用情况以确保它们不会被完全占满

      4. 从卷数据拷贝数据到本地,使用kubectl cp命令进行操作

      5. 列出连接器日志文件

        #请将容器name当前环境的容器name
        kubectl exec -it airbyte-server-6b5747df5c-bj4fx ls /tmp/workspace/8
        
      6. 读取连接器日志文件

        #请将容器name当前环境的容器name
        kubectl exec -it airbyte-server-6b5747df5c-bj4fx cat /tmp/workspace/8/0/logs.log
        
      1 条回复 最后回复 回复 引用 0
      • First post
        Last post