如何实现云原生?这些云原生工具很关键!

K8S中文社区

60篇原创内容
公众号

云原生技术可帮助我们更快地交付软件产品,同时降低 IT 运营成本。本文介绍了如何实现云原生,以及一些可以使用的云原生项目。

作者:Kentaro Wakayama  翻译:Bach

校对:星空下的文仔、bot , 来源:K8sMeetup社区

在过去的十年中,云计算有了巨大的增长。根据 Gartner 预测,2020 年全球公共云服务市场将增长 17%,总额将达到 2664 亿美元,远高于 2019 年的 2278 亿美元。云计算使世界上一些大型公司重塑并主导其所在行业。这些公司的产品基于云服务,并利用云原生技术来比竞争对手做到更快,更具适应性。许多企业采用了云原生技术,并将概念引入其内部部署应用程序。

了解和选择正确的云原生技术对于提高开发速度、减少开发和维护工具及基础架构至关重要。这篇文章描述了值得了解的云原生技术,并推荐了可以使用的云原生工具。

什么是云原生?

云原生关于速度和敏捷性,这是关于云的优势,更快地解决业务挑战并降低 IT 成本。CNCF 提供了一个官方的定义:

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。
这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
简而言之,云原生的目标是按照业务需求,速度地向用户或客户交付软件产品。
云原生技术具有以下优点:
  • 速度:快速开发并部署云原生应用程序,缩短产品上市时间。许多云使用云原生组件,以轻松托管应用程序。
  • 可扩展性和可用性:处理 100 个客户的云原生应用程序可以无缝扩展到服务数百万个客户。资源可以做到始终适应需求,与传统的静态扩展资源相比,这样无疑节省了资金。此外,诸如自动故障转移和蓝绿部署的技术也已被植入云原生工具中。
  • 质量:开发云原生应用程序时要牢记不可变性(immutability)和去耦性,这可以提高应用程序健壮性并易于维护,从而提升软件质量。由于云原生技术是开源的,并由 CNCF 支持,因此公司可以避免供应商锁定,并从社区的维护和开发工作中受益。

如何实现云原生

要迁移到云原生系统,我们需要一种类似以下的结构化方法:

  • 纵向:选择一项不是关键的服务,然后将其启动,迁移到云原生技术上。
  • 横向:专注于单个云原生功能,例如持续集成(CI)或持续交付(CD),并将其部署在所有现有服务中。

选择非关键任务系统可以降低风险,同时最大程度提高成功迁移的几率。

云原生工具

以下是云原生工具的列表,利用全套工具的公司通常拥有更快的速度、更少的阻力以及更低的开发和维护成本。

微服务(Microservice)
微服务将产品功能划分为可以单独部署的单元。例如,在传统的部署中,通常只有一个网站服务来管理 API 和客户交互。使用微服务,我们可以将该网站分解为多种服务,例如结帐服务和用户服务,然后分别开发、部署和扩展这些服务。
此外,微服务通常是无状态的,利用十二因素应用(twelve-factor application)可充分利用云原生工具提供的灵活性。
  • 推荐技术:Node.js
  • 替代技术:Kotlin,Golang
持续集成、持续部署(CI/CD)
CI/CD 是基础架构组件,它支持自动测试执行(以及可选的部署),以响应版本控制事件(例如拉取请求和合并)。CI/CD 使公司能够实施质量检验,例如单元测试、静态分析或安全性分析。CI/CD 是云原生生态系统中的基础工具,可以提高工程效率并减少错误。
  • 推荐技术:Gitlab CI/CD
  • 替代技术:Github Actions
容器
容器是云原生生态系统的核心,可通过简化开发人员操作来实现速度和质量的提升。通过将容器与诸如 Docker 之类的工具一起使用,团队可以指定其系统依赖性,同时提供统一且通用的执行层。该层使基础架构团队能够操作单个基础架构,例如容器编排工具(如 Kubernetes)。团队可以将容器镜像存储在容器注册表中,大多数情况下,该注册表还会提供漏洞分析和细粒度的访问控制。
  • 推荐技术:Docker
  • 替代技术:Podman、LXD
容器编排
容器编排工具用于启动和管理大量容器并消除特定语言或特定团队的部署策略。它们允许用户指定容器镜像、镜像组以及一些配置。编排人员采用这些规范并将其转换为正在运行的工作负载。容器编排工具使基础架构团队能够维护单个基础架构组件,该组件可以执行任何符合 OCI 规范的容器。
  • 推荐技术:Kubernetes
  • 替代技术:Google Cloud Run
基础架构即代码(Infrastructure as Code)
基础架构即代码是一种将云配置置于版本控制之下的策略。公司通常通过管理面板进行配置来手动管理云资源,但手动配置的跟踪更改非常困难。基础架构即代码通过将云资源定义为代码并将其置于版本控制之下来解决此问题。在代码中对基础架构配置进行更改,并通过公司的部署过程来进行更改,其中可以包括同行评审(peer review)、CI/CD。版本控制提供了一个审核日志,该日志显示谁更改了资源、更改了哪些资源以及何时进行了更改。
  • 推荐技术:Terraform
  • 替代技术:Pulumi
Secret
Secret 管理对于云原生解决方案至关重要,但规模较小时常常被忽略。Secret 可以是任何私密的东西,例如密码、私钥和 API 凭证。Secret 应该加密并存储在配置中。成熟的解决方案通过临时数据库凭证或轮换凭证的发布,从而使 Secret 管理更加安全。寻找合适的 Secret 管理解决方案对于云原生应用至关重要,因为容器化服务可以水平扩展,并在许多不同的机器上进行调度。忽略 Secret 管理的组织会提高凭证泄漏的风险。
  • 推荐技术:Vault
  • 替代技术:Sealed Secrets
证书
通过 TLS 进行安全通信是必不可少的最佳实践,这在基于容器的解决方案中尤其重要,因为许多不同的服务可能在同一台物理计算机上运行,如果不进行加密,攻击者可以获得主机网络的访问权限,读取服务之间的所有流量。另外,为云原生部署手动更新证书并不可行,这也是需要自动化解决方案的一个原因。
  • 推荐技术:cert-manager
  • 替代技术:Google 托管证书
API 网关
API 网关是反向代理,具有超越传统反向代理(例如 Apache 和 NGINX)的功能。API 网关支持:
  • 诸如 gRPC、HTTP/2 和 Websockets 协议。
  • 动态配置。
  • 相互 TLS。
  • 路由。
  • 弹性原语(Resiliency primitive),例如速率限制和断路。
  • 指标可见性。
  • 推荐技术:Kong
  • 替代技术:Ambassador
日志
日志是可观察性的基础。日志是团队非常熟悉并经常访问的地方,它是可观察性的关键。日志对于了解系统中正在发生的事情至关重要。云原生工具强调指标的时间序列,因为它们比存储日志更具成本效益。
  • 推荐技术:EFK
  • 替代技术:Loki
监控
监控系统会将重要事件按时间序列存储。监控数据是聚合的,这意味着它不会存储所有事件,这使得云原生系统需要考虑成本效益。另外,理解云原生系统的状态需要明白以下问题:
  • 正在进行多少次操作?
  • 操作的结果(成功、失败或状态代码)是什么?
  • Operation 需要多长时间?
  • 重要资源(例如队列深度或线程池)的计数是多少?
我们可以为监控指标分配不同的维度,以深入了解单个计算机、操作系统、版本等性能。
  • 推荐技术:Prometheus、Grafana
  • 替代技术:Datadog
告警
告警使日志和指标具有可操作性,可将系统问题通知给管理员,并能与时间序列指标进行配对。例如,当 HTTP 500 状态代码增加或请求持续时间增加时,告警功能可以通知团队。告警对于云原生系统至关重要,倘若没有告警,我们将不会收到有关事件的通知,那公司就无法知道出现了问题。
  • 推荐技术:Prometheus Alertmanager
  • 替代技术:Grafana Alerts
追踪
云原生技术减少了启动和扩展服务的开销,这样团队通常会发布比云前更多的服务。追踪使团队能够监控服务之间的通信,并能简单地可视化整个终端用户的通信以及通信的每个阶段。当出现性能问题时,团队可以查看发生了哪些服务错误以及事务的每个阶段花费了多长时间。跟踪是下一级的观察和调试工具,可通过允许团队更快地调试问题来显着减少停机时间。
  • 推荐技术:Jaeger
  • 替代技术:Zipkin
服务网格
服务网格像是云网络的管理利器,它们可以提供动态路由、负载均衡、服务发现、网络策略和弹性原语,例如断路器、重试和期限(deadline)。服务网格是云原生体系结构在负载均衡方面的拓展。
  • 推荐技术:Istio
  • 替代技术:Consul
原文链接:https://codersociety.com/blog/articles/cloud-native-tools
END
(0)

相关推荐

  • 我们为什么需要云原生?

    在著名的<集装箱改变世界>当中,我们能看到集装箱的发明对于二十世纪全球化的巨大推动作用.集装箱,这一看起来并无多少技术含量的发明,却因为进行标准化和系统化运输的创新彻底改变了全球的货物贸易 ...

  • 为云而生的“云原生”,为什么越来越重要?

    IT史上有一个经典故事.那就是在1943年,IBM的董事长老托马斯·沃森胸有成竹地告诉人们:未来5台计算机就可以满足全世界的市场. 现在我们知道,老沃森的预言有一半正在实现.就是世界正在朝着" ...

  • 2021技术中台发展六大趋势——数字时代企业管理趋势系列三

    对中国企业来说,已过去的鼠年无疑是极为艰难的一年.新冠肺炎疫情的爆发,使得很多企业在风险管理.成本管理.供应链管理等方面面临极大挑战.在此背景下,加强企业精细化管理.推动数字化转型从未显得如此重要. ...

  • 云原生数据中台技术与趋势解读

    数据中台发展至今,大体经历了 4 个重要阶段:数据库 - 数据仓库 - 大数据平台 - 数据中台.每次新的变革,都是为了解决上一阶段存在的问题. 当前,走向云原生成为数据中台的必然和必须. 云原生从何 ...

  • 云原生风起于双11快递时

    眼下,云原生仍是一个较早期的市场,价值共生远大于一切. " 作者 | 杨丽 出品 | 雷锋网产业组 过去的一年多,一场有关云原生技术相关的实践开始在这家中国企业内部持续上演:物流巨头之一的德 ...

  • 云原生时代的微服务,适合所有人么?

    微服务是一种优化资源的体系结构方法,这些资源为复杂.快速.分布式基础设施上的大规模服务和软件提供计算.存储和网络.大多数有IT历史的组织,传统上都是在虚拟技术栈上构建软件,这些技术栈由操作团队手动维护 ...

  • 云原生架构白皮书

    来源 | 阿里云 未来十年,云计算将无处不在,像水电煤一样成为数字经济时代的基础设施,云原生让云计算变得标准.开放.简单高效.触手可及.如何更好地拥抱云计算.拥抱云原生架构.用技术加速创新,将成为企业 ...

  • Zadig 完成 100% 开源:开启软件交付 3.0 时代

    经历过流程驱动的 1.0 时代,工具驱动的 2.0 时代的,软件开发已经进入到数字业务驱动的 3.0 时代,成为企业生存的命脉."要想富,先修路" .开源云原生软件交付产品 Zad ...

  • 云原生数据中台的What、Why、Who、How和Where | StartDT Tech Lab ...

    WHAT:云原生是什么?  它有啥前世今生? 简单说,云原生(Cloud Native)是在云上构建和运行系统的方法论.最早移植上云的"非原住民"应用程序,往往还沿用私有化部署的技 ...

  • 混合云时代的IBM存储“进化论”

    由数据驱动的数字经济正成为推动社会前进的主要模式,由各种创新技术驱动的数字化转型成为了全球变革的核心.在此过程中,数据成为一种新的生产资料,并由此推动了存储的技术演进.   布莱恩·阿瑟在<技术 ...

  • 2021 有哪些不容错过的后端技术趋势?

    前言 2020 年注定是不平凡的一年,虽疫情肆虐,但我国互联网产业展现出巨大韧性,不仅为精准有效防控疫情发挥了关键作用,还在数字基建.数字经济等方面取得了显著进展,成为我国应对新挑战.建设新经济的重要 ...

  • 2020年中国容器云市场研究报告

    核心摘要: 容器的发展历史:容器技术在国内发展主要经历了三个阶段,分别是2014-2016年的技术探索期.2017-2018年的行业试水期以及2019年以后的规模应用期,容器与国内欣欣向荣的云计算产业 ...

  • 什么是云原生?有哪些发展方向?终于有人讲明白了

    导读:Cloud Native:云原生.我们今天一起来聊一下,到底什么是云原生?以及这个领域的一些发展方向.此文来自陈耿老师的视频文字整理.(视频见文末) 作者:陈耿 来源:大数据DT(ID:hzda ...

  • 如何基于标准k8s打造边缘计算云原生基础设施?

    12月3日,在边缘计算社区社群上,阿里云高级技术专家黄玉奇做了<云边一体--如何基于标准k8s打造边缘计算云原生基础设施>主题分享,黄老师在阿里云做容器服务,近几年一直从事云原生相关领域工 ...

  • 一个优秀的云原生架构需要注意哪些地方

    本文整理自腾讯云容器产品,容器解决方案架构团队的陈浪交在 Techo 开发者大会云原生专题的分享内容--一个优秀的云原生架构需要注意哪些地方.本文将会给大家分享云原生架构的特点和以及实践过程中的一些注 ...

  • 2020双11,阿里落地了全球最大规模云原生实践

    2020双11,天猫又创造了新的纪录:销售额达到历史新高4982亿.订单峰值达到创纪录的58.3万笔/秒.可以说,双11一直在推动着阿里云计算技术的创新和发展.2020年11月12日,阿里巴巴CTO程 ...