Infrastructure as Code——Kubernetes一键编排实践

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
资源编排,不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 在2017云栖大会·深圳峰会上,来自阿里云的王升功分享了《Infrastructure as Code——Kubernetes一键编排实践》。他首先从开发者角度分析了基础设施在交互上面临的挑战,提出了基础设施即代码的解决方案。

在2017云栖大会·深圳峰会上,来自阿里云的王升功分享了《Infrastructure as Code——Kubernetes一键编排实践》。他首先从开发者角度分析了基础设施在交互上面临的挑战,提出了基础设施即代码的解决方案。然后,它主要分享了资源编排服务——IaC运行平台以及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流程实施;通过编排做资源的创建、删除、规划,做到系统自动扩容、缩容;以模板的形式向客户交付可部署的应用模板。

 

本文介绍的部署Kubernetes集群的编排模板和一个快捷的部署方法已经整理成云栖社区的文章,供参考:《10分钟自动部署Kubernetes1.6.1集群》
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
10天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
42 2
|
2月前
|
Kubernetes 持续交付 开发者
探索并实践Kubernetes集群管理与自动化部署
探索并实践Kubernetes集群管理与自动化部署
109 4
|
10天前
|
Kubernetes 监控 负载均衡
深入云原生:Kubernetes 集群部署与管理实践
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其弹性、可扩展性成为企业IT架构的首选。本文将引导你了解如何部署和管理一个Kubernetes集群,包括环境准备、安装步骤和日常维护技巧。我们将通过实际代码示例,探索云原生世界的秘密,并分享如何高效运用这一技术以适应快速变化的业务需求。
36 1
|
20天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
58 4
|
21天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
56 3
|
28天前
|
Kubernetes 监控 开发者
专家级实践:利用Cloud Toolkit进行微服务治理与容器化部署
【10月更文挑战第19天】在当今的软件开发领域,微服务架构因其高可伸缩性、易于维护和快速迭代的特点而备受青睐。然而,随着微服务数量的增加,管理和服务治理变得越来越复杂。作为阿里巴巴云推出的一款免费且开源的开发者工具,Cloud Toolkit 提供了一系列实用的功能,帮助开发者在微服务治理和容器化部署方面更加高效。本文将从个人的角度出发,探讨如何利用 Cloud Toolkit 来应对这些挑战。
35 2
|
29天前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
79 2
|
12天前
|
Kubernetes 负载均衡 调度
Kubernetes集群管理与编排实践
Kubernetes集群管理与编排实践
|
12天前
|
Kubernetes Cloud Native 前端开发
Kubernetes入门指南:从基础到实践
Kubernetes入门指南:从基础到实践
24 0
|
2月前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
3年前的云栖大会,我们发布分布式云容器平台ACK One,随着3年的发展,很高兴看到ACK One在混合云,分布式云领域帮助到越来越多的客户,今天给大家汇报下ACK One 3年来的发展演进,以及如何帮助客户解决分布式领域多云多集群管理的挑战。
阿里云容器服务 ACK One 分布式云容器企业落地实践
下一篇
无影云桌面