开发者学习笔记【阿里云云原生助理工程师认证(ACA)课程:容器技术基础-容器编排技术的崛起】
课程地址:https://edu.aliyun.com/course/3112075/lesson/19012
容器技术基础-容器编排技术的崛起
内容介绍:
一、容器编排优点
二、容器编排技术
一、容器编排优点
容器编排技术与Kubernetes 技术简介,首先来了解一下容器编排技术的崛起,随着容器技术的快速成熟与推广,容器技术解决了开发人员的生产力问题,使DevOps工作流变得异常流畅。
开发人员可以创建容器镜像,运行容器,并在该容器中开发代码,再将其部署在本地数据中心或公共云环境中实现应用的快速创建,越来越多的企业开始使用容器,并把企业自身的生产业务封装进容器,导致容器管理和编排遇到困难,在生产环境中,会涉及到多个容器;这些容器必须跨多个服务器主机进行部署,并且如何能够进行自动化的部署和快速的扩缩容是一个很大的问题。用户需要容器实施分组管理,以便跨所有容器提供网络、安全、监控等服务,以上这些都是容器docker所不具备的,它需要容器的编排能够实现对容器的管理和编排自动化的部署,提供完整的网络安全监控这样的服务体系,因此,容器技术就推动了容器编排技术的出现。
容器编排是指自动化容器的部署、管理、扩展和联网,容器编排可以为需要部署和管理成百上千个容器和主机的企业提供便利。根据容器技术的要求,容器编排需要具备以下关键能力。
首先需要大规模容器自动化部署,在部署中就需要处理大量的机器应用的程序和容器的自动部署,支持多个版本的应用程序容器并且还支持跨大量集群的滚动升级。这些工具还能快速简单的处理故障的回滚,容器编排应该具备大规模的容器自动化部署的能力,容器编排还能具备敏捷高效的资源调度,来屏蔽底层不同云之间的能力。
首先就要做的是,屏蔽底层集群服务,集群管理认为底层就是一个统一的容器编排的提供的集群服务。而这些机器在资源能力方面可能有些差异,大体上都是Linux操作系统可以通过集群的管理来形成一个统一的云端服务,无论是本地服务还是公有云或是私有云,它能够提供一个有效的混合云集中管理能力。
在资源方面能够提供资源的优化,降低成本,从简单的到复杂的算法来提供整个资源的利用率,资源分配方面需要基于应用开发人员设置的资源的可用性和约束来分配相应的服务器,资源分配来提供更好的健康和依赖性的问题,容器编排需要人向上层来提供一个敏捷高效的资源调度能力,第三个容器编排需要强大的弹性伸缩能力,可伸缩性就是支持应用的自动和手动弹性伸缩,以性能优化为主要目标,敏捷的弹性伸缩提供敏捷化的工具,能够快速的将工作负载分配到可用资源,或者在资源需求发生变化时能够跨机器跨设备去移动相应的资源,此外可以根据业务以及业务的临界性,业务的优先等级来设置约束的这种资源的调整,要求底层的容器编排能够具备一个强大的弹性伸缩能力。
容器服务本身可能随时会断线,随时会被下线,我们就需要容器服务能够具备一个自动化的自愈能力,并且从集群中移除一些异常的设备和异常的容器实例,然后重新进行相应的运行,能够保证这种服务的可用性,确保这个服务在机群中能够正常运行。
在机器故障的情况下,容器编排会自动的通过集群在其他机器上重新启动这些服务来处理故障,还需要一个自动化的服务,可以实现不同服务之间的快速访问和复杂区分,以上就是容器编排需要具备的能力,容器编排解决了这些问题,就能给我们带来很大的价值。
二、容器编排技术
容器编排蓬勃发展,出现了很多的容器编排技术DockerSwarm、Mesos、Kubernetes都在容器编排领域展开角逐。Swarm和Mesos 的特点,那就是各自只在生态和技术方面比较强。Kubernetes则兼具了两者优势,最终在 2017 年“三国争霸”的局面中得以胜出,成为了当时直到现在的容器编排标准。
Kubernetes是Google开源的一个容器编排引擎,支持自动化部署、大规模可伸缩、应用容器化管理和自愈发现能力,在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行自动化负载均衡。
左图,我们从官方网站中也可以看到它是一个工业级的容器编排平台,
Kubernetes这个单词是希腊语,它的中文翻译是剁手或者是飞行员,在一些资料中你会看到Kubernetes这个词,它是通过将八个字母Ubernete 替换成八而导致的一个缩写。Kubernetes具备很多核心的能力,包括容器的自动化部署,它可以快速的自动的进行多种容器实例自动化部署,这是弹性伸缩,这是多模式的自动化,水平自动化等等不同的弹性伸缩模式,操作模式控制的批量执行,具备服务发现与负载均衡,具备存储的编排能力,自动化的容器飞斧以及自动化的发布与回滚。
我们在Kubernetes中我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略实现对这一组应用实例的管理发现访问。这些细节都不需要运营人员去进行复杂的手工配置和处理,因为Kubernetes具备了一套非常核心的自动化处理的机制。