【发布时间】:2020-09-06 04:45:30
【问题描述】:
我的气流服务作为 kubernetes 部署运行,并且有两个容器,一个用于webserver,一个用于scheduler。
我正在使用带有in_cluster=True 参数的KubernetesPodOperator 运行任务,它运行良好,我什至可以kubectl logs pod-name 并显示所有日志。
但是,airflow-webserver 无法获取日志:
*** Log file does not exist: /tmp/logs/dag_name/task_name/2020-05-19T23:17:33.455051+00:00/1.log
*** Fetching from: http://pod-name-7dffbdf877-6mhrn:8793/log/dag_name/task_name/2020-05-19T23:17:33.455051+00:00/1.log
*** Failed to fetch log file from worker. HTTPConnectionPool(host='pod-name-7dffbdf877-6mhrn', port=8793): Max retries exceeded with url: /log/dag_name/task_name/2020-05-19T23:17:33.455051+00:00/1.log (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fef6e00df10>: Failed to establish a new connection: [Errno 111] Connection refused'))
似乎 pod 无法连接到端口 8793 上的气流日志服务。如果我 kubectl exec bash 进入容器,我可以在端口 8080 上 curl localhost,但不能在 80 和 8793 上。
Kubernetes 部署:
# Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: pod-name
namespace: airflow
spec:
replicas: 1
selector:
matchLabels:
app: pod-name
template:
metadata:
labels:
app: pod-name
spec:
restartPolicy: Always
volumes:
- name: airflow-cfg
configMap:
name: airflow.cfg
- name: dags
emptyDir: {}
containers:
- name: airflow-scheduler
args:
- airflow
- scheduler
image: registry.personal.io:5000/image/path
imagePullPolicy: Always
volumeMounts:
- name: dags
mountPath: /airflow_dags
- name: airflow-cfg
mountPath: /home/airflow/airflow.cfg
subPath: airflow.cfg
env:
- name: EXECUTOR
value: Local
- name: LOAD_EX
value: "n"
- name: FORWARDED_ALLOW_IPS
value: "*"
ports:
- containerPort: 8793
- containerPort: 8080
- name: airflow-webserver
args:
- airflow
- webserver
- --pid
- /tmp/airflow-webserver.pid
image: registry.personal.io:5000/image/path
imagePullPolicy: Always
volumeMounts:
- name: dags
mountPath: /airflow_dags
- name: airflow-cfg
mountPath: /home/airflow/airflow.cfg
subPath: airflow.cfg
ports:
- containerPort: 8793
- containerPort: 8080
env:
- name: EXECUTOR
value: Local
- name: LOAD_EX
value: "n"
- name: FORWARDED_ALLOW_IPS
value: "*"
注意:如果气流在开发环境(本地而不是 kubernetes)中运行,则一切正常。
【问题讨论】:
-
您正在使用来自哪个 pod 的
kubectl exec bash?请描述您正在测试的确切内容。 -
我尝试进入airflow pod,webserver和scheduler容器都一样,结果都一样。
-
你用过什么指南,可以分享一下吗?我可以尝试重新创建您的集群和部署。您还可以确保两个 pod 上的 8793 端口都打开。
-
集群已经配置好了,但是我在这里使用命令kubernetes.io/docs/tasks/access-application-cluster/…检查了端口,两个容器上的端口8080和8793都返回了
标签: logging kubernetes airflow kubernetes-pod