1 前言
Spring Cloud Data Flow
在本地跑得好好的,为什么要部署在Kubernetes
上呢?主要是因为Kubernetes
能提供更灵活的微服务管理;在集群上跑,会更安全稳定、更合理利用物理资源。
Spring Cloud Data Flow
入门简介请参考:Spring Cloud Data Flow初体验,以Local模式运行
2 部署Data Flow到Kubernetes
以简单为原则,我们依然是基于Batch
任务,不部署与Stream
相关的组件。
2.1 下载GitHub代码
我们要基于官方提供的部署代码进行修改,先把官方代码clone下来:
我们切换到最新稳定版本的代码版本:
2.2 创建权限账号
为了让Data Flow Server
有权限来跑任务,能在Kubernetes
管理资源,如新建Pod
等,所以要创建对应的权限账号。这部分代码与源码一致,不需要修改:
(1)server-roles.yaml
(2)server-rolebinding.yaml
(3)service-account.yaml
执行以下命令,创建对应账号:
执行完成后,可以检查一下:
2.3 部署MySQL
可以选择其它数据库,如果本来就有数据库,可以不用部署,在部署Server
的时候改一下配置就好了。这里跟着官方的Guide来。为了保证部署不会因为镜像下载问题而失败,我提前下载了镜像:
MySQL
的yaml
文件也不需要修改,直接执行以下命令即可:
执行完后检查一下:
2.4 部署Data Flow Server
2.4.1 修改配置文件server-config.yaml
删除掉不用的配置,主要是Prometheus
和Grafana
的配置,结果如下:
2.4.2 修改server-svc.yaml
因为我是本地运行的Kubernetes
,所以把Service
类型从LoadBalancer
改为NodePort
,并配置端口为30093
。
2.4.3 修改server-deployment.yaml
主要把Stream
相关的去掉,如SPRING_CLOUD_SKIPPER_CLIENT_SERVER_URI
配置项:
2.4.4 部署Server
完成文件修改后,就可以执行以下命令部署了:
执行完成,没有错误就可以访问:http://localhost:30093/dashboard/
3 运行一个Task
检验是否部署成功最简单的方式就是跑一个任务试试。还是按以前的步骤,先注册应用,再定义Task
,然后执行。
我们依旧使用官方已经准备好的应用,但要注意这次我们选择是的Docker
格式,而不是jar
包了。
成功执行后,查看Kubernetes
的Dashboard
,能看到一个刚创建的Pod
:
4 总结
本文通过一步步讲解,把Spring Cloud Data Flow
成功部署在了Kubernetes
上,并成功在Kubenetes
上跑了一个任务,再也不再是Local
本地单机模式了。
官方参考资料:kubectl install