欢迎访问我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
回顾Flink KubernetesFlink Kubernetes与Flink Native Kubernetes是不同的概览,先回顾一下Flink Kubernetes:
如下图,从1.2版本到目前最新的1.10,Flink官方都给出了Kubernetes上部署和运行Flink的方案:
在kubernetes上有两种方式运行flink:session cluster和job cluster,其中session cluster是一套服务可以提交多个任务,而job cluster则是一套服务只对应一个任务;
下图是典型的session cluster部署操作,可见关键是准备好service、deployment等资源的yaml文件,再用kubectl命令创建:
先对比官方的1.9和1.10版本文档,如下图和红框和蓝框所示,可见Flink Native Kubernetes是1.10版本才有的新功能:
看看Native Kubernetes是如何运行的,如下图,创建session cluster的命令来自Flink安装包:
更有趣的是,提交任务的命令也来自Flink安装包,就是我们平时提交任务用到flink run命令,如下图:
结合官方给出的提交和部署流程图就更清晰了:kubernetes上部署了Flink Master,由Flink Client来提交session cluster和job的请求:
至此,可以小结Flink Kubernetes和Flink Native Kubernetes的区别:
Flink Kubernetes自1.2版本首次出现,Flink Native Kubernetes自1.10版本首次出现;
Flink Kubernetes是把JobManager和TaskManager等进程放入容器,在kubernetes管理和运行,这和我们把java应用做成docker镜像再在kubernetes运行是一个道理,都是用kubectl在kubernetes上操作;
Flink Native Kubernetes是在Flink安装包中有个工具,此工具可以向kubernetes的Api Server发送请求,例如创建Flink Master,并且可以和Flink Master通讯,用于提交任务,我们只要用好Flink安装包中的工具即可,无需在kubernetes上执行kubectl操作;
Flink Native Kubernetes在Flink-1.10版本中的不足之处Flink Native Kubernetes只是Beta版,属于实验性质(官方原话:still experimental),请勿用于生产环境!
只支持session cluster模式(一个常驻session执行多个任务),还不支持Job clusters模式(一个任务对应一个session)
尽管还没有进入Release阶段,但这种操作模式对不熟悉kubernetes的开发者来说还是很友好的,接下来通过实战来体验吧;
官方要求为了体验Native Kubernetes,flink官方提出了下列前提条件:
kubernetes版本不低于1.9
kubernetes环境的DNS是正常的
KubeConfig文件,并且这个文件是有权对pod和service资源做增删改查的(kubectl命令有权对pod和service做操作,也是因为它使用了对应的KubeConfig文件),这个文件一般在kubernetes环境上,全路径:~/.kube/config
pod执行时候的身份是service account,这个service account已经通过RBAC赋予了pod的增加和删除权限;
前面两点需要您自己保证已达到要求,第三和第四点现在先不必关心,后面有详细的步骤来完成;
实战环境信息本次实战的环境如下图所示,一套kubernetes环境(版本是1.15.3),另外还有一台CentOS7电脑,上面已部署了flink-1.10(这里的部署是说把安装包解压,不启动任何服务):
准备完毕,开始实战了~ 实战内容简介