标签 云服务 下的文章

大学生用 GPT-3 生成伪文章成功骗过众人

加州大学伯克利分校的学生以 Adolos 为笔名开通博客,在其中发布由 GPT-3 模型生成的文章,第一篇就被顶至 Hacker News 头条,还被 medium 等各大平台转载,该博客迅速获得了 60 位关注者及大约 2.6 万访问量。但注意到文章是由人工智能生成,且提出质疑的人屈指可数。这篇题为《觉得生产力低下?也许你应该停止过度思考》的文章,仅指定了标题和简介,其他内容都交由 GPT-3 完成,却引来一众网友共情并应声附和。

来源:开源中国

拍一拍:或许,等 GPT-3 的使用门槛进一步降低后,很多人的工作都不在需要。

G Suite 服务宕机数小时

根据 G Suite Status Dashboard 上的信息,多个 Google 服务宕机数小时,Google 尚未给出解释,只是表示正在调查问题。受到影响的服务包括 Gmail、Google Drive、Google Docs、Google Slides、Google Sites、Google Groups、Google Chat 和 Google Meet。

来源:solidot

拍一拍:云服务垄断了互联网服务的同时,无论是哪家云服务商,均出现过大范围的、长时间的服务故障,或许这就是集中化、规模化带来副作用。

Grafana 的开发商 Grafana Labs 宣布已完成 5000 万美元的 B 轮融资

2019 年 10 月的首轮融资,当时该公司筹得 2,400 万美元。Grafana 是一款开源的可视化系统指标监控与分析平台,支持与包括 Graphite、Elasticsearch、OpenTSDB、Prometheus 和 InfluxDB 等在内的众多数据源集成。

来源:开源中国

拍一拍:真正有影响力的开源软件,一样能赢得资本市场的青睐。

了解了云行业的标准,该向你的家庭实验室自动添加新设备和用户了。

Cloud-init(可以说)是一个标准,云提供商用它来为云实例提供初始化和配置数据。它最常用于新实例的首次启动,以自动完成网络设置、账户创建和 SSH 密钥安装等使新系统上线所需的任何事情,以便用户可以访问它。

在之前的一篇文章《修改磁盘镜像来创建基于树莓派的家庭实验室》中,我展示了如何为像树莓派这样的单板计算机定制操作系统镜像以实现类似的目标。有了 Cloud-init,就不需要向镜像中添加自定义数据。一旦在镜像中启用了它,你的虚拟机、物理服务器,甚至是小小的树莓派都可以表现得像你自己的 “家庭私有云” 中的云计算实例。新机器只需插入、打开,就可以自动成为你的家庭实验室的一部分。

说实话,Cloud-init 的设计并没有考虑到家庭实验室。正如我所提到的,你可以很容易地修改给定的一套系统磁盘镜像,以启用 SSH 访问并在第一次启动后对它们进行配置。Cloud-init 是为大规模的云提供商设计的,这些提供商需要容纳许多客户,维护一组小的镜像,并为这些客户提供访问实例的机制,而无需为每个客户定制一个镜像。拥有单个管理员的家庭实验室则不会面临同样的挑战。

不过,Cloud-init 在家庭实验室中也不是没有可取之处。教育是我的家庭私有云项目的目标之一,而为你的家庭实验室设置 Cloud-init 是一个很好的方式,可以获得大大小小的云提供商大量使用的技术的经验。Cloud-init 也是其他初始配置选项的替代方案之一。与其为家庭实验室中的每台设备定制每个镜像、ISO 等,并在你要进行更改时面临繁琐的更新,不如直接启用 Cloud-init。这减少了技术债务 —— 还有什么比个人技术债务更糟糕的吗?最后,在你的家庭实验室中使用 Cloud-init 可以让你的私有云实例与你拥有的或将来可能拥有的任何公有云实例表现相同 —— 这是真正的混合云

关于 Cloud-init

当为 Cloud-init 配置的实例启动并且服务开始运行时(实际上是 systemd 中的四个服务,以处理启动过程中的依赖关系),它会检查其配置中的数据源,以确定其运行在什么类型的云中。每个主要的云提供商都有一个数据源配置,告诉实例在哪里以及如何检索配置信息。然后,实例使用数据源信息检索云提供商提供的配置信息(如网络信息和实例识别信息)和客户提供的配置数据(如要复制的授权密钥、要创建的用户账户以及许多其他可能的任务)。

检索数据后,Cloud-init 再对实例进行配置:设置网络、复制授权密钥等,最后完成启动过程。然后,远程用户就可以访问它,准备好使用 AnsiblePuppet 等工具进行进一步的配置,或者准备好接收工作负载并开始分配任务。

配置数据

如上所述,Cloud-init 使用的配置数据来自两个潜在来源:云提供商和实例用户。在家庭实验室中,你扮演着这两种角色:作为云提供商提供网络和实例信息,作为用户提供配置信息。

云提供商元数据文件

在你的云提供商角色中,你的家庭实验室数据源将为你的私有云实例提供一个元数据文件。这个元数据文件包含实例 ID、云类型、Python 版本(Cloud-init 用 Python 编写并使用 Python)或要分配给主机的 SSH 公钥等信息。如果你不使用 DHCP(或 Cloud-init 支持的其他机制,如镜像中的配置文件或内核参数),元数据文件还可能包含网络信息。

用户提供的用户数据文件

Cloud-init 的真正价值在于用户数据文件。用户数据文件由用户提供给云提供商,并包含在数据源中,它将实例从一台普通的机器变成了用户舰队的一员。用户数据文件可以以可执行脚本的形式出现,与正常情况下脚本的工作方式相同;也可以以云服务配置 YAML 文件的形式出现,利用 Cloud-init 的模块 来执行配置任务。

数据源

数据源是由云提供商提供的服务,它为实例提供了元数据和用户数据文件。实例镜像或 ISO 被配置为告知实例正在使用什么数据源。

例如,亚马逊 AWS 提供了一个 link-local 文件,它将用实例的自定义数据来响应实例的 HTTP 请求。其他云提供商也有自己的机制。幸运的是,对于家庭私有云项目来说,也有 NoCloud 数据源。

NoCloud 数据源允许通过内核命令以键值对的形式提供配置信息,或通过挂载的 ISO 文件系统以用户数据和元数据文件的形式提供。这些对于虚拟机来说很有用,尤其是与自动化搭配来创建虚拟机。

还有一个 NoCloudNet 数据源,它的行为类似于 AWS EC2 数据源,提供一个 IP 地址或 DNS 名称,通过 HTTP 从这里检索用户数据和元数据。这对于你的家庭实验室中的物理机器来说是最有帮助的,比如树莓派、NUC 或多余的服务器设备。虽然 NoCloud 可以工作,但它需要更多的人工关注 —— 这是云实例的反模式。

家庭实验室的 Cloud-init

我希望这能让你了解到 Cloud-init 是什么,以及它对你的家庭实验室有何帮助。它是一个令人难以置信的工具,被主要的云提供商所接受,在家里使用它可以是为了教育和乐趣,并帮助你自动向实验室添加新的物理或虚拟服务器。之后的文章将详细介绍如何创建简单的静态和更复杂的动态 Cloud-init 服务,并指导你将它们纳入你的家庭私有云。


via: https://opensource.com/article/20/5/cloud-init-raspberry-pi-homelab

作者:Chris Collins 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在过去十年中,从 Linux 和 MySQL 到 Kubernetes、Spark、Presto 和 MongoDB,开源一直是云的创新支柱。但最近的一些事态发展为开源背后的商业模式带来了阴霾,业界现在必须采取行动,以避免扼杀其最大的创新来源之一。

作为 Apache Hive 项目的共同创始人和前负责人,我知道激励对于开源生态系统的蓬勃发展至关重要。独立开发者需要激励他们为开源项目贡献自己的时间和技能,而那些具有创业思维的人需要激励他们围绕这些项目建立公司以帮助它们蓬勃发展。

公有云可能会破坏这些激励因素,因为它改变了开源的形态。大型云服务商很容易将开源项目拿来,并将其作为托管服务提供个客户。如果它是在没有回馈社区的情况下这样做的,它就是从别人的工作中获得不公平的利润,从而破坏了开源所需要的蓬勃发展的动力。

我们在围绕 AWS 的当前讨论中已经看到了这一点,AWS 被指责 将开源项目作为服务而提供,并对这些开源项目进行品牌重塑,却不总是回馈这些开源社区。这促使包括 ConfluentRedis LabsMongoDB 在内的开源软件供应商使用了新的许可证,以阻止大型商业云服务商将其代码作为托管服务提供。

我不认为这是一种正确的方法。这些新的许可证尚未得到 开源推进组织 Open Source Initiative (OSI)的认可,并且它们有可能会混淆开源软件的使用权。正如 软件自由保护协会 Software Freedom Conservancy 主席 Bradley M. Kuhn 所说,软件自由应该“对所有人来说都是平等的,无论他们是否是商业行为者。”开源之所以蓬勃发展,是因为这个原则一直受到尊重,任何模糊不清的地方都可能会阻止人们加入社区。

我同情那些寻求保护其业务的开源公司。尽管独立开发人员付出了很多的努力,但开源项目需要公司的资源和管理工作才能被视为足够稳定,才足以供企业广泛使用。Linux 在企业领域中起飞,是因为 Red Hat 和 IBM 全力支持它。Kubernetes 的发展是如此的快,也是因为它得到了谷歌的支持。当然也有例外,但如果一个开源项目背后有一家公司,那么这个开源项目更有可能在大型企业中取得成功。

我需要说明一下我的利益相关立场。我的公司提供了一个基于云的数据分析平台,该平台严重依赖 Spark、Presto 和 Hive 等开源组件。与此同时,我们通过两个项目回馈社区,成为优秀的开源公民:Sparklens,一个提高 Spark 应用程序性能的框架;以及 RubiX,一个提升 Presto 和 Spark 性能的缓存框架。

在云中提供开源软件有助于这些项目吸引更多用户和开发人员。但是,如果商业云服务商获利不公平,则会对下一代企业家程序员们构建开源公司和投资者支持他们产生抑制作用。

因此,如果新的许可证不是解决方案,那么什么是呢?

部分要靠大型云服务商的公平竞争。我不认为 AWS 是“邪恶的”,他们的行为是他们认为最符合他们商业利益的行为。但他们需要认识到,从长远来看,破坏开源对他们的伤害会像对其它人的伤害一样。开源倡导者应该继续提高对这个问题的认识,并对云服务商施加公众压力,以便让他们采取负责任的行动。我们已经看到证据表明这种压力可行

我们还需要一个开源的“ 道德规范 code of ethics ”,由社区(贡献者、项目负责人)和开源组织(如 OSI 和 Apache)创建。一个企业的行为即便是 100% 符合开源许可证,但仍然能够以损害社区的方式行事。这个道德规范能够指出一个广泛认可的道德准则,列出了不可接受的做法,这将使公司和个人对他们的行为负责。

最终的推动力来自于竞争。确实,大型云服务商在吸引客户方面具有优势;它们被 CIO 们视为“简单”和“安全”之选。但客户也可以选择最好的软件和支持。如果开源公司能够为他们自己的发布版本提供更好的功能和更好的支持,他们可以说服客户选择他们自己的产品。

我已经概述了社区可以采取的改善这种情况的行动,但我们每个人也都可以以个人身份采取行动。通过让云服务商了解我们的担忧,我们能够对市场产生一定的影响。要求他们通过反馈表和产品论坛向社区提供特定功能,这是让你发出自己的声音的一种方式。这些云服务商的开发人员也在开源论坛中闲逛,并希望成为开源社区的一员;让这些要求引起他们的注意会促使这种改变。

我们所面临的这个挑战并没有简单的解决方案,但我们需要认真对待。开源模式并不脆弱,不会在一夜之间崩坏。但是,如果商业云服务商继续利用开源项目而不给予回馈,那么他们就会削弱帮助开源成功的激励措施。杀死产下金蛋的鸡并不符合他们的利益,这肯定也不符合开发者和客户的利益。


via: https://venturebeat.com/2019/04/14/how-open-source-can-survive-the-cloud/

作者:Ashish Thusoo 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

所有人都在讨论云。尽管市面上有很多为我们提供云存储和其他云服务的主要服务商,但是我们还是可以为自己搭建一个私有云。

在本教程中,我们将讨论如何利用 OwnCloud 搭建私有云。OwnCloud 是一个可以安装在我们 Linux 设备上的 web 应用程序,能够存储和用我们的数据提供服务。OwnCloud 可以分享日历、联系人和书签,共享音/视频流等等。

本教程中,我们使用的是 CentOS 7 系统,但是本教程同样适用于其他 Linux 发行版中安装 OwnCloud。让我们开始安装 OwnCloud 并且做一些准备工作,

预备

$ sudo yum install php-mysql php-json php-xml php-mbstring php-zip php-gd curl php-curl php-pdo

安装

安装 OwnCloud,我们现在需要在服务器上下载 OwnCloud 安装包。使用下面的命令从官方网站下载最新的安装包(10.0.4-1):

$ wget https://download.owncloud.org/community/owncloud-10.0.4.tar.bz2

使用下面的命令解压:

$ tar -xvf owncloud-10.0.4.tar.bz2

现在,将所有解压后的文件移动至 /var/www/html

$ mv owncloud/* /var/www/html

下一步,我们需要在 Apache 的配置文件 httpd.conf 上做些修改:

$ sudo vim /etc/httpd/conf/httpd.conf

更改下面的选项:

AllowOverride All

保存该文件,并修改 OwnCloud 文件夹的文件权限:

$ sudo chown -R apache:apache /var/www/html/
$ sudo chmod 777 /var/www/html/config/

然后重启 Apache 服务器执行修改:

$ sudo systemctl restart httpd

现在,我们需要在 MariaDB 上创建一个数据库,保存来自 OwnCloud 的数据。使用下面的命令创建数据库和数据库用户:

$ mysql -u root -p
MariaDB [(none)] > create database owncloud;
MariaDB [(none)] > GRANT ALL ON owncloud.* TO ocuser@localhost IDENTIFIED BY 'owncloud';
MariaDB [(none)] > flush privileges;
MariaDB [(none)] > exit

服务器配置部分完成后,现在我们可以在网页浏览器上访问 OwnCloud。打开浏览器,输入您的服务器 IP 地址,我这边的服务器是 10.20.30.100:

安装 owncloud

一旦 URL 加载完毕,我们将呈现上述页面。这里,我们将创建管理员用户同时提供数据库信息。当所有信息提供完毕,点击“Finish setup”。

我们将被重定向到登录页面,在这里,我们需要输入先前创建的凭据:

安装 owncloud

认证成功之后,我们将进入 OwnCloud 面板:

安装 owncloud

我们可以使用手机应用程序,同样也可以使用网页界面更新我们的数据。现在,我们已经有自己的私有云了,同时,关于如何安装 OwnCloud 创建私有云的教程也进入尾声。请在评论区留下自己的问题或建议。


via: http://linuxtechlab.com/create-personal-cloud-install-owncloud/

作者:SHUSAIN 译者:CYLeft 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

认识 71 个 AWS 云服务的术语 ! 通过了解 AWS 世界中使用的术语开始你的 AWS 云服务使用生涯 !

AWS,即 亚马逊 Web 服务 Amazon Web Services ,是一个提供了一系列按使用计费的 web 服务的云平台。 它是迄今为止最为著名的云平台之一。由于其灵活性、有效性、弹性、可测量性和无须维护,所以有一些企业正逐步把他们的业务迁移到云端。 由于许多公司目前在使用这些服务,所以对于系统管理员和运维人员来说应该了解一下 AWS。

这篇文章旨在列出这些 AWS 提供的服务并且解释在 AWS 中出现的术语。

截止到目前为止(2017 年 3 月),AWS 提供了分为 17 组的共计 71 种服务:

计算型服务

这是一个提供了虚拟服务器配置功能的服务,即所谓的云计算。它提供了包括以下这一系列的服务。

  1. EC2:EC2 代表弹性计算云。这种服务提供了可根据个人需求扩展的 虚拟机。
  2. EC2 容器服务:其高性能,高可扩展性使其可在 EC2 集群环境中运行服务。
  3. Lightsail:该服务使用户非常容易地启动和管理虚拟服务器(EC2)。
  4. Elastic Beanstalk:该服务能够自动管理你的应用程序的容量配置、负载平衡、扩展以及健康监控从而减少你的管理压力。
  5. Lambda:它允许你只在你需要的时候运行代码而不用去管理服务器。
  6. Batch:它使用户能够以自定义的管理方式运行计算工作负载(批处理)。

存储型服务

它是一种云存储服务,即由 Amazon 提供的云存储设施。 该组服务包括:

  1. S3:S3 代表简单存储服务(3 个 S)。 它给你提供了在线存储服务,你可随时从任何地方存储/检索任何数据。
  2. EFS:EFS 代表弹性文件系统。 它是一个可以和 EC2 服务器一起使用的在线存储服务。
  3. Glacier:它是一种低成本/低性能数据存储解决方案,主要针对存档或长期备份。
  4. Storage Gateway:这种服务的接口会将你的内部应用程序(托管在 AWS 之外)与 AWS 存储连接。

数据库

AWS 还提供在其基础设施上托管数据库,以便客户可以利用亚马逊最先进的技术来获得更快/高效/安全的数据处理。 该组包括:

  1. RDS:RDS 代表关系数据库服务。 用于在云上设置,操作和管理关系数据库。
  2. DynamoDB:其 NoSQL 数据库提供了快速处理和高可扩展性。
  3. ElastiCache:这是一种为你的 Web 应用程序管理内存缓存以便更快运行它们的方案 !
  4. Redshift:它是一个巨大的(PB 级)的完全可升级的云端数据仓库服务。

网络 & 内容分发

由于 AWS 提供云端的 EC2 服务器,因此网络相关内容也将在出现在这里。 内容分发用于向位于最近位置的用户提供文件。 现如今有许多非常有名的加速网站。

  1. VPC:VPC 代表虚拟私有云。 它是你自己的虚拟网络,是你的专用 AWS 帐户。
  2. CloudFront:这是 AWS 的内容分发网络(CDN)服务。
  3. Direct Connect:它是将数据中心/场所与 AWS 连接起来的网络方式,以提高吞吐量,降低网络成本,并避免由于基于互联网的连接而导致的连接问题。
  4. Route 53:它是一个云端的域名系统的 DNS Web 服务。

迁移

它提供了一系列服务来帮助你实现本地服务到 AWS 的迁移工作。 这包括 :

  1. Application Discovery Service:专门用于分析您的服务器、网络、应用程序以帮助/加速迁移的服务。
  2. DMS:DMS 指的是数据库迁移服务。 它用于将数据从本地数据库迁移到 EC2 上托管的 RDS 或 DB。
  3. Server Migration:也称为 SMS(服务器迁移服务)是一种无代理服务,将您的工作负载从本地移动到 AWS。
  4. Snowball: 当你想要使用物理存储设备(而不是基于互联网/基于网络的传输)将大量数据传入/迁出 AWS 时,你应该使用它。

开发者工具

顾名思义, 这是一系列帮助开发者简化在云端编码的服务。

  1. CodeCommit:它是一个安全的、可扩展的、可管理的源代码管理服务,用于托管代码仓库。
  2. CodeBuild:这是一个云端的代码生成器。主要用于执行、测试代码和构建部署软件包。
  3. CodeDeploy:这是一个可在 AWS 服务器或本地进行自动化应用程序部署的部署服务。
  4. CodePipeline:这个部署服务可以使编码人员可以在发布之前将其应用程序可视化。
  5. X-Ray:它可以使用事件调用分析应用程序。

管理工具

这是一组可帮助你管理 AWS 上的 Web 服务的服务。

  1. CloudWatch:监控你的 AWS 资源或应用程序的监控服务。
  2. CloudFormation:基础设施即代码!以集体有序的方式管理 AWS 架构的方式。
  3. CloudTrail:AWS 帐户的审计和合规工具。
  4. Config : AWS 的资源清单、配置历史记录和配置更改通知,以实现安全性和治理。
  5. OpsWorks:它可以自动化地配置,部署 EC2 或内部部署计算。
  6. Service Catalog:创建和管理被批准在你/公司帐户中使用的 IT 服务目录。
  7. Trusted Advisor:它的 AWS AI 可以通过审查你的 AWS 基础设施使你的 AWS 基础设施更好,更省钱。
  8. Managed Service:提供持续的基础设施管理。

安全性、身份和合规

这是一组很重要的 AWS 服务以确保你的 AWS 空间的安全性。

  1. IAM:IAM 即身份和访问管理,控制用户访问你的 AWS 资源和服务。
  2. Inspector:自动安全评估可帮助你在 AWS 上的应用安全和合规。
  3. Certificate Manager:为 AWS 应用程序提供,管理和部署 SSL / TLS 证书。
  4. Directory Service:相当于 AWS 的 Microsoft Active Directory。
  5. WAF & Shield:WAF 即 Web 应用防火墙。 监控和控制对 CloudFront 或负载均衡器上的内容的访问。
  6. Compliance Reports:AWS 基础设施空间的合规报告,以确保您的应用程序符合您的策略。

数据分析

AWS 空间的数据分析服务,以帮助您查看、计划和对帐户中的事件采取行动。

  1. Athena:它是一个基于 SQL 查询的服务,用于分析 S3 存储的数据。
  2. EMR:EMR 的全写是 Elastic Map Reduce。 是一个主要用于大数据处理和分析的服务。
  3. CloudSearch:AWS 在应用和服务中的搜索功能。
  4. Elasticsearch Service:它可以创建一个域并在 AWS Cloud 中部署、操作和扩展 Elasticsearch 集群。
  5. Kinesis:这种服务可以实现实时的大量流数据处理。
  6. Data Pipeline:它可以帮助我们在不同的 AWS 服务之间实现数据迁移。
  7. QuickSight:收集、分析和呈现 AWS 的业务数据。

人工智能

AWS 的 AI!

  1. Lex:它可以帮助我们在一些使用语音和文本的应用中构建会话界面。
  2. Polly:这是一个提供文字到语音转换的服务。
  3. Rekognition:使您能够将图像分析添加到应用程序。
  4. Machine Learning:它具有学习数据中的模式的算法。

物联网

这个服务保证了 AWS 在不同设备上的高可用性。

  1. AWS IoT:它使联网硬件设备与 AWS 的应用程序能够交互。

游戏开发

顾名思义,这个服务旨在游戏开发。

  1. Amazon GameLift:该服务旨在部署、管理用于会话的多人游戏的专用游戏服务器。

移动服务

这是一组主要针对手持设备的服务。

  1. Mobile Hub:帮助您创建移动应用的后台功能并将其集成到移动应用。
  2. Cognito:在连接了互联网设备上控制移动用户的身份验证和 AWS 的访问。
  3. Device Farm:移动应用测试服务使你可以在 Android 上托管的真实手机上跨 Android、iOS 测试应用。
  4. Mobile Analytics:在 AWS 上测量、跟踪和分析移动应用数据。
  5. Pinpoint:针对性的推送通知和移动互动。

应用服务

这是一组可以和你在 AWS 上的应用一起使用的服务。

  1. Step Functions:定义和使用应用程序中的各种功能。
  2. SWF:SWF 代表简单的工作流服务。其云工作流程管理可帮助开发人员在应用程序生命周期的不同阶段进行协调和贡献。
  3. API Gateway:帮助开发人员创建、管理和托管 API。
  4. Elastic Transcoder:帮助开发人员将媒体文件转换为在各种设备上可以播放的格式。

消息

AWS 中的通知和消息服务。

  1. SQS:SQS 表示简单队列服务。完全管理的消息队列服务,用于在 AWS 中的服务和应用之间进行通信。
  2. SNS:SNS 代表简单通知服务。 为 AWS 用户推送通知服务,提醒他们有关其在 AWS 空间中的服务。
  3. SES:SES 代表简单电子邮件服务。 这是 AWS 为自己的客户提供高性价比的电子邮件服务。

企业生产率

一组帮你提高业务生产率的服务。

  1. WorkDocs:协同文件共享、存储和编辑服务。
  2. WorkMail:安全的商务邮件、日程服务。
  3. Amazon Chime:在线的企业会议!

桌面和应用程序流式传输

实现桌面应用程序通过云端进行流传输。

  1. WorkSpaces:完全管理且安全的云计算服务。
  2. AppStream 2.0:来自云端的流式桌面应用。

(题图:rackaid.com)


via: http://kerneltalks.com/virtualization/aws-cloud-terminology/

作者:Shrikant Lavhate 译者:chenxinlong 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

 title=

与互联网领域的领导们关于"容器"的讨论通常被总结如下:

作为一名 CxO,我面临杠杆时间术的持续的压力。IT 预算不断减少,我只有有限的资源。然而,交付的工作量却比以往更多。我花费太多的时间致力于解决预算的约束。另外,互联网的格局正在经历一个快速的改变,而且新的技术一直在被引进。我从我最信任的顾问那听来的最新的话题是一个“容器策略”的实现。我想理解:

  1. 什么是容器?
  2. 过渡到容器的企业价值是什么?
  3. 为什么我现在应该转移到容器?如果我不采纳会有一些坏处吗?
  4. 容器是否已经足够成熟用于企业消费?
  5. 我如何让我的企业因使用容器而快速地发展?

让我们从最开头开始。

容器

在过去的 10 年左右,企业已经从物理基础设施转向了虚拟机(VM)。转向 VM 的关键优势是可以减少数据中心的用量。通过在同一个物理机器上运行多个虚拟机,你可以在更少数量的物理机器上安装更多的应用程序。使用容器是另一种更轻量地打包应用程序的方式,而且其交付模式更快。它们是一种在单一的机器里运行多个应用程序进程的奇特方式,无论那个机器是一个虚拟机还是一个物理机。另外,容器在 DevOps 、微服务和云战略场景方面也扮演了重要角色。

容器 vs 虚拟机

容器和虚拟机在一些方面并不相同。一台虚拟机尽管不是物理机,但是它表现地就像是一台物理机。虚拟机是一个包含所有东西的独立的环境,是一个完整的(来宾)操作系统。在另一方面,容器是一个共享同一个物理机或虚拟机上资源的进程。容器显然更加有趣,因为:

  • 相比较而言,虚拟机要重一些,而容器更轻。因为容器只包括了它们所运行的程序所需要的库。
  • 虚拟机需要花费几分钟来启动,而容器在几秒钟内就可以启动。
  • 通常,相比虚拟机,你的基础设施中可以容纳更多的容器。

 title=

技术已经发展到足以保持这些容器安全、彼此独立,而且正确的设计选择可以保证那些坏掉的容器不会影响运行在同一个机器里的其他容器的性能。实际上,操作系统天生就是被用来构建成优化和运行容器的。

然而,当你转向容器时,你需要做出正确的选择。你需要做足够的尽职调查,以便你选择合适的技术合作伙伴和能够制作容器的制造商。开源技术起着很关键的作用。开源的 Docker 项目使得分层格式的容器很容易构建和使用。开放容器计划(OCI)已经成为被所有主要技术供应商所支持的开源容器标准。如 Red Hat 这样的开源技术提供商提供了为容器而准备的安全的操作系统。例如, Red Hat Enterprise Linux 7.x (包括 Red Hat Enterprise Linux 原子主机)进行了优化以原生地运行容器,同时也提供监控和管理容器的工具。其他的开源项目如来自 Tectonic 的 CoreOS 也正在进入市场。的确,容器正等着被企业所采用。

容器平台

容器平台让容器成为企业消耗品。在过去这些年中,你可能在你的企业里处理过虚拟机散乱的问题,容器散乱比那要糟糕好几倍。在你的数据中心横跨不同主机运行不同规模的容器,尽管容器故障仍然保证你的应用程序的高可用性,自动化健康检查和基于流入的工作载荷的自动化容器缩放等等,这些是你能期待容器平台应该有的一些关键特性。

当在一个被定位为容器即服务模型(CaaS)的平台上运行容器时,这些平台的一些其它特性如自动化生成和部署使这个平台成为平台即服务模型(PaaS)。虽然 CaaS 能让你规模化运行容器,但是,PaaS 可以让你利用你的源代码编译、创建容器,为你运行那些容器。另外,这些平台提供了完整操作管理特性,例如,集群的管理和监控、容器的安全缺陷检测,以及安全地运行容器、跟踪日志和度量等等。

尽管一些技术供应商正在使用他们的专有技术来构建容器平台,但总的来说,企业们正在围绕建立在 Kubernetes(K8S)的基础上的开源技术而进行标准化。K8S 是一项由 Google 发起的开源项目,现在很多大平台的供应商也支持它。K8S 也是云端原生计算基金会(CNCF)的一部分,CNCF 正在发展成以云为中心技术的标准体。当你在容器平台上做出选择时,围绕开源流程编排技术的标准化是非常重要的。它基本上允许你移植到不同的容器平台,如果你不喜欢你第一次做的选择的话。K8S 还允许你的容器工作载荷可跨越不同的公有云进行迁移。这些就是为什么我们会看到越来越多的技术公司正在使用 Kubernetes 的原因。

一些企业正在试图通过拼接几个包括 K8S 在内开源项目来打造他们自己 DIY 的容器平台。这确实是比继续跟随专有技术要更好的一种解决方案,但是要完成这项工作也仍然包含很多需要探讨的地方。然而,一个企业的维护和保持这样的 DIY 平台的能力应该被认真评估。许多企业并不是想做创建 IT 平台的工作,而是他们希望运行自己的主流业务。有很多可行的基于 K8S 的解决方案,比如红帽 OpenShift 平台容器ApprendaDeisRancher,它们提供一个企业级平台,这些解决方案中的每种都有不同完整程度的功能。

这些解决方案是由供应商认证和支持。有些方案是完全的开源 PaaS 解决方案,而另外一些可能是 CaaS。根据你的企业的需求,这些解决方案可能是比 DIY 容器平台更好的替代品。

企业的担忧和它们与容器的关系

今天,几乎每个企业都正在与数字时代转型打交道,这些转型影响包括 DevOps 战略、微服务和云等多个领域。容器在这些领域中的每一个中都起着相当重要的作用。

DevOps 策略

IT 组织被分成运维和应用开发,他们作为两个独立的团队运作,每一队都只有他们自己的一套目标。大多数企业为了将这两个团队联合起来正在朝 DevOps 的方向前进。

容器在 DevOps 倡议的成功中发挥着重要的作用。在 DevOps 中成功的关键标准之一是增加开发人员在运营中的份额。开发人员不仅应该把代码交给运维人员,而且他们还应该考虑他们的代码是如何在生产环境中运行的。普遍的技术是采用“架构即代码”,而不是提供几页容易出错的安装说明指示,开发团队应该提供像编程时的环境配置。

这恰恰就是容器可以解决的问题。可以作为容器的模版的容器镜像包括了从基本操作系统到应用程序代码的整个环境堆栈。利用容器,开发人员将不再只是从 Dev 到 QA 再到 Prod 这样生成应用程序;相反,他们将传递一个版本化的容器镜像,这个镜像包括生成的运行程序和它运行需要的环境。容器是包罗万象的,从操作系统库到中间件再到应用程序的所有东西都被整合进一个镜像里面。因此,容器在开发环境运行的方式和它在质量保证环境和生产环境下运行的方式完全一样。容器是 DevOps 成功的重要因素。

 title=

另外,容器平台正在进一步发展。典型的持续集成和交付(CICD)工具,如 Jenkins,可以作为容器,这个容器能在容器平台本身运行整个 CICD 过程,而不需要额外的基础设施。现在你可以使用 PaaS 平台来生成和运行你的 CICD 管道。

微服务策略

微服务是今天 IT 领域的另一个热门话题。应用程序是这样被设计的:把应用程序分解为离散化的小的服务,每个服务完成一个小任务。这些服务中的每一个都可以根据合适的技术用不同的编程语言进行编写。它们可以由小团队(双比萨团队)创建和管理,并且可以迅速地改变它们。所有这些要求再次需要用到容器。容器足够小到成为微服务的基础。容器能够支持任何你选择的技术和语言,容器易于创建和运行,并且可以快速地改变。微服务和容器现在已经不分彼此,如果有人说不使用容器来实现微服务,他们将会受到别人奇怪的表情。

实际情况是,虽然微服务有望让情况变得简单,但是它们的扩张也增加了复杂性。有几个微服务的设计和开发模式将能使它们易于实现。这意味着开发人员现在急需这样一个开发平台,在这个平台下,开发人员可以轻松地部署和组织微服务,而且还能:

  • 以一种语言不可知的方式实现这些微服务设计模式。
  • 不会因代码侵入而增加代码的复杂性,以便开发人员能将许多模式的代码包括进他们的业务逻辑中。
  • 足够灵活以便部署在你所选择的基础设施上,并且不会把你捆绑在特定的云上。

这就是选择一个正确的容器平台所起作用的地方。在具体的基础设施上按照某一特定供应商的方法来实现这些微服务将会把你的应用程序捆绑在那些供应商的平台上。使用类似兼容 OCI 的容器的容器化微服务将可以保证你的微服务能够被运行在任何兼容 OCI 的平台上。

选择正确的容器平台来运行你的微服务是需要做的另一个重要的决定。今天,有很少的选择和许多的 FUD。如果你作出选择时不足够慎重,其中一些选择会把你带到非标准的、特定供应商的路线上。

云策略

云战略是 IT 领域的又一个热门话题。无论你是否喜欢,服务化模型都是不可避免的变化。如果你不将其作为 IT 服务进行提供,你的开发团队将可能会找到创建“shadow IT”的方法来访问云。另外,尽管使用云技术将会让你从资本支出转移到运营支出,但是,管理云支出是一个不断的挑战。

云可以提供虚拟机,在你添加额外的虚拟机之前,你要确认这个云上的 CPU、内存和网络等资源都处于最佳使用状态。容器在这个地方扮演着很重要的角色。因为容器比虚拟机要小得多。并且,如果你的应用程序正运行在容器中,你可以在虚拟机中安装更多的容器,这比在每台虚拟机中运行一个应用程序组件要多很多。

公有云供应商有很多,其中 Amazon Web Services(AWS)、Microsoft Azure 和 Google Cloud 最受欢迎。另外,你可能想在你的基于 OpenStack 的数据中心里拥有你自己的私有云。这些云环境中的每一个都有它们自己的协议、API 和工具。当你想让你的应用程序在云上运行时,你不会想要让您的应用编排被云供应商所制约,也不会想要维护任何特定云的代码。在你的技术上与特定的云供应商锁定就像在未来几年内向供应商签署空白支票。

云的可移植性对您的云战略至关重要。你可以编写应用程序,而不用担心它们在哪里运行,容器平台可以将你和特定的云供应商协议隔离开来,从而避免你与一个云供应商锁定。

传统系统

微服务架构带给开发的优势很多,但并不是每个应用程序都可以重构它们自己,有些只能重构一部分。传统的应用程序被普遍接受,它们需要维护和管理。虽然容器可以实现微服务,但容器不仅仅只是微服务。可以想象,你可以将大型应用程序和微服务作为容器来运行,因此只要你选择正确的容器技术和正确的应用程序平台,就可以将许多(如果不是所有)的传统的应用程序作为容器运行。

总结

我希望这篇对各种策略和容器的深入剖析有助于你的公司对下一步进行评估。让我在评论里面了解您公司学习到的经验,或者说没能大步向前跨越,他们还需要我再提供一些什么信息。

(题图来源:Maersk Line. CC SA-BY 4.0


作者简介:

Veer Muchandi -- 开源爱好者,容器和PaaS倡导者,喜欢学习和分享。


via: https://opensource.com/article/17/1/container-strategy-for-executives

作者:Veer Muchandi 译者:zhousiyu325 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出