配置管理-airflow对接k8s集群,配置connect k8s

72 阅读1分钟

需求

已有airflow v3.0.6环境,且部署在单独的服务器。已有多个k8s集群,需将k8s对接到airflow,将k8s集群连接到airflow进行使用。

配置方法

在k8s集群操作,创建专用namespace

root@i-hasfh0db:/opt# kubectl create ns airflow
namespace/airflow created

查询kubeconfig

root@i-102dt653:/opt# 
python3 -c "import yaml, json; print(json.dumps(yaml.safe_load(open('/root/.kube/config')), indent=2))" > kubeconfig.json

web界面访问airflow,配置connection, image.png

特殊情况,若airflow部署在k8s环境,且要将此k8s环境接入airflow,需勾选下图所示配置, image.png

重点关注,配置冲突,下图所示,这几个配置不能同时使用,kubeconfig不能和cluster context同时填写。kubeconfig path也是如此。 image.png

否则会有以下故障, image.png

填写配置参考如下,
namespace自定义,指定一个已有的专用namespace给airflow。
kube config部分,务必复制前步骤生成的kubeconfig.json内容。"server":部分的域名若无法被airflow所在服务器访问,则应改写为k8s master node服务器IP地址。
connection ID全局唯一,务必填写辨识度高的,后续一定会用到。 image.png

测试连接状态

配置完成后,需在airflow所在机器测试连接状态。

查询连接清单

root@0c00f90d4191:/opt/airflow# 
airflow connections list

测试连接状态
若容器部署airflow,需进入容器内测试。
test.nifi.shanhe是connection ID。

root@airflow Thu Sep 18 [15:07:34] : /opt/airflow
# docker exec -it airflow-airflow-worker-1 bash
root@b4f0c05e4474:/opt/airflow# 
airflow connections test test.nifi.shanhe

若连接成功,可见下图所示,受限airflow当前版本能力,无法在web界面测试查看连接状态。 image.png