Apache Flink SQL Client 无法连接到 EKS 集群中的 JobManager 实例

问题描述 投票:0回答:1

我已经按照https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/resource-providers/standalone/kubernetes/#session-mode在 Kubernetes 上部署了 Apache Flink 会话模式,并且尚未将 sql 客户端连接到 JobManager 实例。

我尝试将conf/flink-conf.yaml中的

jobmanager.rpc.address
更改为
localhost
以及
jobmanager
flink-jobmanager
flink-jobmanager-<k8s pod id>
。我还尝试将 FLINK_PROPERTIES 环境变量更新为上述 4 个值中的每一个,但当我创建表并在其上运行
select ...
时,仍然看不到 JobManager 实例的输出。

作为参考,我能够运行

kubectl port-forward flink-jobmanager-<k8s pod id> 8081:8081
,然后通过导航到
localhost:8081
从浏览器打开 Flink Web UI。

apache-flink flink-streaming flink-sql
1个回答
0
投票

我最终通过使用另一个专门针对 sql 客户端的作业模板来解决这个问题,以便它拉入 flink ConfigMap。只是分享给下一个有类似问题的人 -

apiVersion: batch/v1
kind: Job
metadata:
  name: flink-sql-client
spec:
  template:
    metadata:
      labels:
        app: flink
        component: sql-client
    spec:
      containers:
      - name: sql-client
        image: <image>
        command: [ "/bin/bash", "-c", "--" ]
        args: [ "while true; do sleep 30; done;" ]
        volumeMounts:
        - name: flink-config-volume
          mountPath: /opt/flink/conf/
        securityContext:
          runAsUser: 9999  # refers to user _flink_ from official flink image, change if necessary
      restartPolicy: Never
      volumes:
      - name: flink-config-volume
        configMap:
          name: flink-config
          items:
          - key: flink-conf.yaml
            path: flink-conf.yaml
          - key: log4j-console.properties
            path: log4j-console.properties

然后(在其他 yaml 之后这里),

kc create sql-client.yaml
kc exec --stdin --tty flink-sql-client-<assigned pod id> -- /bin/bash
bin/sql-client.sh

这应该创建一个永不消亡的作业,并由其他 flink 组件使用 ConfigMap。

© www.soinside.com 2019 - 2024. All rights reserved.