关闭
云容器化编程- ASK & ACK

应用程式容器化的发展在2000年后已经在个别的系统上出现(例如 Sandboxie – Windows, LXC – Linux, Solaris Containers – Solaris),但要讲到容器化的发光发亮,应该就是 Docker Inc公司推出的同名产品 Docker的时候。现在比较普遍使用的容器执行个体技术中,Docker占有大多数,其他的技术如 Containerd 或 Cri-o 也开始慢慢普及。

未来预测:云端将迈向容器化-ASK & ACK

 

什么是应用程式容器

作业系统层虚拟化亦称容器化,是一种将作业系统核心虚拟化的技术,允许使用者把应用程式分割成几个独立的单元,在不同的核心中运行。利用以下的图表可以更清楚的表达。
 

未来预测:云端将迈向容器化-ASK & ACK

传统部署时代

早期,各个应用程式也在物理伺服器上直接执行。这种方式无法为应用程式定义资源边界,导致潜在的资源分配问题。例如,如果在物理伺服器上执行多个应用程式,可能会出现其中一个应用程式占用大部分资源的情况, 结果可能导致其他应用程式的效能下降。  
 

虚拟化部署时代

作为解决方案,出现了虚拟化。虚拟化技术允许你在单一个物理伺服器的 CPU 上执行多台虚拟机器(VM)。每一台虚拟机器是一台完整的系统,利用虚拟化硬体资源执行所有元件,包括作业系统。
虚拟化允许应用程式在虚拟机器之间隔离,提供一定程度的安全。虚拟化技术同时能够更有效地利用物理伺服器上的硬体资源,并且因为可以轻松地新增或更新虚拟机器里的应用程式,而实现更好的可伸缩性,降低硬体成本等。

容器部署时代

容器类似于虚拟机,但是容器可以让应用程序同时使用同一个共享操作系统(OS)。容器相比虚拟机较为轻量。容器与虚拟机类似,具有自己的文件系统、CPU、内存、程序空间等。容器的部署也支持跨云或跨OS版本进行移植。
 

容器化的好处

容器因为具有许多优势而变得普及起来。下面列出的是容器的一些好处:

  • 敏捷的应用程序建立和部署:一般容器建立不需要很长的编码,如果有合适的容器映像,只需一行的指令已经可以部署应用程序!
  • 持续开发、整合和部署:由于映像的不可变性,容器支持可靠且频繁的容器映像构建和部署,并提供快速简单的复原过程。
  • 跨开发、测试和生产环境的一致性:有跨云和操作系统发行版的可移植性,例如同一个容器映像可在 Ubuntu、RHEL、CoreOS、本地和任何云端上执行。
  • 松散耦合、分布式、弹性、解放的微服务:应用程序被分解成较小的独立部分, 并且可以动态部署和管理。需要更新其中独立、分散的部分时,也比较传统部署容易。
  • 因为资源的隔离,应用程序的效能更能预测,资源利用也可以有更高效率和高密度。
 
容器化的趋势

由于使用容器化有很多不同的好处,越来越多的应用程序也开始被容器化。以下的报告指出应用程序容器化的比例正持续上升。

未来预测:云端将迈向容器化-ASK & ACK
图片来源:https://www.stackrox.com/post/2020/03/6-container-adoption-trends-of-2020/


另一方面,一些常用的技术应用程序使用容器化的比率也很高,原因是因为厂商已经预先准备好应用程序的容器,可以把部署应用架构时所需的时间大大减少。

 

未来预测:云端将迈向容器化-ASK & ACK

2020 November, Datadog

 

为什么需要 Kubernetes?

利用容器是执行应用程序的好方式。在生产环境中,你需要管理执行应用程序的容器,并确保不会停机。 例如,其中一个容器发生故障时,需要启动另一个容器作替补。如果可以让系统来处理,会更为容易和快捷。

Kubernetes 提供以下功能:

  • 服务发现和负载平衡:Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果进入容器的流量很大, Kubernetes 可以负载平衡并分配网络流量,从而使部署稳定。
  • 自动部署和复原:使用 Kubernetes 描述已部署容器的期望状态,再以受控的速率将实际状态更改为期望状态。例如,可以自动化 Kubernetes 来部署建立新容器, 删除现有容器并将它们的所有资源用于新容器。
  • 自动完成装箱计算:Kubernetes 允许指定每个容器所需的 CPU 和内存(RAM)。 当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。
  • 自我修复:Kubernetes 可以重新启动失败的容器、替换容器、删除不回复执行状况检查的容器。
 
阿里云的Kubernetes

阿里云的Container Service for Kubernetes (简称 ACK) 整合了阿里云虚拟化、储存、网络与安全功能,提供高效能、可伸缩的容器应用程序管理能力,支持企业级容器化应用程序的整体生命周期管理。
ACK服务分别提供专有版和托管版两个版本,使用专有版需要建立Kubernetes的Master节点和Worker节点,Master节点的作用是来管理Kubernetes的底层基础架构,Worker节点是用来执行应用容器的个体,建立Master节点需要对Kubernetes有较深入的认识。如果使用托管版,只需要建立部署应用的Worker节点,比较适合大部分的使用者。
ASK丛集是阿里云推出的无服务器Kubernetes容器服务。无需购买节点即可直接部署容器应用,也无需对丛集进行节点维护和容量规划。ASK根据应用程序配置的CPU和内存资源按使用量收费。ASK丛集提供完善的Kubernetes兼容能力,同时降低了Kubernetes的使用门坎,让使用者更专注于应用程序,而不是管理底层基础架构。

ACK与ASK丛集的对比

未来预测:云端将迈向容器化-ASK & ACK


ASK核心优势

  • 免运维:低门坎快速建立Serverless丛集,快速部署容器应用。无需管理Kubernetes节点和服务器,聚焦业务应用。
  • 弹性:无需担心丛集节点的容量规划。根据应用负载,轻松灵活扩展应用程序所需的资源。
  • 原生相容:支持原生Kubernetes应用和生态,包括Service、Ingress、Helm等,无缝迁移Kubernetes应用。
  • 按量计费:不执行不计费,也没有资源闲置费用,同时Serverless带来更低的运维成本。
 
 

专有版Kubernetes

托管版Kubernetes

Serverless Kubernetes

主要特点

需要自行建立Master节点及Worker节点。

只需建立Worker节点,Master节点由ACK建立并托管。

无需建立Master节点及Worker节点。

 

可以对丛集基础设施进行更多的控制,需要自行规划、维护、升级服务器群集

简单、低成本、高可用,无需管理Master节点。

无需管理任何节点,可直接启动应用程序。

收费方式

承担Master节点、Worker节点以及其他基础架构资源的费用。

承担Worker节点以及其他基础架构资源的费用。

按容器的资源使用量和时长计费。

丛集建立

未来预测:云端将迈向容器化-ASK & ACK

未来预测:云端将迈向容器化-ASK & ACK

未来预测:云端将迈向容器化-ASK & ACK

 


ASK应用场景

  • 应用托管:ASK丛集中无需管理和维护节点,无需容量规划,降低基础架构管理和运维成本。
  • 弹性业务负载:对于有着明显的波幅特征的业务负载,例如在线教育、电子商务等产业,ASK丛集的伸缩能力可以显著降低计算成本,减少闲置资源浪费,平滑应对突发流量高峰。
  • 定时任务:在ASK丛集中执行定时任务,任务结束停止计费。无需维护固定资源池,避免资源闲置浪费。
ASK的丛集建立比ACK丛集建立简单很多,而且也有按量收费等的优势。以下会示范使用 ASK 部署网站程序,并且会利用容器映像的不可变性作快速简单的复原。



ASK容器编程示范

1)在容器服务 – Kubernetes,按建立丛集 

未来预测:云端将迈向容器化-ASK & ACK

 

2)选择ASK丛集,输入丛集名称,然后选择地区、规格等,再按建立丛集

未来预测:云端将迈向容器化-ASK & ACK
 

3)建立丛集大概需要数分钟时间

未来预测:云端将迈向容器化-ASK & ACK

 

4)在工作负载-任务,按使用镜像建立

未来预测:云端将迈向容器化-ASK & ACK

 

5)输入应用名称,类型选Deployment,按下一步

未来预测:云端将迈向容器化-ASK & ACK

 

6)选择镜像名称和镜像TAG

未来预测:云端将迈向容器化-ASK & ACK


7)建立服务

未来预测:云端将迈向容器化-ASK & ACK

 

未来预测:云端将迈向容器化-ASK & ACK


8)建立完成后,按服务,可以找到负载均衡的外部IP未来预测:云端将迈向容器化-ASK & ACK

 

9)在浏览器打开负载平衡的外部IP便可以看到应用程序的响应

未来预测:云端将迈向容器化-ASK & ACK

 

10)另一方面,因为ASK是利用 Serverless的关系,所以在云服务器ECS里,是不会有任何的ECS instance 资源。

未来预测:云端将迈向容器化-ASK & ACK

 

容器的更新示范
以下是如何把新的镜像部署到kubernetes,可以注意镜像的版本是 nginx:1.7

1)按编辑

未来预测:云端将迈向容器化-ASK & ACK

 

2)选择镜像TAG,选1.21.0,按更新

未来预测:云端将迈向容器化-ASK & ACK

 

3)在容器组里,可以看到容器有序的逐步更新到指定的容器TAG版本

未来预测:云端将迈向容器化-ASK & ACK

 

容器的复原示范

1)选择Deployment ,选择复原。

未来预测:云端将迈向容器化-ASK & ACK

 

2)选择要复原到的版本

未来预测:云端将迈向容器化-ASK & ACK

 

3)可以在容器组看到容器有序的复原到指定的版本

未来预测:云端将迈向容器化-ASK & ACK

 
结语

这示范,可以看到使用容器编程可以非常快速和简单的部署应用程序镜像,而且因为容器镜像的不可变特性,在不同环境作部署或复原也可以变得快捷。加上现在使用容器编程能利用Serverless部署,进一部把使用容器化应用程序的费用和维护复杂性降低。
 



撰写人
未来预测:云端将迈向容器化-ASK & ACK

解决方案工程师
覃永德 Barry Chum