[ 原创 ] 小尝containerd(一)

前言 containerd是一个开源的container runtime实现,也是docker背后管理容器生命周期的功臣,借着周末的一些时间,鄙人也小小把玩了一下containerd,有任何不对的地方欢迎指正。 架构 containerd和runc、docker的关系其实比较复杂,我们不妨简单地理解成,containerd是一个纯粹的,面向容器工业标准的一个容器管理运行时,runc是一个包装了libcontainer的满足OCI标准的类库,docker则更像是一个承载容器而又不想只做容器引擎的一个复杂产物。下图展示了containerd在容器生命周期里扮演的角色: 不难发现,containerd本身负责管理容器整个的生命周期,从镜像拉取,到挂载fs,再到启动,销毁等,它对外提供grpc形式的…

Read More

kube-dns实现原理的解读

前言 最近一直在做类似skydns的dns服务发现相关的研究和代码实现,也就有了兴趣想解读下kube-dns的实现过程,学习和参考下社区的做法。 源码结构 如何从头开始阅读一份开源项目的源码呢?一般来说,我们会从执行入口顺腾摸瓜地依次八下去,这里强烈推荐难易大佬的k8s源码阅读笔记,条理非常清晰,解读的方式也很值得学习,我们这里不妨也参考难易的方法进行kube-dns代码的阅读。 我们首先需要从github仓库clone下来kube-dns的源代码。不难看到其代码入口cmd目录下除开测试组件,主要是dnsmasq、dns、sidecar这三块组件的代码: OK,由此我们产生了第一个也是最核心的问题: Q1: kube-dns、dnsmasq-nanny、sidecar分别实现了什么功能?…

Read More

使用locust + boomer实现对非web组件的压测

前言 最近有在编写类似SkyDNS的面向服务间调用的智能DNS服务,开发完成后如何对DNS服务本身进行压测有点被难倒了。市面上对HTTP类请求的压测测试很多,然而对非Web组件的压测工具则非常少见。 在努力翻阅互联网上的开源项目后,终于找到了这样一款压测工具locust,它是用Python实现的一款可以自己编写task进行测试的压测框架,并且提供友好的UI。本文即是简单总结一下体验该款压测工具的过程,BTW,笔者对测试没有什么经验,如有谬误,欢迎互联网上的大佬们一起交流、指教。 架构设计 下面,我们不妨来简单看看locust的架构。 locust本身设计的非常简单轻量,经典的压测架构 master -> slave的形式,master只负责数据的收集和消息的广播等操作,task的执行均由sl…

Read More

[ 翻译 ] Vmware发布了Dispatch,一款开源的serverless框架

VMware在VMWorld 2017大会上发布了其serverless计划,并在现场演示了一个使用Apache OpenWhisk(现有的一项开源FaaS技术)实现的函数即服务(FaaS)。从那时起,serverless团队一直致力于定义一款基于Vmware基础设施之上实现的serverless框架。这些努力的成果便是Dispatch,一款全新的由Vmware发起的开源项目,不久前刚刚在Github上发布。 Dispatch,构建于Kubernetes之上,提供了一系列的工具和服务以部署和管理生产可用的,函数式支持的serverless应用。Dispatch不仅仅局限于函数的执行,而是为任何运行在Kubernetes环境里的应用提供了一个“内置电池”形式的serverless框架。 Dis…

Read More

[ 翻译 ] 持续集成(三)最佳实践

引言 这是持续集成系列的第三篇。在这篇文章里,我们将介绍实现一个CI流程的一些最佳实践。笔者也将会根据自己的行业经验介绍一些真实世界里的提醒和警告。 快速回放:在本系列的第一篇里,我们介绍了CI的基本概念以及它和敏捷开发及DevOps团队文化的关联。在第二篇里,我们介绍了CI服务器的概念以及它是如何将各种实现一个CI流程的行业标准实践无缝整合到一起。 如果你还没有读过前面的文章的话,笔者强烈建议在继续阅读本文之前先翻阅一下! Martin Fowler,在他的CI白皮书里提到了一些应当成为任何CI设定一部分的关键实践。这些建议多年来已然成为"这样"一组持续集成的最佳实践。同一主题的维基百科页面则对外展示了Martin Fowler所阐述的那些原则的本质。 下面,笔者将以自己个人的视角和大家一…

Read More

[ 翻译 ] 持续集成(二)CI服务器 & 工具集

【编者的话】这是持续集成系列的第二篇,在本文中,作者介绍了CI流程的具体实现。 引言 在持续集成(CI)系列的前面一篇文章里,我们关注了CI的基本概念,它是如何帮助企业减少集成软件时的错误,采用它带来的好处和遇到的难点,以及最后,它是如何助力敏捷开发和DevOps团队文化的推行。 我们还讨论了CI落地到开发流程最常用的一些方式,最终能够带来软件质量上的提高,更快的市场交付,更快的反馈周期以及更低的开发成本。 如果你还没有读过前面一篇文章的话,不妨在继续阅读本文之前先翻阅一下! 在本文中,我们会介绍到一些工具,它们将有助于为组织实现一个强大并有价值的CI流程。 持续集成服务器 实现一个CI流程的唯一必要条件便是得有一个自动构建系统。 然而,实际上,除了自动构建系统外,安装和配置一个“CI服务器…

Read More