如何将现有的java工程迁移到k8s?
Java应用迁移到 k8s集群,主要涉及应用容器化、k8s容器编排以及java应用访问并不是一个简单宽泛的问题。
在迁移之前需要考虑如下问题:
之前java应用是否有容器化,没有的话需要先将之容器化,将应用制作为docker镜像,存储到镜像仓库镜像仓库选择,因为业务镜像都是私有镜像,而且dockerhub与国内还有网络延迟问题,如果应用k8s集群在阿里云,推荐使用阿里云镜像仓库,可以直接使用VPC内网地址拉取镜像;或者自己搭建harbor镜像仓库k8s集群的选择,是阿里云容器服务,还是在ECS上自己搭建K8S集群,这里推荐阿里云容器服务托管版,master节点是免费提供的使用的java框架,是使用的Spring Cloud 还是 dubbo ,还是其他的,这步很重要,涉及到容器环境下的网络调用模式及服务访问方式服务的资源分配、Java应用很吃内存,需要确定JVM配置,根据JVM配置来手动配置K8S资源,或者设置JVM自动获取,但是要升级java版本,使其可以正确获取容器内的资源服务的访问方式,是http访问还是RPC调用,K8S自动服务发现,但是像dubbo这样的框架也都带有服务发现,这里就要确定是使用K8S自带的还是使用框架的,这里推荐使用原来的,这样代码修改量想,更好迁移如何访问集群,这里推荐使用nginx-ingress来统一接受k8s集群外的访问,nginx-ingress使用的很广泛并且配置简单,易于使用
上面介绍的都只是迁移之前需要考虑的问题,具体迁移的问题有很多,并不是一个问答能解决的,同时也需要开发和运维人员去适应K8S下的开发模式,淌坑也是必须的。
赞0
踩0