Docker Flink 1.7.0仪表板不显示任务统计信息
我使用Flink 1.7 dashboard并选择流媒体作业。这应该向我展示一些指标,但仍有待加载 我在Flink 1.5集群中部署了相同的作业,我可以查看这些指标。 Flink正在docker swarm中运行,但是如果我在docker compose中运行Flink 1.7(不在swarm中),它会工作 我可以这样做,删除docker-compose.yaml文件中的主机名Docker Flink 1.7.0仪表板不显示任务统计信息,docker,kubernetes,apache-flink,flink-streaming,Docker,Kubernetes,Apache Flink,Flink Streaming,我使用Flink 1.7 dashboard并选择流媒体作业。这应该向我展示一些指标,但仍有待加载 我在Flink 1.5集群中部署了相同的作业,我可以查看这些指标。 Flink正在docker swarm中运行,但是如果我在docker compose中运行Flink 1.7(不在swarm中),它会工作 我可以这样做,删除docker-compose.yaml文件中的主机名 version: "3" services: jobmanager17: image: flink:1.
version: "3"
services:
jobmanager17:
image: flink:1.7.0-hadoop27-scala_2.11
hostname: "{{.Node.Hostname}}"
ports:
- "8081:8081"
- "9254:9249"
command: jobmanager
....
我删除主机名:
version: "3"
services:
jobmanager17:
image: flink:1.7.0-hadoop27-scala_2.11
ports:
- "8081:8081"
- "9254:9249"
command: jobmanager
....
现在这些指标可以工作了,但是没有主机名
两者都有可能吗
我读了一些关于“分离模式”的东西。。。但是我不使用它我想你是在Kubernetes或docker swarm上运行你的集群。使用Kubernetes上的Flink 1.7,您需要确保任务管理器 使用其IP地址而不是 主机名。如果查看JobManager日志,您会发现许多无法联系到Taskmanager的警告 您可以通过传递定义
taskmanager.host
参数来实现这一点。示例depoyment可能如下所示:
apiVersion: extensions/v1beta1
kind: Deployment
....
spec:
template:
spec:
containers:
- name: "<%= name %>"
args: ["taskmanager", "-Dtaskmanager.host=$(K8S_POD_IP)"]
env:
- name: K8S_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
apiVersion:extensions/v1beta1
种类:部署
....
规格:
模板:
规格:
容器:
-姓名:“
args:[“taskmanager”,“-Dtaskmanager.host=$(K8S\u POD\u IP)”]
环境:
-名称:K8S_POD_IP
价值来源:
fieldRef:
现场路径:status.podIP
如果您不是在K8上运行,则可能值得尝试手动传递此参数(通过提供可从jobmanager作为taskmanager.host
访问的IP地址)
希望有帮助
更新:Flink 1.8解决了这个问题。默认情况下,属性
taskmanager.network.bind policy
设置为“ip”,这与上述解决方法的功能大致相同()谢谢您的回答。我使用docker swarm,但使用docker compose,它可以工作。这是一个线索,谢谢沙哈。够近了。我将编辑我的答案,以便其他有类似问题的人也能找到它。问题仍然发生在1.8中。我刚刚brew在macbook air上安装了flink,解决了这个问题,由提供的taskmanager.host:localhost in flink-conf.yaml.)修复。顺便说一句,我的mac电脑上运行着docker守护程序。我想macbook上的docker可能是一个稍微不同的设置。但有趣的是,ip地址在这里不起作用。我猜taskmanager只是不知道选择哪个ip(真的只是一个猜测)