全栈算力,加速行业AI落地 了解详情
写点什么

京东如何从 OpenStack 迁移至 Kubernetes

  • 2017-03-16
  • 本文字数:1383 字

    阅读完需:约 5 分钟

中国最大电商公司之一的京东,最近分享了自己通过 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-03-16 19:005664
用户头像

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

关注

评论

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

SpringBoot3集成RocketMq

RocketMQ springboot SpringBoot3

软件测试 | 查看隐藏表单域

测吧(北京)科技有限公司

测试

Spring Cloud OpenFeign - 远程调用

java易二三

Java spring 程序员 计算机 科技

软件测试 | 修改特定的元素属性

测吧(北京)科技有限公司

文心一言最新重磅发布!

飞桨PaddlePaddle

人工智能 百度飞桨 文心大模型 WAVE SUMMIT

Seamless Roaming with IPQ6010 and IPQ6018: Elevating Industrial-Grade WiFi6 Solutions

wallyslilly

IPQ6010 ipq6018 IPQ6000

从0开始学Java——抛出和声明异常的代码实现

java易二三

Java 程序员 计算机 科技

直播平台开发协议分析篇(一):会话初始化协议SIP

山东布谷科技

软件开发 SIP 源码搭建 直播平台开发 会话初始化协议

Beyond Compare 4 for Mac(文件对比工具) 4.4.6(27483)中文版

mac

Beyond Compare 4 苹果mac Windows软件下载 文件比较对比工具

vivo 容器集群监控系统优化之道

vivo互联网技术

可观测性 Prometheus 云原生监控 Victoriametrics

高级插图和绘图 VectorStyler for Mac激活包

mac大玩家j

Mac Mac 软件 绘图工具 绘画软件

软件测试 | 使用WebScarab观察实时的POST数据

测吧(北京)科技有限公司

测试

敏捷采购:如何在采购中应用敏捷方法

ShineScrum捷行

敏捷 敏捷采购

零信任体系化能力建设(2):设备风险与安全监控

权说安全

搜文本搜位置搜图片,1小时玩转Elasticsearch

阿里云大数据AI技术

21. 面向对象及特性

茶桁

Python 面向对象

mac端好用的Java开发分析 JProfiler 13 激活中文版附密钥

胖墩儿不胖y

Mac Mac 软件 Java开发分析工具 Java分析

WPS Office AI实战总结,智能化办公时代已来

MavenTalker

Microsoft 365 Copilot WPSAI

软件测试 | web跟踪元素属性

测吧(北京)科技有限公司

测试

[BitSail] Connector开发详解系列三:SourceReader

字节跳动数据平台

大数据 数据治理 数据研发 企业号 8 月 PK 榜

【直播合集】HDC.Together 2023 精彩回顾!收藏勿错过~

HarmonyOS开发者

HarmonyOS

CutLER:一种用于无监督目标检测和实例分割的方法

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 8 月 PK 榜

7个小技巧让你运行C4D不卡!

Finovy Cloud

学习 #技术干货# 建模 技巧分享 4CD

软件测试 | 计算散列值

测吧(北京)科技有限公司

测试

软件测试 | 使用TamperData观察实时的响应头

测吧(北京)科技有限公司

测试

数跨新阶,原生新纪 | 2023 数字化转型发展大会蓄力启航

信通院IOMM数字化转型团队

数字化转型 大会 IOMM 数字化转型峰会

软件测试 | 使用以URL方式编码的数据

测吧(北京)科技有限公司

测试

分布式可视化 DAG 任务调度系统 Taier 的整体流程分析

袋鼠云数栈

大数据 开源 Taier

零代码搭建一个微信小程序

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

百度王海峰披露飞桨生态最新成果 开发者数量已达800万

飞桨PaddlePaddle

人工智能 百度飞桨 WAVE SUMMIT

LVS专访阿里云席明贤,从视频云2.0到“数能生智”的超长畅谈

阿里云视频云

云计算 阿里云 视频云

京东如何从OpenStack迁移至Kubernetes_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章