写点什么

京东如何从 OpenStack 迁移至 Kubernetes

2017 年 3 月 16 日

中国最大电商公司之一的京东,最近分享了自己通过 Kubernetes 对基于应用程序容器的基础架构进行革新,取代 OpenStack 托管的 IaaS 基础架构过程中所获得的经验。本次迁移同时涉及内部网络组件,借此可将资源利用率提高30%。

在采用应用程序容器技术之前,京东的基础架构部署经历了两个阶段:物理机(2004 – 2014)以及操作系统容器(2014 – 2016)。第一阶段主要使用手工管理的裸机硬件,但这一阶段遇到了很多问题,例如上线前的准备时间过长(从分配到应用程序上线约需要一周时间),缺乏隔离机制,资源利用率不足,调度机制不够灵活。计算机失败后往往需要花费数小时迁移应用,且缺乏自动缩放能力。工程团队针对日志收集、自动化部署、编译和打包,以及资源监视等常用任务开发了内部工具。

京东基础架构的第二阶段开始采用容器技术。当时使用了操作系统容器,这意味着需要将现有应用程序和部署架构整体迁入容器中。当时的容器可以看作是对他们原本采用的物理机进行精简后一种运行速度更快的“物理机”,并未采用已经完全成熟的“容器哲学”。

尽管如此,通过采用容器技术,他们已经在第二阶段从时间和资源的使用率方面获得了巨大的收益。当时他们使用OpenStack 作为编排层,并使用 nova Docker 驱动实现容器的管理。该团队选择 Docker 作为自己的容器平台,并逐渐向其中增添新的功能。所有应用陆续迁移到容器中,借此将计算资源请求的实现时间从原本的一周缩短至几分钟。应用程序的平均部署密度和物理机的利用率提升了三倍。该团队还针对部署任务构建了统一的 API,公司内部将其称之为 JDOS(JD Datacenter Operating System)1.0。

他们基于 OpenStack 的平台通过一个群集承载了大约 4000 至 10000 个计算节点。截至 2016 年 11 月,京东团队共运行了将近 150,000 个容器。这个平台帮助他们顺利度过了两次大流量在线促销活动,包括 2016 年双十一活动,共完成大约 3 千万个订单。

在第二阶段迁移至容器技术后,该工程团队已经可以对部署架构进行改动,使用容器作为基本的部署单位。公司内部将其称之为 JDOS 2.0。这个方法关注的并非基础架构本身的管理,而在于可感知应用程序的容器管理。他们的平台设计包含两个抽象:系统和应用程序。一个“系统”可包含多个“应用程序”,每个应用程序可包含多个提供相同服务的 Pod。一个系统对应着一个 Kubernetes 名称空间

其他组件还包括部署流程和容器化的 DevOps 工具,这些内容均部署在 Kubernetes 管理的平台上,此外还包括 Gitlab、Jenkins、Logstash、Harbor、Elasticsearch,以及 Prometheus 。部署过程中,源代码和 Dockerfile 会被推送至代码库和 Jenkins 构建。Jenkins 被配置为主从模式,其中从节点负责构建和打包应用程序,此外还有一个类似的节点负责构建容器映像。他们使用了 Harbor 这一开源的Docker 注册表存储所创建的映像。

图片来源: http://blog.kubernetes.io/2017/02/inside-jd-com-shift-to-kubernetes-from-openstack.html

为了在 Kubelets 和 OpenStack Neutron 之间实现更好的集成,京东根据 Container Networking Interface 标准自行开发了一个名为 Cane 的解决方案。在创建、删除或修改 Kubernetes 负载均衡器后,Cane 可以通知 Neutron 负载均衡即服务( LBaaS )系统。此外他们通过在 Cane 内部运行的 Hades 组件为 Pod 提供内部的 DNS 解析服务。

阅读英文原文 How JD.com Moved to Kubernetes from OpenStack

2017 年 3 月 16 日 19:005263
用户头像

发布了 283 篇内容, 共 87.8 次阅读, 收获喜欢 41 次。

关注

评论

发布
暂无评论
发现更多内容

跨年巨作!13万字!腾讯高工纯手写“JDK源码笔记”直接带你飙向实战

比伯

Java 编程 架构 面试 计算机

软件测试——网络协议知识(二)

测试人生路

软件测试 网络通信协议

华为18级大牛手撸七百多页MySQL数据库性能调优、架构设计手册!

Java成神之路

Java 程序员 架构 面试 编程语言

北京一咖啡店启动数字人民币应用场景测试 店员:目前处于内测阶段

CECBC区块链专委会

数字人民币

技术干货 | 六分钟学会使用 HBuilder 引入构建 mPaaS 小程序

蚂蚁集团移动开发平台 mPaaS

小程序 uni-app mPaaS

实用流程工具,浅析LR.NET配置型工作流引擎

雯雯写代码

.net 工作流

Java中的常量

cdhqyj

Java

云挖矿APP系统开发|云挖矿软件开发

开發I852946OIIO

系统开发

重新发现科技与人文的互动

脑极体

LeetCode题解:239. 滑动窗口最大值,二叉堆,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

RPC Demo(二) 基于 Zookeeper 的服务发现

Java zookeeper RPC 服务发现

令数字起舞,让自然微笑:TECH4ALL的2020启示录

脑极体

第一张区块链完税证明在深圳开出,区块链政务应用再获突破

CECBC区块链专委会

区块链 电子证明

百度京Fun生活节 双旦福利HIGH 翻全城

DT极客

IPFS分布式存储矿机系统APP软件开发

开發I852946OIIO

系统开发

如何使用mock应对测试所需随机数据

华为云开发者社区

测试 数据 Mock

写出一手烂代码的19条准则

Java架构师迁哥

破除数据垄断,数据上链或是关键

CECBC区块链专委会

区块链 大数据

通达同城快递设计方案

garlic

架构师训练营第 1 期

爆赞!P8架构师总结29篇多线程与高并发+设计模式核心笔记

Java架构追梦

Java 学习 架构 面试 多线程高并发

差距不止一点点!Github星标51K的性能优化文档也太香了

程序员小毕

Java 程序员 性能优化 JVM 设计模式

程序员:我非常熟练多线程!面试官:你熟悉个屁!

Java成神之路

Java 程序员 架构 面试 编程语言

爆赞!GitHub上收获Star数排名前10的Java项目爆赞!

Java成神之路

Java 程序员 架构 面试 编程语言

Flink Forward Asia 2020 -- Keynote 总结

Apache Flink

flink

测开之函数进阶· 第6篇《闭包》

清菡

测试开发

ClickHouse利器—如何提高留存计算速度

行者AI

数据库

架构师训练营大作业

Gosling

架构师训练营第 1 期

近些年有哪些口碑炸裂的项目管理工具?各具特色的项目管理工具我们该如何选择?

PingCode

项目管理 程序人生

Rust布道者张汉东倾授,入门Rust初学者都要攻破哪些难点?

华为云开发者社区

学习 rust 语言

Linux基本操作命令

行者AI

Linux

送你一份迷你书,全面了解如何做好大促技术备战

京东科技开发者

DevOps

新晋管理者都会遇到的6个问题

新晋管理者都会遇到的6个问题

京东如何从OpenStack迁移至Kubernetes-InfoQ