Kubernetes:下一代分布式系统的护戒使者

I would rather share on lifetime with you,

宁愿与你共度凡人的一生

than face all the ages of this world alone.
也不愿一个人看尽沧海桑田

作者简介:

刘国辉,EasyStack联合创始人兼CTO,Linux专家、极客。15年跨国大型IT企业研发、咨询和管理经验,资深架构师。曾任IBM、HP等公司解决方案与云计算专家,主导设计并实施了国内最早的金融、能源等核心领域生产系统的云计算平台。本文为《云计算地理学报告:Kubernetes三部曲》之一。

 

指环王的作者托尔金在创作指环王时坦陈,从早年就对自己所爱之乡土没有属于自己的故事而感到悲伤,从而立誓要为故土写一则神话,一则遥远的传奇,以精灵的视野来看天地初开以降的一切,从此其一生都在致力于描述这个从来不曾存在的世界。

无…

详细内容

如何使用 Docker 来限制 CPU、内存和 IO等资源?

在使用 Docker 运行容器时,一台主机上可能会运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU、内存和磁盘资源。如果不对容器使用的资源进行限制,那么容器之间会互相影响,小的来说会导致容器资源使用不公平;大的来说,可能会导致主机和集群资源耗尽,服务完全不可用。

Docker 作为容器的管理者,自然提供了控制容器资源的功能。正如使用内核的 namespace 来做容器之间的隔离,Docker 也是通过内核的 cgroups 来做容器的资源限制。这篇文章就介绍如何使用 docker 来限制 CPU、内存和 IO,以及对应的 cgroups 文件。

NOTE:如果想要了解 Cgroups 的更多信息,可以参考 Kernel 文档 或者其他资源。

我本地测试的 Docker 版本是 17.03.0 社区版:

使用的是 ubuntu 16.04 系统,内核版本是 4…

详细内容

让“升级还是不升级OpenStack”不再是个问题

OpenStack正逐渐被接受为企业级框架,用于自动化数据中心基础设施,并使企业能够运营各种各样的应用程序和服务。

 

2010年,该平台作为托管服务提供商Rackspace和NASA的联合项目出现在市场上。目前,它已经发展成为迄今为止最大的开放源码项目之一,其版本发布由OpenStack社区一年两次的会议推动,每次会议一般会公布下一个版本的优先事项。

市场研究表明,越来越多的企业OpenStack部署正在从试点项目(测试和开发平台)转向全面的生产状态,但还有一些待解决的问题——其中最主要的是确保在升级到最新版本时能平滑更新构成OpenStack的无数组件。

OpenStack早期版本的升级总是有问题的,部分原因是那时候大部分开发工作侧重于保证其作为IaaS平台充分运行所需的功能。

早期采用者经常发现自己面临着难以置信的选择——要么在安装新代码的同时…

详细内容

4种容器采用模式,总有一款适合你

容器在企业IT规划中迅速扮演重要角色是有原因的:它们能帮助企业获得快速发展。对于数字化业务来说,速度就是金钱。同行们如何使用容器?自己公司的最佳采用方式是什么?应该躲开哪些减速带?

在数字化转型的今天,搞清楚为什么企业渴望速度是有必要的。当对手使用技术做出意想不到的举动,或者做出大型的收购时,你必须做出反应。 例如,亚马逊最近收购Whole Foods就要求超市领域的竞争对手快速采取行动。为了实现这种业务速度,IT负责人希望翻转80/20范式,即IT传统上将其80%的预算用于维护,20%用于创新。CIO在寻求分配更多的预算来帮助业务更加灵活和敏捷。

 

容器、DevOps和微服务的配合可以帮助CIO实现敏捷的目标。简而言之,容器把应用集中在一个整洁的包里,与它们运行的主机系统隔离。开发人员可以在试验过程中轻松移动它们——这是DevOps的基本要求。从开发到生产环…

详细内容

智慧物流云—郑州国际陆港打造新丝绸战略

2013年郑州国际陆港正式成立,致力于全面负责国际陆港的规划以及郑欧班列的运营。经过几年的发展,郑州国际陆港的集疏中心已覆盖1500公里,涉及全国四分之三的省市,还有日韩等亚太国家,覆盖中亚及欧洲共24个国家121个城市。

陆港公司秉着帮助政府、中小企业节省高昂的IT投入费用、提高IT设施的利用率、降低信息化成本,进而提升智能化程度、提升生产效率的初衷,为用户提供云服务器、云主机、底层技术平台、弹性计算、数据库、云数据库RDS、存储与CDN服务、网络、大规模计算、云盾、管理与监控、应用服务。提供可靠完善的云解决方案和多样化的云计算服务。

挑战

郑州国际陆港成立至今,随着业务的不断增长,构建一个完善的IT基础设施成为当务之急,但在这过程中也遇到了诸多挑战:

1、多级权限分离: 多级结构的用户权限分离,资源划分,资源隔离等;

2、 弹性伸缩: 在致力于构建新型IDC服务产…

详细内容

企业对象存储是否准备好了?

自从20世纪90年代中期首次提出概念,对象存储已经成为最大规模应用的数据存储方法之一。对象存储的发展和商业化与一直是云计算主要用户的技术行业紧密相连关。数据存储技术的最新进展和转变使IT买家想知道,企业对象存储是否可以像云对象存储一样普遍。

对象存储是由学术和商业研究人员开发的,以便能够处理在“高速公路”上看到的内容——需要在某处存储的数字信息的数量越来越多。所以对象存储的目标就是以较低的成本运行和扩展存储。

 

第一个目标是通过消除单独对存储介质中的每个可写空间块寻址的需要来实现的,而这一点在文件和块存储中是必需的。这允许更多的介质用于实际保存数据,而不是保存关于如何找到该数据的信息。

第二个目标是通过消除文件夹的任何层次结构并将存储视为平面地址空间或存储池来实现的。这使得存储更容易扩展。把对象存储池想作可以在任何维度上扩张的大水池。这个比喻中的水或数据,源源…

详细内容

制作OpenStack的Windows Server 2012R2镜像

1.基础环境安装

 

2. 启动服务

 

3. 系统镜像准备

使用迅雷下载镜像并上传到服务器

 

 

4. 创建磁盘文件

 

5. 准备 windows 兼容驱动

 

 

6. 启动虚拟机

由于在Windows下需要下载Cloudbase,网络较慢,我将提前下好的文件CloudbaseInitSetup_0_9_11_x64.msi 打包成 CloudbaseInitSetup_0.9.11_x64.iso, 并上传到服务器与windows镜像相同的目录,启动时添加如下参数,同时挂载3个光驱到系统,以便开机后能够一次性完成个性化配置、网卡驱动更新、cloudbase安装。

 

6.1 使用virt-install…

详细内容

用Buildroot创建OpenStack Ironic部署镜像

Ironic是一个OpenStack项目,它提供裸机(而不是虚拟机)。

一个称为Ironic Python Agent(IPA)的工具用于控制和配置这些物理节点,执行擦除机器和将镜像写入磁盘等任务。这是通过引导自定义的Linux内核和运行IPA并连接到Ironic Conductor的initramfs镜像来完成的。

Ironic项目通过Disk Image Builder支持几个不同的镜像构建器,包括CoreOS、TinyCore等。

然而,这些镜像构建器都有限制,例如,它们需要root权限,它们的大小都是几百兆字节(除了TinyCore)TinyCore的缺点之一是硬件支持有限,虽然它不在生产中使用,但它被用于OpenStack门控测试(在具有大约300MB RAM的虚拟机中启动)。

大型部署镜像意味着节点的配置时间较长,因此笔者开始创建一个小型、可定制的镜像…

详细内容

openstack-cinder之generic volume group(通用卷组)

N版本之后cinder提供了generic volume group,通用卷组功能。N版本之前cinder提供的是一致性组(consistency group),但是一致性组的功能只有一部分的driver支持,那么cinder中的组有哪些功能:

——通过一致性组可以对组内的块存储进行统一的操作,保证数据的一致性

——可以把一类或者某个应用使用的多个块归到一个组中,便于管理

之前的一致性组中的某一个块的驱动不支持一致性组功能,那么就没有什么意义了,generic volume group正是用来解决这个问题,最终提供一个不依赖后端驱动的通用的组功能。

这里主要记录下generic volume group(后面提到的groups即为现在的通用组,consistency group为以前的一致性组)的使用。

基本要素

group某种程度上和volume在使用上是类似的,一个grou…

详细内容

用Ansible在Openstack上部署Kubernetes

用户对容器编排工具的需求日益增加。Kubernetes目前备受关注,经常有人问会不会在SWITCH(运营瑞士学术网络的基金会)提供一个Kubernetes集群。

目前,我们建议用户在SWITCHENGINE之上部署自己的Kubernetes集群。为了确保我们的Openstack部署适用于此解决方案,我们也试了一下。

在使用kubeadm手动部署以学习该工具之后,笔者发现了一个由Francois Deppierraz撰写的很棒的可编辑的playbook(https://github.com/infraly/k8s-on-openstack)。我扩展了此playbook,使Kubernetes知道SWITCHENGINE实施了LBaaSv2,该补丁已经被合并在原始版本中。

笔者发现部署Kubernetes的第一个问题是完全不支持IPv6。由于SWITCHENGINE中的实例默认获…

详细内容