1.airflow系列之K8S部署airflow2.5.1

本文记录了笔者最近基于Helm在K8S上部署airflow2.5.1版本遇到的一系列问题及最终的一键部署脚本,欢迎关注算法小生免费阅读

由于之前在airflow的使用上是单worker节点,为了支持多worker节点以及简化部署流程,特此新增了airflow-plus[命名空间也为此,防止影响目前运行的任务,稳定后任务在切换]

笔者遇到了以下问题,将会为你一一解答

  • airflow db init未执行报错问题
  • redis连接问题
  • 日志无法查看问题
  • 多woker不启动问题
  • helm upgrade问题
  • 缓存问题
  • 数据库不存在问题
  • 动态安装依赖问题

其中有些问题,官网写的比较模糊,还是直接根据问题查看源码找到对应配置会快些

1. 新建secret.yaml文件

该文件主要存放git与repo访问秘钥

apiVersion: v1
kind: Secret
metadata:name: git-credentials
type: Opaque
data:GIT_SYNC_USERNAME: XXXXXXXGIT_SYNC_PASSWORD: XXXXXXX
---
apiVersion: v1
kind: Secret
type: kubernetes.io/dockerconfigjson
metadata:name: nexus-registry-secretnamespace: airflow-plus
data:".dockerconfigjson": "XXXXXXX"

部署该文件到命名空间airflow-plus

kubectl apply -f secret.yaml --namespace airflow-plus

2. 新建values.yaml文件

该文件主要进行一些重写工作,可参照源码values.yaml

config:core:# git上dags所在的目录,配置对即可在webserver中看到dagsdags_folder: /opt/airflow/dags/repo/dags # 根据ip方式通信,默认hostname域名方式,解决访问worker节点日志无法查看问题hostname_callable: airflow.utils.net.get_host_ip_addressdefault_timezone: Asia/Shanghai
webserver:# 重写args方法,执行airflow webserver前执行airflow db init解决初始化报错问题args:- "bash"- "-c"- |-exec \airflow db init \|-exec \airflow webserverservice:type: NodePortports:- name: airflow-uiport: 8080targetPort: 8080# 浏览器访问端口映射nodePort: 30120

3. 新建uninstall.sh

主要对airflow进行一键卸载

helm delete airflow --namespace airflow-plus

4. 新建install.sh

一键安装airflow,重点来了

helm repo add apache-airflow https://airflow.apache.org
export RELEASE_NAME=airflow
# upgrade若报错helm list --namespace airflow-plus查看对应release是否存在,不存在则install,并且指定刚才的values.yaml文件
helm upgrade --install $RELEASE_NAME apache-airflow/airflow --namespace airflow-plus -f values.yaml \# K8S部署选用该Executor--set executor=CeleryKubernetesExecutor \--set defaultAirflowRepository=apache/airflow \--set airflowVersion=2.5.1 \--set data.metadataConnection.user=airflow \# pgsql密码--set postgresql.auth.postgresPassword=XXXXX \# pgsql连接IP--set data.metadataConnection.host=192.168.0.XXX \# pgsql元数据访问密码,一般与密码一致--set data.metadataConnection.pass=XXXXX  \# pgsql连接端口,根据实际进行修改--set data.metadataConnection.port=35432 \# pgsql授权用户名--set postgresql.auth.username=airflow \# pgsql授权密码,一般与密码一致--set postgresql.auth.password=XXXXX \# 外部redis连接地址,注意格式,否则连接会报错--set data.brokerUrl=redis://redis-pod.middleware:6379/0 \# 元数据连接数据库名,不存在则到pgsql中新建,否则报错--set data.metadataConnection.db=airflow_plus \# false表示使用外部pgsql--set postgresql.enabled=false \# false表示使用外部redis--set redis.enabled=false \# 由于直接在新的命名空间与新库部署,所以不需要迁移,设置为false--set triggerer.waitForMigrations.enabled=false \--set webserver.waitForMigrations.enabled=false \--set scheduler.waitForMigrations.enabled=false \# git工具仓库地址--set images.gitSync.repository=registry.cn-hangzhou.aliyuncs.com/goojia/k8s \# git版本--set images.gitSync.tag=git-sync-v3.3.0 \# 公司gitlab airflow项目地址--set dags.gitSync.repo=http://gitlab.XXXX.com/dev0/airflow.git \# 允许git同步--set dags.gitSync.enabled=true \# git同步分支--set dags.gitSync.branch=master \# git同步授权秘钥,就是secret.yaml中配置的--set dags.gitSync.credentialsSecret=git-credentials \# 其他的一些暂时用不到的先为false--set createUserJob.applyCustomEnv=false \--set createUserJob.serviceAccount.create=false \--set migrateDatabaseJob.applyCustomEnv=false \--set createUserJob.useHelmHooks=false \--set migrateDatabaseJob.enabled=false \--set migrateDatabaseJob.serviceAccount.create=false \--set migrateDatabaseJob.useHelmHooks=false \--set cleanup.serviceAccount.create=false \# workers默认为Stateful Sets,需要设置为false,才会为Deployment部署为Pod--set workers.persistence.enabled=false \# workers pod数--set workers.replicas=3 \# 开启创建默认用户job--set webserver.defaultUser.enabled=true \# 如果有对镜像改造的需求,这里授权访问公司repo#--set registry.secretName=nexus-registry-secret

至此一切OK了,./install.sh一键部署吧

5.访问airflow

http://IP:30120/, 默认用户名admin 密码admin

主页面:

日志查看:

K8S妥妥的多worker节点:

6. 总结与其他

在实操的过程中,遇到问题询问ChatGPT会省不少时间,有些ChatGPT也解答不好的话,最好下载下来Helm Chart对应版本源码,及Airflow源码,也可能会很快搜到一些有效信息

其实在用的时候,公司有自己的工具类,目前的话手工到workers中去一个个安装,即使更新也是手工修改,也尝试了通过改写父类方法每次都提前安装的方式不过没成功,任务多起来每次都要安装还不如一个个worker去安装,反正目前worker数也不多,如果你有更好的方式欢迎与我沟通交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/51311.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python怎么卸载干净重新安装

Python怎么卸载干净重新安装 Python是一种广泛使用的编程语言。但是,在更新Python版本或要重新安装Python时,如何卸载Python并在系统中保持干净呢? 在本文中,我们将介绍如何彻底卸载Python并重新安装,并提供简单易懂…

chatgpt赋能python:Python怎么完全卸载?

Python怎么完全卸载? Python是一种非常流行的编程语言,广泛用于各种应用程序和开发项目中。但是,有时候我们可能需要完全卸载Python,例如需要升级到新版本或者释放磁盘空间。本文将介绍如何彻底卸载Python。 为什么需要彻底卸载…

chatgpt赋能python:Python编程使用Pip:安装、更新、卸载Python包的最简指南

Python编程使用Pip:安装、更新、卸载Python包的最简指南 随着Python在Web开发、数据处理、机器学习、人工智能等领域的广泛应用,涌现了越来越多的Python包。这些包用于各种目的,如处理数据、绘制图形、连接数据库、发送电子邮件、处理图像、…

chatgpt赋能python:如何彻底卸载Python

如何彻底卸载Python Python 是一个非常常用的编程语言,但是有时候会遇到需要卸载 Python 的情况。本篇文章会介绍如何彻底卸载 Python,避免留下任何残留。 第一步:备份已有的包 在卸载之前,有时候需要备份一下已有的包。使用以…

chatgpt赋能python:Python卸载不干净的问题及解决方法

Python卸载不干净的问题及解决方法 Python是当前最受欢迎的编程语言之一,具有易学易用、强大的库支持和广泛的应用领域等优点。然而,当我们需要卸载Python时,有时可能会出现卸载不干净的情况,这可能会影响下一次重新安装Python或…

chatgpt赋能python:Python的卸载步骤详解

Python的卸载步骤详解 如果你正在寻找一个简单可靠的方法来卸载 Python,本篇文章将提供不同平台下彻底删除 Python 的方法。 为什么需要卸载 Python? 有以下几种情况可能需要卸载 Python: 需要在一台新计算机上安装 Python 版本的新副本&…

chatgpt赋能python:Python卸载和重新安装:完整的指南

Python卸载和重新安装:完整的指南 Python是专业开发人员和初学者之间最热门的编程语言之一。如果您是Python用户,您可能需要卸载和重新安装Python的版本,以满足您的需求。 在本文中,我们将详细介绍Python的卸载和重新安装过程&a…

两名一流高校硕士同年毕业论文高度雷同惹争议,怎么过的查重?

点击上方“3D视觉工坊”,选择“星标” 干货第一时间送达 导读: 近日,又现多起研究生论文涉嫌抄袭事件。相关高校也都对此迅速做出了回应,这也是继八月份教育部发布文件要求各高校要立即采取行动,全面复核、排查近5年&a…

“翟天临,睡了吗?”背后,查重费用疯涨10倍

本文转载自虎嗅网 近日,“翟天临,睡了吗”这一话题在社交媒体引起热议。在该话题下,有网友称“论文改的面目全非,降重还没降下去”“学校的查重费已经飙升到800了”“查重了四次还不过,翟天临你赔我的生活费”…… 24…

毕业论文人工降重

文章目录 为何要论文降重人工降重实战人工降重需求 为何要论文降重 鉴于当前毕业生论文查重的力度加大,毕业生的论文查重压力也随之增大,博主也是当事人,其中的苦和难,深有体会。那么论文查重和降重,是必不可少的环节…

论文降重必备神器

论文降重必备神器 作用原版本在线版源码地址本地使用 在论文查重时,总是出现不知道怎么降重,降低重复率呢?怎么验证降重成果呢? 这里有一个神器,广受大家好评 作用 在论文查重时,总是出现不知道怎么降重…

知乎带货怎么做?天枢知乎好物带货教程第二期

关于知乎带货最近很火,尤其是开通知乎好物推荐功能门槛也在逐步提高,从一开始的2级到现在的四级,知乎账号的价格也是跟着涨起来,不少朋友不知道知乎带货怎么做,下面这几套课程很实用,尤其是天枢知乎带货教程…

想把半本《红楼梦》搬进ChatGPT输入框?先把这个问题解决掉

点击上方“AI遇见机器学习”,选择“星标”公众号 第一时间获取价值内容 来自:机器之心 从 GPT-4 的 32k 到谷歌 CoLT5 的 64k 再到最新研究的 200万 token,类ChatGPT 模型们可以处理的文本长度正在急剧增加,这意味着它们的应用范围…

结合ChatGPT,告诉你如何在制药行业推行PACE与IPD!

最近爆红于网络的ChatGPT是一种大型的语言模型,用于对自然语言输入进行建模和预测。它是基于OpenAI的GPT-3架构进行构建的,并经过训练,以便能够回答人类的问题并进行自然对话。通常,这种技术被用于实现聊天机器人或人工智能助手&a…

jieba词频统计、关键词提取、词云图制作

1、jieba分词及词频统计 import jieba import pandas as pd# 加载自定义分词词典(txt内容格式:自定义关键词空格空格 ----->换行继续) jieba.load_userdict("./dict.txt")content open(./测试.txt,encodingutf-8).read() #分…

textrank提取关键词与关键句

最近在用pg进行全文检索,如果检索全文则速度会慢,考虑可以检索关键句以提高速度。测试了一下textrank提取关键句,目前的思想是用全文提取关键词和关键句提取关键词进行比较,以评估关键句的提取。(提取关键词的方法现在…

中文文本中的关键字提取

关键词提取就是从文本里面把跟这篇文章意义最相关的一些词语抽取出来。这个可以追溯到文献检索初期,关键词是为了文献标引工作,从报告、论文中选取出来用以表示全文主题内容信息的单词或术语,在现在的报告和论文中,我们依然可以看…

关键词提取-TFIDF(一)

系列文章 ✓ 词向量 ✗Adam,sgd ✗ 梯度消失和梯度爆炸 ✗初始化的方法 ✗ 过拟合&欠拟合 ✗ 评价&损失函数的说明 ✗ 深度学习模型及常用任务说明 ✗ RNN的时间复杂度 ✗ neo4j图数据库 分词、词向量 TfidfVectorizer 基本介绍 TF-IDF是一种统计方法,用…

hanlp关键词提取算法TextRank

欢迎关注鄙人公众号,技术干货随时看! 技术交流qq群: 659201069 鄙人的新书《elasticsearch7完全开发指南》,欢迎订阅! https://wenku.baidu.com/view/8ff2ce94591b6bd97f192279168884868762b8e7 《kibana权威指南…

Jieba进行词频统计与关键词提取

文章目录 1 词频统计1.1 简单词频统计1.2 加入停用词 2 关键词提取2.1 关键词提取原理2.2 关键词提取代码 1 词频统计 1.1 简单词频统计 导入jieba库并定义文本 import jieba text "Python是一种高级编程语言,广泛应用于人工智能、数据分析、Web开发等领域…