开发者社区> 问答> 正文

如何将现有的java工程迁移到k8s?

本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。https://developer.aliyun.com/article/706511 点击链接欢迎加入感兴趣的技术领域群。

展开
收起
初商 2019-09-03 18:08:37 5179 0
1 条回答
写回答
取消 提交回答
  • 郭旭东 曾任高级研发和运维开发工程师、阿里云MVP、CCF 会员,现任凯京科技研发中心架构&运维部运维负责人,负责公司运维团队建设。热爱开源,致力于推行devops理念及相关技术,提升开发效率,提高交付质量与速度,专注于云平台的容器化实践,探索更高效的运维系统架构。

    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下的开发模式,淌坑也是必须的。

    2019-09-06 12:31:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
ACK 云原生弹性方案—云原生时代的加速器 立即下载
ACK集群类型选择最佳实践 立即下载
企业运维之云原生和Kubernetes 实战 立即下载