Infrastructure_as_Code——Kubernetes一键编排实践

从开发者视角看基础设施

15dddebe38020534049fb183cc95861217ca2522

我们经常拿IDC和云计算作对比,以此来衬托云计算的变化。IaaS、PaaS、SaaS都是从交付方面来阐述其所做的事情,IaaS是基础设施作为服务来交付,PaaS是把平台作为服务交付,SaaS是软件直接作为服务交付。对于开发人员来说,我们之前可能有专门的IDC,有专门的运维人员负责基础设施的维护(选IDC、网络、机器)。云计算的出现,尤其是基础设施作为服务的一个交付手段的时候,开发人员有时候也需要直接面对基础设施的维护。这就给我们带来了新的挑战:80%的关键系统或服务的异常中断是由人为原因引起;50%的系统异常是由变更、配置、发布、人工操作导致。解决上述问题的核心理念是,尽量减少人参与运维流程中所做的事情。我们的解决方案是自动化编排:取消手工操作让应用部署流程自动化;降低运维复杂度让系统自动对齐业务需求。

Infrastructure as Code–基础设施即代码

72652b9ca4914ea6dc32b44395b1262182a7854f

从开发人员的角度来说,最熟悉的流程是:写代码、编译、调试、部署、运行,整个流程会使开发人员的安全感比较高。对于基础设施来说,特别是像如今基础设施都是通过服务来交付的情况,而且这些服务都是由像阿里云这样的第三方云服务商交付的情况,我们的安全感可能会缺失。如果让基础设施也像代码一样在开发人员的掌握中,那么缺失的安全感就能够找回。阿里云提供的所有基础设施都提供了Open API方式,所以可以写代码去操作。就像可以写代码申请内存空间一样,我们也可以通过写代码申请一个ECS、SLB。上图中所示的流程也适用于基础设施。

资源编排服务–IaC运行平台

60fc9cacbbcd814d266e051fb49e16cf0e55ce2a

阿里云通过资源编排服务实现上述理念。上图中有三个核心概念:模板,JSON格式的文本文件,它其实对应上述流程中的代码部分,使基础设施变成可以编写的代码,编写时不需要关注资源如何调用Open API等事情;ROS,编排引擎,它本身也通过Open API的方式向外提供服务,它可以通过用户定义的模板创建一系列的资源;资源栈,即阿里云资源集合,未来对资源的管理都可以以资源栈为单位进行集中管理。整个编排过程是一个全自动的过程。

ee0bd7aabc60a1d0ae24b3f3f1a255298ba8797e

如何实施基础设施即服务的过程呢?如上图所示,首先我们需要对我们的系统进行架构设计,比如如果我们的架构是网站则会涉到负载均衡、RDS资源。接着是模板开发,将设计好的架构编程为模板,模板有足够的能力去表达架构,比如包含的资源,资源之间的关系。将创建好的模板提交给ROS,ROS会根据模板创建资源栈,其出口是一堆资源栈的集合,后期对资源的管理都可以基于资源栈来进行,包括更新、升级。

4daecbcefd605efc82afe8da2fba03abf8d3c086

上图是ROS最简单的编排模板,第一行声明了编排模板的版本。Resources部分,定义了名为k8s_master的资源,类型为ECS实例,并且定义了实例的类型、镜像和安全组。当我们把上述代码提交给编排引擎之后,编排引擎就能根据上述代码创建出一台符合我们要求的ECS实例。

通过资源编排在云端交付开源软件

开源软件交付面临的新问题包括:大计算时代的大型分布式系统架构复杂,角色众多,如何部署?需要与云计算服务整合进行全局优化,如何获取和配置资源?敏捷和DevOps,如何应对快速频繁的部署与销毁?资源编排服务的解决方案:通过编排模板定义云资源的需求和配置;通过CloudInit、Chef进行软件部署;通过全自动的编排引擎进行无人值守的系统交付。

Kubernetes(k8s)

Kubernetes(k8s)的灵感来自于Google Borg,Borg这个系统在Google是做数据中心层面的管理,类似于阿里云的伏羲。而Kubernetes其目的是做容器化应用的自动部署、扩展和管理,社区成员包括Google、IBM、微软、VMWare、Docker等多家公司。如何通过阿里云的资源部署一个最简单的Kubernetes集群?

Kubernetes部署规划

b1ece1fb522a062e7f92d89b4e3e2df7867963e8

上图是一个非常简单的集群,有三个角色:一个Kubernetes Master,两个Node节点。它们跑在三个ECS上,属于一个独立的VPC网络,只有一个子网VSwitch。

29556d7f35dd992154e263702ddd8e2e1f549da1

首先我们要规划我们的网络,所有的资源都放在VPC网络下面,VPC网络在安全性和可扩展性方面都比传统网络要好。最上方通过模板定义了一个VPC模板,类型为阿里云ECS VPC,设置了网段、名字。然后创建VSwitch,环境复杂时可以创建多个子网。最后创建SecurityGroup来管理网络规则。从上述流程可以看出,通过模板来创建VPC网络环境,会使问题变得简单、清晰。

1ab4d5261ffa0cb952de7b259ab609fcc1bb77c7

紧接着,我们为K8sMaster创建ECS,类型为ECS实例,ImageId可以参数化,给一个子网地址,并指定系统盘类型是SSD。

0ca287783e5f64addcd7bce37696308a7eb2c2f8

我们需要在实例中部署Kubernetes的组件,最上方为创建实例时用户指定的数据。中间框中的脚本内容详细展示了部署的过程。

75dbac757ab80eb4e8766140bca412aa36c648aa

Node角色的创建如上图所示。Node的数量是不确定的,我们需要有一种方式能创建多台Node。ECS InstanceGroup的作用是通过MaxAmount和MinAmount两个值控制实例的个数,当需要确定数量资源的时候可以将这两个值设为一致。其余属性和创建Master时是基本一致的。

7ae140513f8b7d6edf797d59dd95fa0ac3318126

上图是Node节点上部署的脚本,作用是在Node节点启动后,在其上部署Node节点所需要的kubelet、docker,以及进行基础环境的配置。

执行编排

0f81fb84de731ad4d098b59a207dbca158b61f21

上文构建的模板已经实现了我们系统方方面面所需要的东西。上图是输入模板的页面,模板源除了直接输入之外还可以指定url文件。这样我们的模板开发完之后就可以放到一个OSS的地址上,其他人也可以通过这个地址创建、部署同样的系统。

4bf828f468d60cbca1aa82c6db64ac677bdbdcbf

前一个页面点击创建之后,就可以进入事件列表页面。通过模板部署应用的过程中,因为涉及到很多的资源,所以存在有很多事件。对于观察者来说,更希望看到过程中的一些细节,从事件列表就可以实时监控到每一步正在进行的事件是什么,并且可以获知其状态。

03296dfb98499feb27ae70e0bae5559a124bfc7d

当所有的编排动作完成之后,可以进入到资源列表页面。这个页面可以看到整个应用被创建出来的资源细节。

e7419179ae251e0702477ebd305da5b396fc9efa

上图是阿里云官方提供的一些样例模板,通过这些模板,我们可以部署Jenkins、docker_ddc等更复杂、更有用的系统。

应用场景:运行环境复制

8699aa173b7bc17722c8e0f9087fed0bb8ae3b34

模板除了有创建资源的用途、运维的用途、软件交互的用途,还可以用于其他场景。比如,当我们实施DevOps的时候,希望有很多靠谱的环境(开发环境、集成测试环境、线上生产环境)。为了让其保证一致,通过手工方式很难做到,但通过模板达到上述目的却比较简单。

类似的场景还有:在模板里定义很复杂的VPC子网结构,做子网规划;做DevOps流程实施;通过编排做资源的创建、删除、规划,做到系统自动扩容、缩容;以模板的形式向客户交付可部署的应用模板。

原文地址:http://click.aliyun.com/m/20314/  

 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
This book explains how to take advantage of technologies like cloud, virtualization, and configuration automation to manage IT infrastructure using tools and practices from software development. These technologies have decoupled infrastructure from the underlying hardware, turning it into data and code. "Infrastructure as Code" has emerged alongside the DevOps movement as a label for approaches that merge concepts like source control systems, Test Driven Development (TDD) and Continuous Integration (CI) with infrastructure management. Virtualization and cloud make it easy to rapidly expand the size of infrastructure, but the habits and practices we used in the past with hardware-based infrastructure don't keep up. Teams end up with hundreds of servers, all a bit different, and find themselves unable to fully automate their infrastructure. The book will go through the challenges and problems created by all these wonderful new tools, and the principles and mindset changes that a team needs to make to use them effectively. It describes patterns, practices, and ideas that have been adopted from software development, especially Agile concepts, and brought into the IT Ops world as part of the DevOps movement. These ways of working have been proven in many organizations, including well known names like Netflix, Amazon, and Etsy, and also in more established organizations including publishers, banks, and even the British government. Table of Contents Part I. Foundations Chapter 1. Challenges and Principles Chapter 2. Dynamic Infrastructure Platforms Chapter 3. Infrastructure Definition Tools Chapter 4. Server Configuration Tools Chapter 5. General Infrastructure Services Part II. Patterns Chapter 6. Patterns for Provisioning Servers Chapter 7. Patterns for Managing Server Templates Chapter 8. Patterns for Updating and Changing Servers Chapter 9. Patterns for Defining Infrastructure Part III. Practices Chapter 10. Software Engineering Practices for Infrastructure Chapter 11. Testing Infrastructure Changes Chapter 12. Change Management Pipelines for Infrastructure Chapter 13. Workflow for the Infrastructure Team Chapter 14. Continuity with Dynamic Infrastructure Chapter 15. Organizing for Infrastructure as Code

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值