kubernetes吊舱和气流工人日志的DNS ➜ k得到豆荚-n埃德娜 名称就绪状态重新启动 气流-79d5f59644-dd4k7 1/1运行0 16小时 气流-worker-67BCF784B-rq7r8 1/1运行0 22小时 后端-65bcb6546-wvvqj 1/1运行0 2d16h

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

因此,在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-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
?请按原样复制/粘贴。命令的输出