@pockry
2017-12-20T14:33:14.000000Z
字数 1724
阅读 1335
云计算
近一年多来,云原生以及Kubernetes越来越受到社区和业界重视,Kubernetes更是成为了容器编排的事实标准,基于Kubernetes的云原生架构也被越来越多的人谈及,云原生到底是什么,需要做哪些事情?带着这些问题,InfoQ记者采访了微软云原生方面的专家Gabe Monroy。
受访嘉宾介绍:
Gabe Monroy是微信Azure云容器技术的首席项目经理,其代表微软参加开源组织云原生计算基金会CNCF。Gabe曾是Deis公司的创始人与CTO,Deis公司于2017年被微软收购。作为Docker和Kubernetes的早期贡献者,Gabe在容器技术方面有着丰富的经验,并经常在PaaS、分布式系统和云原生架构方面提供建议。
InfoQ:请介绍一下CNCF,您在里面负责什么工作?
Gabe:CNCF的存在是为了推广专门为分布式系统而创建的计算范式而建立的组织,这种分布式系统拥有可伸缩的数以千计的自愈型节点。通过推广开源项目,帮助壮大云原生生态体系,我们希望让云原生技术能更加普及。
赋予用户更多能力一直是微软的核心任务,在这样任务的驱使下微软加入了CNCF。我在CNCF委员会的角色主要是聚焦在监督和布道。
InfoQ:Cloud Native现在有哪些最佳实践?
Gabe:云原生意味着运行具有以下能力的应用
a) 使用容器打包的
b) 动态管理的
c) 面向微服务的最佳实践包括使用类似Docker和Kubernetes的技术。想要快速开始的话,微软的AKS服务提供了一个全面管理的Kubernetes体验,利用它你可以快速开始云原生系统管理的学习。
InfoQ:您认为云原生架构师需要什么样的能力?在云原生实践中有哪些重要的原则?
Gabe:云原生架构师是一个相对较新,并且定义仍在变化的一个角色。严格来说,云原生架构师主要需要在IT运维操作中分离关注点(SoC)。比如,分离硬件操作、系统操作、集群操作、以及应用的操作,并且在每个之间清晰定义“API边界”。
几年前,Heroku的12要素方法论描述了如何将应用操作从系统操作中分离开来,以加速应用交付。现在我们需要在它的基础上进一步发展,以适应现代技术和环境。比如,在状态持久化方面更少的约束,将密钥存储在卷中而不是环境变量里从而提升安全性。
InfoQ:对于某些传统行业来说,将现有应用重构为云原生很难,需要特定的行业解决方案,您如何看待这些行业的上云问题?
Gabe:旧有应用程序在上云的时候的确可能很有挑战性。幸运的是,我们现在看到了一个模式可以无缝的迁移,就是将现有的工作负载打包到容器里,然后运行在如微软AKS之类的Kubernetes服务里。虽然这样没有应用云原生风格中的微服务架构,但上云对这些应用依然有很多好处。
特别是,你可以让老旧、过时的硬件退役,同时享受容器编排带来的可靠性和可扩展性。比如,你的遗留工作负载现在可以自动的重新计划和重启你的应用,避免因硬件故障带来的损失。
InfoQ:为了实现云原生,云计算厂商如微软需要提供什么样的服务?
Gabe:微软的AKS和ACR及类似的基础设施解决方案对于实现云原生架构来说是关键的部分,但只有它们还有些不足。比如,大多数用户需要一个DevOps工具链来自动的将源代码交付到线上环境,包括源码控制管理、CI/CD、监控、日志聚合等。幸运的是对于这一块微软也提供了几个解决方案,包括软件如Visual Studio和VSTS,以及开源的CNCF工具包,包含Helm、Draft、Brigade等。
InfoQ:基于Kubernetes的微服务架构看起来会是今后云原生架构的发展趋势,微软如何应对这个趋势?
Gabe:微软在Kubernetes上投资很大,包括招募Kubernetes的联合创始人Brendan Burns,收购Kubernetes生态中的重要力量Deis,最近还为Kubernetes发布了新产品如Visual Studio连接环境,通过这些举措可以帮助开发者在Kubernetes上构建微服务。微软相信到开发者中间去,而现在微软的很多开发者都在越来越多的使用Kubernetes构建微服务。