2020 年 K8s 的 12 个数据

近日,The Enterprisers Project 网站基于 CNCF、Gartner 的调查以及《企业开源状况》报告,得出了以下 12 个数据,反映了 2020 年 K8s 的发展趋势。

  • 84%:CNCF 在最近调查中发现,2019 年,约有 84% 的受访者使用容器进行生产。相比上年增长 15%。而在 2016 年 3 月 CNCF 的首次调查中,容器使用率仅为 23%。
  • 56%:据 2020 年《企业开源状况》调查报告显示,大约 56% 的组织表示在未来 12 个月中将更多地使用容器。
  • 250 个以上的容器用于生产:CNCF 报告称,2019 年在生产中使用 250 个或更多容器的公司数量增加了 28%,首次突破 50%。
  • 78%:Kubernetes 不是容器编排工具的唯一选择,但已经成为了首要选择。据 CNCF 报告显示,75% 的公司表示他们在使用 Kubernetes。
  • 91680:这是迄今为止在 Github 上 Kubernetes 的代码提交次数。
  • 8/10:根据 Gartner 的调查,使用公有云的公司比例已经达到 81%。
  • 69% :StackRox 报告称,Kubernetes 出现问题的最常见原因是配置错误。十家公司中大约有 7 家表示其 Kubernetes 环境曾检测到配置错误。
  • 133:这是可以在 OperatorHub.io 上使用的 Kubernetes Operators 数量。
  • 18%:CNCF 报告称有 18% 的受访者表示他们正在生产中使用服务网格。
  • 第四名:在最新的 Octoverse 报告中,Istio 在 Github 的“贡献者增长最快的开源项目”中排名第四,增长了 194%。
  • 149:这是经过认证的 Kubernetes 服务提供商的数量,阿里云、华为云、才云等都在其中。
  • 6岁:Kubernetes 刚刚在 2020 年 6 月 7 日度过了其第六个生日。

无服务器的 3 种缺点

无服务器会自动配置应用程序所需的云资源(例如存储和计算),然后在工作负载完成后将其取消配置。其甚至被大家称为懒人的云平台服务,并且越来越受到欢迎,但是我们也需要冷静考虑其缺点。

冷启动:这是在虚拟私有云中运行无服务器功能引起的,可能会造成延迟或冷启动时间。而且不同的语言有不同的滞后。如果对它们进行基准测试,Python 是最快的,而 .NET 和 Java 是最慢的(仅作为示例)。 

距离延迟:距离延迟是无服务器功能与最终用户之间的距离。这应该是常识,但是很多公司明明用户在美国,却在亚洲运行无服务器功能。当数据与使用该数据的无服务器核心功能位于不同的区域时,可能会出现距离问题。

配置不足:运行时配置不足的问题通常被忽略。无服务器系统具有预定义的内存和计算配置列表,例如内存从 64MB 到 3008MB 不等。较低配置的机器会比较便宜,我们需要在性能上进行权衡,因为它会根据内存量,通过相关算法分配 CPU 。

云成本的 7 个秘密

Google 的 N1 标准机价格为每小时 0.0475 美元,并且能以每小时 0.015 美元的价格将其升级到高 CPU 版本。这些几美分的数字似乎小到我们可以忽略不计。但到月底,云账单却比我们预期的大得多。这几美分是怎么加到这么多的?下面是云提供商将几美分转化为利润的七个秘密。

隐藏的支出

有时候,几美分的标价会让我们注意不到附加功能的价格。举个例子,亚马逊有一款长期备份的机器,售价为每 GB 0.00099 美元每个月。但我们如果点开价格表的第二个选项,就会看到其检索价格是每 GB 0.02 美元。查看一次数据比存储一个月数据还要贵 20 倍!这就像是去吃饭,牛排价格是 2 美元,但餐具要 40 美元。

重要的位置因素

云提供商会通过全球数据中心地图,让我们选择最合适的地方,但不同的地方价格并不相同。亚马逊在俄亥俄州的价格是每 GB 0.00099 美元,但在北加州就是每 GB 0.002 美元。因此我们需要认真观察不同区域的价格并做出合适的选择。

资料传输费用

如同上面所说,我们仔细观察价目表并将工作负载转移到便宜的数据中心,但这会遇到一个问题:云提供商对数据传输收取费用。如果我们想在全球范围内找寻最便宜的数据中心,并进行数据转移,那么很可能在数据转移上诞生一笔巨大开支。我们要记住,跨网络的数据转移成本非常高。

“蟑螂屋”

一个著名的蟑螂屋广告是这么说的:“蟑螂可以进,但不能再出来”。云提供商也是一样的方法。当我们将数据存入云时,他们常常是不收费的。但当我们准备发送数据时,就需要支付高昂的费用了。

沉没成本

有时候当前的机器或配置难以胜任工作,我们会选择每小时多花几美分来提高配置。但软件开发时的情况会有所不同。因为我们通常无法确定一项功能需要多少内存或 CPU。有些时候我们不得不过多提高机器的配置,所以需要时刻关注并控制好成本。有可能我们在这里增加了一些内存或 CPU,那里再增加一些,月底的账单就大大增加了。

间接费用

云服务器本身并不是一台机器,而是一台更大的物理机器的一部分。该机器被划分为 N 个部分。我们使用 Kubernetes 等工具让 N 个部分协同合作。但 Kubernetes 强大的功能导致了部分不严谨的代码编程。例如节点故障后,通过 Kubernetes 替换实例又可以继续运行。但维护是需要额外开销的。

云是无限的

最后,云计算最棘手的问题是其可以无限扩展。这是预算的雷区。每个用户平均出口流量是 10GB 还是 20GB,每个服务器需要 2GB 内存还是 4GB?当我们刚启动项目时,是不可能知道的。当需求激增时,固定数量的服务器会受到影响,用户也会因为响应速度慢而抱怨,我们就需要扩展云服务器。虽然云服务器可以无限扩展,但我们的钱包可不会。

K8s 安全的 5 个最佳实践

无论是刚开始考虑 Kubernetes,还是已经在使用,我们都需要关注安全问题。特别是在医疗和金融等以安全为中心的行业中,DevOps 团队必须在可用性、功能性和安全性之间取得平衡。以下是开发者可以参考遵循的五个最佳 Kubernetes 安全实践。

慢一点

我们常常想立即启动并运行程序,但这时一定要考虑到是否已经做好配置部署。如果没将配置设置好,以后可能会出现问题,甚至遭受由于配置错误而导致的 DoS 攻击。所以,慢一点。利用 Kubernetes 内置的安全工具以及强大的开源解决方案来强化集群。从长远来看,这不会降低我们的速度。相反,这可以让我们运行更快,因为强大的安全配置可以防止很多耗时的破坏性安全问题。

谨慎使用

为了快速部署,我们很容易将权限分发出去。如果那些不需要控制集群的应用程序获得了管理员级别的访问权限,那么集群会很容易受到攻击。这也是为什么基于角色的访问控制(RBAC)对于 Kubernetes 如此重要。根据最小特权原则,开发者应该使用 RBAC 设置集群的访问权限。例如,如果一个应用程序只需要查看日志,则限制其相应的访问权限。这将有助于减少风险传播,并省去很多麻烦。

保护网络策略

网络策略本质上与 RBAC 类似,对于 Kubernetes 的安全至关重要。网络策略不是允许访问资源,而是设置可以与集群中的人员进行交谈的人员。默认情况下,单个 Kubernetes 集群中的所有应用程序都可以访问集群中的其他内容。因此我们需要编写网络策略,来限制集群中没有业务往来的部分进行通信。这样,即使攻击者将蠕虫病毒侵入网络,它也将被限制为一个工作负载,并且无法在整个集群中传播。

获取配置验证

DevOps 团队通常人手不足,并且缺乏资源来手动检查引入的每个更改,因此指望他们抓住每个漏洞根本是不现实的,需要使用正确的工具监控和验证配置。有些平台可为部署和管理 Kubernetes 的人员提供可见性、优先级建议和协作工具。采用正确的验证形式可以确保成功设置了安全配置。

保持更新

每次更新都有重要的安全修复程序和增强功能。当我们保持最新版本时,那么集群安全性和功能都可以处于最佳状态。

监控 K8s 和 Docker 的六大开源工具

Kubernetes 和 Docker 是现代 DevOps 对话中最常听到的两个流行词。Docker 是一个容器化和运行应用程序的工具,而 Kubernetes 提供了一个平台来编排或管理这些容器。这里列出了用于监控和分析容器运行服务的六大开源工具。

Prometheus

Prometheus 是讨论开源监控时大家会想到的第一个工具。它在开发社区中非常受欢迎,还是 CNCF 毕业项目。其专注于 SRE 监控方面,旨在监控高度动态的容器环境。

Grafana

Grafana 是一个开源指标分析和可视化套件。它允许使用从多个来源(例如 Prometheus、Elasticsearch、MySQL、Postgres 和 Redis)获取的数据来创建自定义仪表板。此外,Grafana 拥有自己的警报系统和基于角色的软件访问控制(RBAC)系统。

作为数据可视化工具,Grafana 在 Prometheus 用户中享有盛誉,因为它能有效地可视化 Prometheus 中存储的指标。

Elastic Stack

Elastic Stack 旨在帮助用户实时搜索、分析和可视化来自任何类型的源的任何格式的数据。

Sensu Go

Sensu Go 是用于大规模多云监控的遥测和服务运行状况检查解决方案。它可以查看任何公共或私有云中的服务器、容器、服务、应用程序、功能和连接的设备。

Sysdig Inspect

Inspect 专注于系统的性能调整和安全调查。它监控和捕获系统中正在运行的容器进程,并深入研究进行事件后取证。这能帮助我们分析应用程序性能、排除错误并监控可能出现异常的所有处理器。此外,如果系统受到破坏,Sysdig 还能让我们了解破坏的方式以及在破坏过程中获取的数据。

Jaeger

Jaeger 目前正在 CNCF 中进行孵化,它可以监控复杂的分布式系统中的事务并进行故障排除。

为了便于比较,下面的图表概述了本文讨论的每种工具提供的功能。

本周 K8s 开源项目推荐Allok8

  • 这是一个动态、常规且简单的基于 Web 的 UI Kubernetes 可视化工具。
  • github.com/oslabs-beta/Allok8

magicpak

  • 这是一个命令行实用程序,能够帮助构建最小化的 docker 镜像,把一些不需要的文件以及 link 全部去掉。最终的镜像会仅仅保留可执行文件所需要的依赖。
  • github.com/coord-e/magicpak

k8s-spot-rescheduler

  • 这是是一种旨在尽可能减少 Kubernetes 节点上负载的工具。
  • github.com/pusher/k8s-spot-rescheduler

podtnl

  • 这是一个 CLI 工具,可在不公开 Kubernetes 服务的情况下使 Pod 在线可用。
  • github.com/narendranathreddythota/podtnl

rback

  • 这是一个简单的“ Kubernetes 中 RBAC”的可视化工具。它可以查询 Kubernetes 集群中所有与 RBAC 相关的信息,并以点格式生成相关图表。
  • github.com/team-soteria/rback

kubernetes-goat

  • 这是一种被故意设计为易受攻击的集群环境,用来学习和实践 Kubernetes 的安全性。
  • github.com/madhuakula/kubernetes-goat

原文请点击:https://mp.weixin.qq.com/s/AB44kxCEyUkdFHT1jRqZGQ