flink1.13于5月4日发布,版本迭代之快,更是体现了其势不可挡的发展速度。社区活跃度逐步攀升,当然少不了与云原生等技术的集成。 本文主要讲解flink的原生k8s application模式部署步骤,原生k8本质上是flink内部集成了k8s,能够做到Taskmanager的弹性伸缩。
而之所以采用application模式部署,是因其规避了session模式的资源隔离问题、per-job模式的集群生命周期问题,以及两者共同的客户端资源消耗问题,也因其显著优点被广泛用于生产环境。
1.准备
Kubernetes版本大于等于1.9。
可以访问列表,创建,删除容器和服务,可以通过进行配置
~/.kube/config
。您可以通过运行来验证权限kubectl auth can-i <list|create|edit|delete> pods
。-
启用Kubernetes DNS。
- RBAC:d
efault service account
具有创建,删除Pod的权限。
- RBAC:d
kubectl create clusterrolebinding flink-role --clusterrole=edit --serviceaccount=namespacwe:default
2. Flink镜像制作及推送
dockerfile如下:
FROM flink:1.12
COPY dataprocess-0.0.1-SNAPSHOT.jar $FLINK_HOME/
3.部署flink client(client上云)
4.部署jobmanager、taskmanager
进入flink-client pod内部
执行如下命令:
flink run-application \
--target kubernetes-application \
-Dkubernetes.namespace=xxx \
-Dkubernetes.cluster-id=jobmanager-application \
-Dkubernetes.rest-service.exposed.type=NodePort \
-Dkubernetes.container.image=10.4.xx.xx/library/flink:dhf \
-Dkubernetes.container.image.pull-policy=Always local:///opt/flink/dataProcess-0.0.1-SNAPSHOT-jar-with-dependencies.jar \
-kafkaBroker "192.168.xx.xx:9092,192.xx.xx.227:9093,192.168.xx.xx:9094" \
-kafkaSchemaTopic connector9 \
-kafkaDataTopics "connector9.dhf1.tab1,connector9.dhf1.test"
最后三行为向jar包传递的自定义参数
执行命令后会自动 1个jobmanager、1个或多个taskmanager。
5.程序监控
jobmanager、taskmanager均有日志输出用于查看程序执行进程。
也可通过k8s master节点ip加上图中暴露的端口7447访问flink dashboard.
关注公众号HEY DATA,添加作者微信,一起讨论更多。