在使用yarn部署flink任务时,yarn自动代理了flink web ui,通过yarn的地址即可访问任务web页面。

k8s模式下想访问flink web ui,要么使用NodePort的方式启动任务,然后通过k8s主机IP+NodePort端口来进行访问。但是这种方法,每次启动任务都是随机的NodePort端口,且生产环境默认禁用主机端口访问。

所以采用LoadBalancer的方式,来通过域名访问flink web ui

1、安装 ingress-nginx controller

helm upgrade --install ingress-nginx ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace ingress-nginx --create-namespace

安装成功后,能看到namespace ingress-nginx下启动了nginx-ingress-controller服务

2、申请域名

找运维申请域名,我这里使用的域名为:flink-ui-gj.test.yingzi.com

由于我们k8s主机上80端口被占用,ingress无法通过80端口来访问

于是通过配置kong转发请求到ingress controller,其实效果都一样

3、把第2步申请的域名配置到streampark中

4、streampark启动任务的时候Rest-Service Exposed Type选择LoadBalancer

启动任务,streampark会自动创建ingress配置,对应的path为:/flink/{job_name}/

这样就可以直接通过域名访问flink ui了,在streampark Application列表上可以直接点击跳转链接

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐