Docker Flink 1.7.0仪表板不显示任务统计信息

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.

我使用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.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(真的只是一个猜测)