前言

最近正在抽时间编写k8s的相关教程,很是费时,等相关内容初步完成后,再和大家分享。对于k8s,还是上云更为简单、稳定并且节省成本,因此我们需要对主流云服务的容器服务进行了解,以便更好地应用于生产。


目录

主流云服务容器服务介绍 

  • 亚马逊AWS 

  • 微软Azure 

  • 阿里云 

  • 腾讯云 

Docker+ Kubernetes已成为云计算的主流 

  • 什么是Kubernetes(k8s) 

  • Kubernetes正在塑造应用程序开发和管理的未来 

  • Docker+ Kubernetes已成为云计算的主流 


主流云服务容器服务介绍

亚马逊AWS

Amazon Web Services (AWS) 是亚马逊公司旗下云计算服务平台,为全世界范围内的客户提供云解决方案。AWS面向用户提供包括弹性计算、存储、数据库、应用程序在内的一整套云计算服务,帮助企业降低IT投入成本和维护成本。

那么如何在AWS上运行Docker呢?AWS 同时为 Docker 开源解决方案和商业解决方案提供支持,并且可通过多种方式在 AWS 上运行容器:

  • Amazon Elastic Container Service (ECS),是一种高度可扩展的高性能容器编排服务,支持Docker容器,让我们可以在 AWS 上轻松运行和扩展容器化应用程序,而不需要安装和操作自己的容器编排软件,不需要管理和扩展虚拟机集群,也不需要在这些虚拟机上调度容器。其工作原理如下图所示:

  • AWS Fargate,适用于Amazon ECS的技术,可让我们在生产环境中运行容器,而无需部署或管理基础设施。

  • Amazon Elastic Container Service for Kubernetes (EKS) ,可以让我们在 AWS 上运行 Kubernetes,而无需安装和操作 Kubernetes 主节点。

  • Amazon Elastic Container Registry (ECR) ,是一个高度可用且安全的私有容器存储库,可以让我们能够轻松地存储和管理Docker 容器镜像,并对静态镜像进行加密和压缩,以便快速提取和保护这些镜像。

  • AWS Batch,可以让Docker 容器运行高度可扩展的批处理工作负载。

微软Azure

Microsoft Azure 是一个开放而灵活的企业级云计算平台。通过 IaaS + PaaS 帮助用户加快发展步伐,提高工作效率并节省运营成本。

Azure是一种灵活和支持互操作的平台,它可以被用来创建云中运行的应用或者通过基于云的特性来加强现有应用。它开放式的架构给开发者提供了Web应用、互联设备的应用、个人电脑、服务器、或者提供最优在线复杂解决方案的选择。

在容器这块,Azure同样的提供了众多解决方案:

下面我们侧重介绍下以下服务:

  • Azure 容器实例:Azure 容器实例提供了在 Azure 中运行容器的最简捷方式,既无需预配任何虚拟机,也不必采用更高级的服务。

  • Azure Service Fabric:Azure Service Fabric 是一款分布式系统平台,可方便用户轻松打包、部署和管理可缩放的可靠微服务和容器。 开发人员和管理员不需解决复杂的基础结构问题,只需专注于实现苛刻的任务关键型工作负荷,即那些可缩放、可靠且易于管理的工作负荷。总之,Azure Service Fabric 旨在解决构建和运行服务方面的难题,并有效地利用基础结构资源,使团队可以使用微服务方法来解决业务问题。并且,其与服务生成方式无关,可以使用任意技术。不过,它确实提供内置编程 API,以便用户可以更轻松地生成微服务。

  • Azure Kubernetes 服务 (AKS):AKS管理托管的 Kubernetes 环境,使用户无需具备容器业务流程专业知识即可快速、轻松地部署和管理容器化的应用程序。 它还通过按需预配、升级和缩放资源,消除了正在进行的操作和维护的负担,而无需使应用程序脱机。

  • Azure 应用服务:Azure应用服务是用于托管 Web 应用程序、REST API 和移动后端的服务。可以使用 .NET、NET Core、Java、Ruby、Node.js、PHP 或 Python 等偏好的语言进行开发。 在基于 Windows 和 Linux 的环境中,应用程序都可以轻松地运行和缩放。应用服务不仅可将 Microsoft Azure 的强大功能(例如安全性、负载均衡、自动缩放和自动管理)添加到应用程序。还能利用其DevOps功能,例如来自Azure DevOps、GitHub、Docker 中心和其他源的持续部署,以及包管理、过渡环境、自定义域和 SSL 证书。

  • Azure Dev Spaces:使用 Azure Dev Spaces,可以测试并以迭代方式开发在 Azure Kubernetes 服务 (AKS) 中运行的整个微服务应用程序,而无需复制或模拟依赖项。 Azure Dev Spaces 减少了在共享 Azure Kubernetes 服务 (AKS) 群集中与你的团队协作以及直接在 AKS 中运行和调试容器的负担,并降低了这些工作的复杂度。

阿里云

阿里云(www.aliyun.com)创立于2009年,是全球领先的云计算及人工智能科技公司,为200多个国家和地区的企业、开发者和政府机构提供服务。2017年1月阿里云成为奥运会全球指定云服务商。2017年8月阿里巴巴财报数据显示,阿里云付费云计算用户超过100万。阿里云致力于以在线公共服务的方式,提供安全、可靠的计算和数据处理能力,让计算和人工智能成为普惠科技。阿里云在全球18个地域开放了49个可用区,为全球数十亿用户提供可靠的计算支持。此外,阿里云为全球客户部署200多个飞天数据中心,通过底层统一的飞天操作系统,为客户提供全球独有的混合云体验。

飞天(Apsara)是由阿里云自主研发、服务全球的超大规模通用计算操作系统。 它可以将遍布全球的百万级服务器连成一台超级计算机,以在线公共服务的方式为社会提供计算能力。 从PC互联网到移动互联网到万物互联网,互联网成为世界新的基础设施。飞天希望解决人类计算的规模、效率和安全问题。飞天的革命性在于将云计算的三个方向整合起来:提供足够强大的计算能力,提供通用的计算能力,提供普惠的计算能力。飞天诞生于2009年2月,目前为全球200多个国家和地区的创新创业企业、政府、机构等提供服务。

同样,阿里云对容器也提供了友好的支持:

  • 容器服务 ACS

容器服务提供高性能可伸缩的容器应用管理服务,支持用Docker和Kubernetes进行容器化应用的生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。容器服务简化了容器管理集群的搭建工作,整合了阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器运行环境。

  • 容器服务 ACK

容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级 Kubernetes 容器化应用的全生命周期管理。容器服务 Kubernetes 版简化集群的搭建和扩容等工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。

  • 弹性容器实例 ECI

阿里云弹性容器实例(Elastic Container Instance)是 Serverless 和容器化的弹性计算服务。用户无需管理底层 ECS 服务器,只需要提供打包好的镜像,即可运行容器,并仅为容器实际运行消耗的资源付费。

  • 容器镜像服务 ACR

容器镜像服务(Container Registry)提供安全的镜像托管能力,稳定的国内外镜像构建服务,便捷的镜像授权功能,方便用户进行镜像全生命周期管理。容器镜像服务简化了Registry的搭建运维工作,支持多地域的镜像托管,并联合容器服务等云产品,为用户打造云上使用Docker的一体化体验。

腾讯云

腾讯云为腾讯倾力打造的云计算品牌,以卓越科技能力助力各行各业数字化转型,为全球客户提供领先的云计算、大数据、人工智能服务,以及定制化行业解决方案。其基于QQ、微信、腾讯游戏等海量业务的技术锤炼,从基础架构到精细化运营,从平台实力到生态能力建设,腾讯云将之整合并面向市场,使之能够为企业和创业者提供集云计算、云数据、云运营于一体的云端服务体验。

在容器这块,腾讯云提供了如下解决方案:

  • 容器服务 TKE

腾讯云容器服务(Tencent Kubernetes Engine ,TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务。腾讯云容器服务完全兼容原生 kubernetes API ,扩展了腾讯云的 CBS、CLB 等 kubernetes 插件,为容器化的应用提供高效部署、资源调度、服务发现和动态伸缩等一系列完整功能,解决用户开发、测试及运维过程的环境一致性问题,提高了大规模容器集群管理的便捷性,帮助用户降低成本,提高效率。容器服务提供免费使用,涉及的其他云产品另外单独计费。

  • 容器实例服务 CIS

容器实例服务(Container Instance Service , CIS)可以帮用户在云上快捷、灵活的部署容器,让用户专注于构建程序和使用容器而非管理设备上。无需预购 CVM(云服务器),就可以在几秒内启动一批容器来执行任务。同时,开发者也可以通过 kubernetes API 把已有kubernetes 集群的 pod 调度到 CIS 上以处理突增业务。CIS 根据实际使用的资源计费,可以帮用户节约计算成本。使用 CIS 可以极大降低用户部署容器的门槛,降低用户执行 batch 型任务或处理业务突增的成本。


Docker+ Kubernetes已成为云计算的主流

从上面主流的云服务中我们可以看到,没有哪家云厂商不支持Docker,同样的,也没有哪家云厂商不支持Kubernetes!也就是说,Docker+ Kubernetes已经成为云计算的主流!

什么是Kubernetes(k8s)

Kubernetes(简称k8s)诞生于谷歌,是一个开源的,用于管理云平台中多个主机上的容器化的应用,k8s的目标是让部署容器化的应用简单并且高效,其提供了应用部署、规划、更新、维护的机制。

k8s主要有以下特点:

  • 可移植

支持公有云,私有云,混合云,多重云(multi-cloud) 。可以将容器化的工作负载从本地开发计算机无缝移动到生产环境。在本地基础结构以及公共云和混合云中,在不同环境中协调容器,保持一致性。

  • 可扩展性

支持模块化,插件化,可挂载,可组合。并且k8s的扩展和插件在社区开发者和各大公司的支持下高速增长,用户可以充分利用这些社区产品/服务以添加各种功能。

  • 自动化和可伸缩性

支持自动部署,自动重启,自动复制,自动伸缩/扩展,并且可以定义复杂的容器化应用程序并将其部署在服务器群集甚至多个群集上——因为k8s会根据所需状态优化资源。通过内置的自动缩放器,k8s可轻松地水平缩放应用程序,同时自动监视和维护容器的正常运行。

Kubernetes正在塑造应用程序开发和管理的未来

k8s构建于 Google 数十年经验,一大半来源于 Google 生产环境规模的经验。结合了社区最佳的想法和实践,而且还在不断地高速迭代和更新之中。

她衔着金钥匙出生,一诞生就广受欢迎,更是在2017,其打败了所有的竞争对手,赢得了云计算的战争——主流的云厂商基本上都纷纷放弃了自己造“轮子”的举动,终止了各自的容器编排工具,加盟了k8s阵营,其中包括Red Hat、微软、IBM、阿里、腾讯、华为和甲骨文等。

k8s像风暴一样席卷了应用开发领域,并且已成为云原生应用程序(架构、组件、部署和管理方式)的事实标准,大量的开发者和企业正在使用k8s创建由微服务和无服务器功能组成的现代架构。

Docker+ Kubernetes已成为云计算的主流

容器是现代软件交付的未来,而Kubernetes是编排容器的最佳方案(事实上的标准)。

Docker 和Kubernetes相辅相成,联手打下了云计算的“万里江山”。Docker 为打包和分发容器化应用程序提供了一个开放的标准,而 Kubernetes 则协调和管理通过 Docker 创建的分布式容器化应用程序。换句话说,Kubernetes 提供了部署和运行通过Docker生成的应用程序所需的基础结构。

在主流的云服务,基于Docker+k8s的新型PaaS平台具有敏捷部署、弹性伸缩、灵活调度、故障自动恢复等优势,充分满足业务扩展中的资源支持,因此在短短两年之内,便从Docker Swarm、Cloud Foundry Diego、Kontena、Apache Mesos、Amazon ECS…等大量对手中脱颖而出,拿下了皇冠。

k8s和Docker的胜利意味着这是有史以来第一次,无论使用哪一种云平台,研发人员都可以拥有完全相同的计算环境。

作者:雪雁
出处:http://www.cnblogs.com/codelove/

Docker最全教程——从理论到实战(二十二)的更多相关文章

  1. Docker最全教程——从理论到实战(十二)

    前言 Ubuntu是一个以桌面应用为主的开源GNU/Linux操作系统,应用很广.本篇主要讲述Ubuntu下使用SSH远程登录并安装Docker,并且提供了Docker安装的两种方式,希望对大家有所帮 ...

  2. Docker最全教程——从理论到实战(十五)

    前言 Java是一门面向对象的优秀编程语言,市场占有率极高,但是在容器化实践过程中,发现官方支持并不友好,同时与其他编程语言的基础镜像相比(具体见各语言镜像比较),确实是非常臃肿. 本篇仅作探索,希望 ...

  3. Docker最全教程——从理论到实战(十九)

    Python目前是流行度增长最快的主流编程语言,也是第二大最受开发者喜爱的语言(参考Stack Overflow 2019开发者调查报告发布).笔者建议.NET.Java开发人员可以将Python发展 ...

  4. Docker最全教程——从理论到实战(十六)

    前言 与其他语言相比,Go非常值得推荐和学习,真香!为什么?主要是可以直接编译成机器代码(性能优越,体积非常小,可达10来M,见实践教程图片)而且设计良好,上手门槛低.本篇主要侧重于讲解了Go语言的优 ...

  5. Docker最全教程——从理论到实战(十四)

    本篇教程主要讲解基于容器服务搭建TeamCity服务,并且完成内部项目的CI流程配置.教程中也分享了一个简单的CI.CD流程,仅作探讨.不过由于篇幅有限,完整的DevOps,我们后续独立探讨. 为了降 ...

  6. Docker最全教程——从理论到实战(十)

    终于按时完成第二篇.本来准备着手讲一些实践,但是数据库部分没有讲到,部分实践会存在一些问题,于是就有了此篇以及后续——数据库容器化.本篇将从SQL Server容器化实践开始,并逐步讲解其他数据库的容 ...

  7. Docker最全教程——从理论到实战(十八)

    前言 VS Code是一个年轻的编辑器,但是确实是非常犀利.通过本篇,老司机带你使用VS Code玩转Docker——相信阅读本篇之后,无论是初学者还是老手,都可以非常方便的玩转Docker了!所谓是 ...

  8. Docker最全教程——从理论到实战(八)

    在本系列教程中,笔者希望将必要的知识点围绕理论.流程(工作流程).方法.实践来进行讲解,而不是单纯的为讲解知识点而进行讲解.也就是说,笔者希望能够让大家将理论.知识.思想和指导应用到工作的实际场景和实 ...

  9. Docker最全教程——从理论到实战(七)

    在本系列教程中,笔者希望将必要的知识点围绕理论.流程(工作流程).方法.实践来进行讲解,而不是单纯的为讲解知识点而进行讲解.也就是说,笔者希望能够让大家将理论.知识.思想和指导应用到工作的实际场景和实 ...

  10. Docker最全教程——从理论到实战(六)

    托管到腾讯云容器服务 托管到腾讯云容器服务,我们的公众号“magiccodes”已经发布了相关的录屏教程,大家可以结合本篇教程一起查阅.   自建还是托管? 在开始之前,我们先来讨论一个问题——是自建 ...

随机推荐

  1. 数据库主从监控脚本,数据传到influxdb

    #!/bin/bash port=`/usr/sbin/ss -ntlp | | awk '{print $4}' | awk -F":" '{print $2}'` array= ...

  2. [ERROR]pip insall pyodbc

    - 错误代码如下: pip install pyodbc Looking in indexes: http://172.16.1.250/repository/douban/simple Collec ...

  3. CoreLocation在iOS8上用法的变化

    1.在使用CoreLocation前需要调用如下函数[iOS8专用]: iOS8对定位进行了一些修改,其中包括定位授权的方法,CLLocationManager增加了下面的两个方法: (1)始终允许访 ...

  4. go每日新闻--2020-02-19

    gocn_news_2020-02-19 1.使用 t.Cleanup 做测试收尾 https://ieftimov.com/post/testing-in-go-clean-tests-using- ...

  5. toj 3616 Add number (没想到啊~~)

    Add number 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交: 60 测试通过: 21 描述 Employees of Baidu like ...

  6. DOTNET Core MVC(二)路由初探

    搁置了几天,工作忙的一塌糊涂,今天终于抽空来继续看看MVC的知识.先来看看MVC的路由是如何处理的.以下为替代的路由: app.UseEndpoints(endpoints => { endpo ...

  7. 解决.net core3.1使用docker部署在Ubuntu上连接sqlserver报error:35的问题

    最近把一个项目从core2.2迁移至core3.1,在本地win上跑没有问题,但是上线到生产Ubuntu docker环境下连接不上sqlserver报以下错误. A connection was s ...

  8. NetCore3.0实现自定义IOC容器注入

    在之前的ASP.NET MVC实现依赖注入一文中,通过替换默认的ControllerFactory来达到对Controller生命周期的拦截,实现自定义的对象注入,在NetCore3.0中需要重新实现 ...

  9. 掌握这四大MySQL知识点,吊打面试官

    作为一名后端开发,MySQL的使用必不可少,合理的使用索引和索引调优是后端开发者必须掌握的技能之一. 在日常数据库的问题当中,不合理的使用索引占大部分. MySQL是大家工作上最常用的关系型数据库之一 ...

  10. java面向对象入门(1)-入门介绍

    在本 Java OOPs 概念教程中,我们将学习四种主要的面向对象原则 -- 抽象.封装.继承和多态性.它们也被称为面向对象编程范式的四大支柱. _抽象_是在不考虑无关细节的情况下公开实体基本细节的过 ...