容器技术

VPGAME 的 Kubernetes 迁移实践

☆樱花仙子☆ 提交于 2019-12-01 19:38:39
作者 | 伍冲斌 VPGAME 运维开发工程师 导读 :VPGAME 是集赛事运营、媒体资讯、大数据分析、玩家社群、游戏周边等为一体的综合电竞服务平台。总部位于中国杭州,在上海和美国西雅图分别设立了电竞大数据研发中心和 AI 研发中心。本文将讲述 VPGAME 将服务器迁移至 Kubernetes 的过程。 背景 随着容器技术的日趋成熟,公司近期计划将服务迁移至容器环境,通过 Kubernetes 对容器进行调度、编排和管理。并借此机会,对服务进行标准化,优化整个 CI/CD 的流程,提高服务部署的效率。 CI/CD 工具的选择 CI/CD 工具上,我们选择了 GitLab-CI。GitLab-CI 就是一套配合 GitLab 使用的持续集成系统,以完成代码提交之后的安装依赖、编译、单元测试、lint、镜像构建以及发布等工作。 GitLab-CI 完美地和 GitLab 进行集成,在使用的时候只需要安装配置 gitlab-runner 即可。GitLab-Runner 在向 GitLab 完成注册后可以提供进行 CI/CD 操作的环境,负责从 GitLab 中拉取代码,根据代码仓库中配置的 gitlab-ci.yml ,执行相应的命令进行 CI/CD 工作。 相比于 Jenkins,GitLab-CI 配置简单,只需在工程中配置 gitlab-ci.yml 文件完成 CI/CD

深入剖析Kubernetes

非 Y 不嫁゛ 提交于 2019-12-01 19:31:49
毫无疑问,Kubernetes 已经成为容器领域当之无愧的事实标准。除了 Google、Microsoft 等技术巨擘们在容器领域里多年的博弈外,国内的 BAT、滴滴、蚂蚁、今日头条等技术大厂,也都已将容器和 Kubernetes 列入未来的战略重心,无数中小型企业也正走在容器化的道路上。 一个很长但精彩的故事 打包发布阶段 在docker 之前有一个 cloud foundry Paas项目,使用 cf push 将用户的可执行文件和 启动脚本打进一个压缩包内,上传到cloud foundry 的存储中,然后cloud foundry 会通过调度器选择一个可以运行这个应用的虚拟机,然后通知这个机器上的agent 把应用压缩包下载下来启动。由于需要在一个虚拟机中 启动不同用户的应用,cloud foundry为客户的应用单独创建一个称作沙盒的隔离环境,然后在沙盒中启动这些应用进程。 PaaS 主要是提供了一种名叫“应用托管”的能力。虚拟机技术发展 ==> 客户不自己维护物理机、转而购买虚拟机服务,按需使用 ==> 应用需要部署到云端 ==> 部署时云端虚拟机和本地环境不一致。所以产生了两种思路 将云端虚拟机 做的尽量与 本地环境一样 无论本地还是云端,代码都跑在 约定的环境里 ==> docker 镜像的精髓 与《尽在双11》作者提到的 “docker 最重要的特质是docker

Docker容器

与世无争的帅哥 提交于 2019-12-01 19:15:32
Docker: 让应运程序在软件容器下的工作可以自动化进行 在linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制 docker利用Linux核心中的资源分脱机制,例如cgroups,以及linux核心名字空间nameSpace 来创建独立的软件容器 containers 解决问题: 简化环境管理 虚拟化更加轻量级: 操作系统级别的虚拟技术 应用场景: 加速本地开发 自动打包和部署应用 创建轻量私有的paas环境 自动化测试和持续集成 部署并且拓展web应用、数据库和后端服务器 创建安全沙盒 轻量级的桌面虚拟化 来源: https://www.cnblogs.com/jsersudo/p/11713889.html

docker入门实例(转载)

百般思念 提交于 2019-12-01 19:10:37
Docker 是什么? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上( 摘自百度 )。 Docker 能干什么? 在讲 Docker 能干什么之前,我们不妨先看看没有 Docker 和有Docker分别是个什么样子的? 先来个需求 某公司需要开发一个管理系统,由于业务数据量庞大,需要对每个模块进行独立化。 比如:将订单管理抽出为一个单独的系统,支付管理抽出为一个单独的系统,会员管理也抽为一个单独的系统,以此类推等等。 那么,要实现用户下单支付这个逻辑,那么首先需要调用会员管理的相关接口进行登录,调用订单管理的相关借口进行下单,调用支付管理进行支付。这几个模块共同工作才构成了我们一个下单支付的功能。这就是我们常说的分布式微服务系统。 他和传统的单一模式的区别就是:将整个项目进行了模块划分,以前老一辈项目都是将会员,订单,支付等系统都集合在一个项目中,这样十分不利于后期项目的扩展。 有Docker组 VS 无Dokcer组 为了方便叙述,我们将有无使用Docker分为 有Docker组和无Docker组,让他们开始PK。 第 1 回合:比服务器资源占用量( 资源就是金钱,没啥好说的 ) 无 Docker 组:购买了3台服务器,将开发好的三套系统分别往一台服务器上进行部署。

Docker的介绍和安装(1)

≯℡__Kan透↙ 提交于 2019-12-01 19:01:46
一、虚拟化简介 1、虚拟化概念   计算机虚拟化(Computing Virtualization),一种资源管理技术,是指通过虚拟化技术将一台计算机的各种实体资源 , 如处理器 , 网络 , 内存及存储等 , 抽像 , 转换后呈现出来 , 打破实体结构间的不可切割的障碍,虚拟成多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。    虚拟化使用软件的方法重新定义划分 IT 资源,可以实现 IT 资源的动态分配、灵活调度、跨域共享,提高 IT 资源利用率,使 IT 资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。 虚拟化目标 :   同一主机上运行多个系统或应用 , 从而提高系统资源的利用率 , 同时带来降低成本 , 方便管理和容错容灾 2、虚拟化级别   (1) 完全虚拟 -- 处理器密集型技术,因为它要求 hypervisor 管理各个虚拟服务器,并让它们彼此独立 (Vmware/Virtual PC)   (2) 准虚拟 -- 改动客户操作系统,让它以为自己运行在虚拟环境下,能够与 hypervisor 协同工作 (para-virtualization)   (3) 系统虚拟 -- 没有独立的 hypervisor 层。相反

Redux Store以及数据流

北战南征 提交于 2019-12-01 18:57:10
Store 在前面的章节中,我们定义了代表“发生了什么”的事实的actions以及根据这些动作更新状态的Reducer。 Store是将他们聚集在一起的对象。Store有以下责任: 持有应用程序状态; 允许通过getState()访问状态; 允许状态通过dispatch(action)更新; 通过订阅注册subscribe(listener); 通过subscribe(listener)返回的函数来处理注销监听器。 重要的是要注意,你将只有一个store在Redux应用程序中。当你想拆分你的数据处理逻辑时,你将使用reducer组合而不是许多store。 如果您有reducer,创建store很容易。在上一节中,我们使用了combineReducers()将多个reducer合并为一个。我们现在将其导入,并将其传递给createStore()。 123 import { createStore } from 'redux'import todoApp from './reducers'const store = createStore(todoApp) 您可以选择指定初始状态作为createStore()的第二个参数。这对于保证客户端的状态与服务器上运行的Redux应用程序的状态相匹配非常有用。 1 const store = createStore(todoApp, window

Docker简介

泪湿孤枕 提交于 2019-12-01 18:55:42
什么是 Docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 [2013 年 3 月以 Apache 2.0 授权协议开源][docker-soft],主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI) 。 Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目已经超过 4 万 6 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底, dotCloud 公司决定改名为 Docker 。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。 Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup , namespace ,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术 。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC ,从 0.7

Docker简介

﹥>﹥吖頭↗ 提交于 2019-12-01 18:37:56
什么是 Docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 [2013 年 3 月以 Apache 2.0 授权协议开源][docker-soft],主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI) 。 Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目已经超过 4 万 6 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底, dotCloud 公司决定改名为 Docker 。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。 Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup , namespace ,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术 。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC ,从 0.7

react 常用技术

泄露秘密 提交于 2019-12-01 18:34:15
转载自 https://www.sohu.com/a/285175900_132276 开源展示了人类共同协作,成果分享的魅力,每一次技术发展都是站在巨人的肩膀上,技术诸多创新和发展往往就是基于开源发展起来的,没有任何一家网络公司可以不使用开源技术,仅靠自身技术而发展起来。阿里巴巴各个团队都是发自内心地将踩过的坑和总结的经验融入到开源项目中,供业界所有人使用,希望帮助他人解决问题。 云栖社区特在2018年年末,将阿里巴巴的一些重要的开源项目进行整理,希望对大家有所帮助。(以下项目排名不分先后) 这些优质的开源项目即将成立便于开发者交流的讨论钉钉群。社区将不断更新,欢迎大家加入讨论。 前端 1.数据驱动的高交互可视化图形语法 AntV - G2 G2 是一套基于可视化编码的图形语法,以数据驱动,具有高度的易用性和扩展性,用户无需关注各种繁琐的实现细节,一条语句即可构建出各种各样的可交互的统计图表。 同时,G2 也是 AntV 最重要的组成,始于《The Grammar of Graphics》一书描述的视觉编码语法系统(这也是 G2 项目命名的由来)。 项目地址:https://github.com/antvis/g2 2.企业级中后台 UI 解决方案 Fusion Design Fusion Design 是一种旨在提升设计与开发之间 UI 构建效率的工作方式。通过建设基于 DPL

Docker 学习入门

独自空忆成欢 提交于 2019-12-01 18:31:56
摘自: https://www.cnblogs.com/chiangchou/p/docker.html Docker 学习入门 目录 一、Docker 简介 1、什么是 Docker 2、为什么要用 Docker 3、Docker 基本组成 二、Docker 安装 1、CentOS7 安装步骤 2、Docker 命令 三、镜像管理 1、镜像简介 2、镜像管理 四、容器管理 1、创建容器 2、容器资源限制 3、容器常用命令 五、管理应用程序数据 1、Volume 2、Bind Mounts 六、容器网络 1、Docker 网络模式 2、容器网络访问原理 七、制作镜像 1、Dockerfile 2、构建基础镜像 八、镜像仓库 1、Habor 2、安装 Docker Compose 3、安装 Harbor 4、Harbor 简单使用 九、图形化管理 1、安装 Portainer 2、访问 Portainer 回到顶部 一、Docker 简介 1、什么是 Docker Docker 是使用最广泛的开源容器引擎,它彻底释放了计算虚拟化的威力,极大提高了应用的运行效率,降低了云计算资源供应的成本! 使用 Docker,可以让应用的部署、测试和分发都变得前所未有的高效和轻松! Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup