kubernetes吊舱和气流工人日志的DNS ➜ k得到豆荚-n埃德娜 名称就绪状态重新启动 气流-79d5f59644-dd4k7 1/1运行0 16小时 气流-worker-67BCF784B-rq7r8 1/1运行0 22小时 后端-65bcb6546-wvvqj 1/1运行0 2d16h
因此,在airflow-79d5f59644-dd4k7pod中运行的airflow正在尝试从airflow worker(芹菜/python,它运行一个简单的基于烧瓶的Web服务器来处理日志)中提取日志因为域名aiffair-worker-67bcf7844b-rq7r8未在aiffair-79d5f59644-dd4k7内部解析kubernetes吊舱和气流工人日志的DNS ➜ k得到豆荚-n埃德娜 名称就绪状态重新启动 气流-79d5f59644-dd4k7 1/1运行0 16小时 气流-worker-67BCF784B-rq7r8 1/1运行0 22小时 后端-65bcb6546-wvvqj 1/1运行0 2d16h,kubernetes,airflow,airflow-worker,kubernetes-dns,Kubernetes,Airflow,Airflow Worker,Kubernetes Dns,因此,在airflow-79d5f59644-dd4k7pod中运行的airflow正在尝试从airflow worker(芹菜/python,它运行一个简单的基于烧瓶的Web服务器来处理日志)中提取日志因为域名aiffair-worker-67bcf7844b-rq7r8未在aiffair-79d5f59644-dd4k7内部解析 *** Log file does not exist: /usr/local/airflow/logs/hello_world/hello_task/2020-0
*** Log file does not exist: /usr/local/airflow/logs/hello_world/hello_task/2020-07-14T22:05:12.123747+00:00/1.log
*** Fetching from: http://airflow-worker-67bcf7844b-rq7r8:8793/log/hello_world/hello_task/2020-07-14T22:05:12.123747+00:00/1.log
*** Failed to fetch log file from worker. HTTPConnectionPool(host='airflow-worker-67bcf7844b-rq7r8', port=8793): Max retries exceeded with url: /log/hello_world/hello_task/2020-07-14T22:05:12.123747+00:00/1.log (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fd37d6a9790>: Failed to establish a new connection: [Errno -2] Name or service not known'))
进入气流-79d5f59644-dd4k7舱内
k exec -ti -n edna airflow-79d5f59644-dd4k7 bash
If a pod A wants to communicate to pod B, pod B has to be exposed with a service svc-b.
Then pod A can communicate with the svc-b.
This is the rule.
For your case, pod B is airflow-worker-67bcf7844b-rq7r8 :
kubectl -n edna expose airflow-worker-67bcf7844b-rq7r8 \
--name airflow-worker \
--port 8793 \
--target-port 8793
k exec-ti-n edna气流-79d5f59644-dd4k7 bash
如果一个吊舱a想要与吊舱B通信,吊舱B必须公开一个服务svc-B
然后,吊舱A可以与svc-b通信
这是规则
对于您的情况,B舱为airflow-worker-67bcf7844b-rq7r8:
env:
- name: AIRFLOW__CORE__HOSTNAME_CALLABLE
value: 'airflow.utils.net:get_host_ip_address'
现在可以随意使用curl-L了http://airflow-worker:8793/
而不是curl-Lhttp://airflow-worker-67bcf7844b-rq7r8:8793/
如果一个吊舱a想要与吊舱B通信,吊舱B必须公开一个服务svc-B
然后,吊舱A可以与svc-b通信
这是规则
对于您的情况,B舱为airflow-worker-67bcf7844b-rq7r8:
env:
- name: AIRFLOW__CORE__HOSTNAME_CALLABLE
value: 'airflow.utils.net:get_host_ip_address'
现在可以随意使用curl-L了http://airflow-worker:8793/
而不是curl-Lhttp://airflow-worker-67bcf7844b-rq7r8:8793/
解决方案
为worker pod的deployment.yaml提供以下ENVAIRFLOW\uuuuuu CORE\uuuuuuuuuuuuuuuuuuhostname\u CALLABLE:
或者只是改变气流.cfg
然后气流正试图通过POD的IP访问,如果您的POD暴露端口8793解决方案
为worker pod的deployment.yaml提供以下ENVAIRFLOW\uuuuuu CORE\uuuuuuuuuuuuuuuuuuhostname\u CALLABLE:
或者只是改变气流.cfg
然后airflow尝试通过POD的IP访问,如果您的POD暴露端口8793,则一切正常。我这样做了,但airflow不知道这样的服务(和DNS名称)存在。并尝试通过芹菜报告的POD的主机名进行访问。下面的命令显示了什么kubectl-n edna exec-it aifflow-worker-67bcf7844b-rq7r8--curl-Lhttp://localhost:8793/log/hello_world/hello_task/2020-07-14T21:59:01.400678+00:00/1.log
?请按原样复制/粘贴它。命令的输出是我这样做的,但我不知道这样的服务(和DNS名称)存在。并尝试通过芹菜报告的POD的主机名进行访问。下面的命令显示了什么kubectl-n edna exec-it aifflow-worker-67bcf7844b-rq7r8--curl-Lhttp://localhost:8793/log/hello_world/hello_task/2020-07-14T21:59:01.400678+00:00/1.log
?请按原样复制/粘贴。命令的输出