9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

谷歌关于容器的观点分享

  • 2015-02-01
  • 本文字数:1846 字

    阅读完需:约 6 分钟

通过借鉴他们在这一技术领域十年的经验,谷歌云平台团队撰写了一系列的文章分享其对容器的看法。谷歌的前两篇文章提供了关于这个主题的总览。这两篇文章解释了容器集群和他们所定义特征背后的逻辑。之后又向读者展示了如何在 Kubernetes 上应用这一切。

容器能够带来一系列的好处。包括更简单的部署模型,快速可用性和微服务架构理想的基础设施层。像Docker 之类的容器产品更关注于在单一计算机上操作。这就产生了协调多个容器的需求。或者用高级资深工程师和Kubernetes 联合创始人Joe Beda更喜欢的说法,“即兴爵士乐表演”的管理需求,这个说法能够更好地反映出容器管理对“实时条件和输入”的反应。

像Kubernetes 这样的容器集群提供了与集群管理、网络和命名有关的服务。他们“创建了一个抽象的层次,让开发人员和管理员可以将需要改进的服务作为一个整体,改进其行为和性能,而不是服务的某个容器组件或基础设施资源”。

随着容器数量的迅速增加,容器协调的需求也随之迅速地变得显而易见。谷歌就是个极端的例子,每秒要启动7000 个容器,或每周要启动20 亿个。这就是对容器集群的需求。

除了其他的要求之外,谷歌构建的容器集群还必须能够做到在保持可用的状态下完成更新,可扩展并且便于操控和监控。通过满足这些要求,谷歌收益匪浅。首先,可以构建有清晰的合约和边界的微服务。然后,清晰的边界让小型工程团队能够保持软件的可管理和可扩展。容器集群具有自愈能力和无摩擦的水平扩展能力,并且有着高效的资源利用率。“集群运维团队和应用运维团队角色” 的专业化能力是另一个隐含的好处。Joe Beda 举例提到,“GMail 的运维和开发团队很少需要与集群运维团队直接对话”。开发人员可以将注意力集中在构建服务上,而不需要考虑底层的基础设施问题。

优秀容器集群的要素”

Joe 还分享了“优秀的容器集群管理器所需的要素”。包括动态的容器配置,以集合方式思考以及集群内的连接。

动态容器配置就是在考虑容器应该如何运行以和运行在何处的公开意向的前提下,找到一个可以运行给定载荷的位置。这是一个背包问题的实例。每个容器都有其自身的限制,如何在有限的可用计算资源内匹配各个容器呢?在安排给定的载荷时,集群必须要考虑可用容量(如CPU、RAM 等),特殊的硬件需求以及实时变化的条件(如故障、自动扩展等)。Kubernetes 用 Pod 解决了这个问题:

Pod(和一群鲸鱼(a pod of whales)或豌豆荚(pea pod)里的含义一样)由一组相互关联的共享容量的 Docker 容器构成。Pod 模型化为容器化环境下,特定于应用程序的一个“逻辑宿主”。其中可能包含一个或多个相互关联并紧密耦合的容器——在前容器(pre-container)世界,他们会执行在同一个物理或虚拟主机上。

第二个要素是提供以集合方式思考的可能性。Kubernetes 通过提供标签复制控制器使其成为可能。每个Pod 可以有一系列的标签,每个标签是一个键值对。Pod 通过标签分组,例如根据应用层级或地理位置。之后标签的使用可以有多种方式,例如由服务或复制控制器使用。复制控制器,顾名思义,用于保证大量的Pod 拷贝能够一直保持活动,从而为横向扩展活动提供帮助。

Kubernetes__ 标签,来自于文章“是什么造就了容器集群?”

成功的容器集群的第三个要素是通信。当有多个容器,进而有多个微服务存在时,通信就成为了一个关键的组件。为了在无需知道它们各自的容器实际运行位置的情况下,微服务之间也可以互相通信,好的容器集群应该提供一个命名解析系统。命名解析系统在容器启动或迁移之后能够立即了解到全部变化是十分重要的。Kubernetes 在标签和Watch API 模式的帮助下,提供了轻量级的服务发现方案。受 Google Chubby 论文的启发,该模式提供了一种从服务传递异步事件的方式。Kubernetes 团队意识到并不是所有的客户端都会为了使用这个 API 而重写。因此 Kubernetes 提供服务代理的概念来处理这类场景。

[服务代理] 是一个简单的网络负载均衡器 / 代理,以单一稳定的 IP/ 端口形式暴露在网络中,可以帮助完成命名查询。

简而言之,谷歌云平台团队将容器集群定义为:

一个动态配置和管理容器的系统,以 Pod 的形式组合在一起,连同所有的相互连接和通信渠道,运行在节点之上。

谷歌向容器化的转移开始于将 cgroups (控制群组的简写)加入 Linux 内核,以隔离一个进程集合的资源使用。通过简化容器技术, Docker 让更大范围的社区采用了容器技术,从而使这种技术得以推广。

InfoQ 一直在跟进 Kubernetes 的发展,其中包括一篇由 Carlos Sanchez 执笔的深度文章

查看英文原文: Google Shares its Views on Containers

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2015-02-01 07:294591
用户头像

发布了 75 篇内容, 共 61.3 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

深入理解一下Python中的面向对象编程

宇宙之一粟

Python 面向对象 12月日更

架构模块三作业

holdzhu

「架构实战营」

架构实战营模块四作业

Poplar

#架构实战营

模块三-学生管理系统详细架构设计

圈圈gor

架构实战 「架构实战营」

第三周学习总结

糖糖学编程

架构实战营

一个cpp协程库的前世今生(一)缘起

SkyFire

协程 cpp cocpp

外包学生管理系统架构设计文档

李晓笛

「架构实战营」

作业

AUV

「架构实战营」

瞰见 | 开源,会不会变成开源创业的焦油坑?

OpenTEKr

狄安瞰源

盘点 2021|自己一个人扛起了公司的半边天

liuzhen007

技术人生 盘点2021 盘点 2021

元宇宙100讲-0x011

hackstoic

元宇宙

架构实战营第三模块作业

墨宝

模块三作业——学生管理系统详情设计

马志峰

架构实战营

「架构实战营」模块三《如何保证设计出合理的架构》作业

DaiChen

作业 模块三 「架构实战营」

ALC北京发起人 姜宁:通过开放与协作,我们可以实现一个人想都不敢想的事情 I OpenTEKr 大话开源 Vol.6

OpenTEKr

大话开源

瞰见 | 初创1个月就融到3亿美金,ClickHouse 你凭什么?

OpenTEKr

狄安瞰源

《PyTorch 深度学习实战》项目复习3

IT蜗壳-Tango

28天写作 12月日更

如何设计贴合业务的高性能高可用中间件系统

天天向上

架构实战营

详细架构设计文档

Anlumina

#架构实战营

Java 数据持久化系列之池化技术

程序员历小冰

MySQL 持久化 28天写作 池化技术 12月日更

Apache 海豚调度 PMC 郭炜:开源,不是天才的甜点,而是执着者的盛宴 I OpenTEKr 大话开源 Vol.7

OpenTEKr

大话开源

“学生管理系统”架构文档

CH

#架构实战营

一口气搞懂【Linux内存管理】,就靠这60张图、59个问题了

奔着腾讯去

内存泄露 内存管理 Linux Kenel 内存映射 内存池

谈谈MemoryCache原生插值方式

喵叔

28天写作 12月日更

Golang中文件的基本操作

liuzhen007

Go 28天写作 Go 语言 12月日更

作业:架构实战营模块 3

Poplar89

「架构实战营」

Prometheus Exporter (三十四)JSON Exporter

耳东@Erdong

json Prometheus 28天写作 exporter 12月日更

外包学生管理系统详细设计文档

guodongq

「架构实战营」

架构实战营模块三作业

lchx08

「架构实战营」

模块三作业

novoer

「架构实战营」

第三模块学习总结

Anlumina

#架构实战营

  • 扫码添加小助手
    领取最新资料包
谷歌关于容器的观点分享_Google_João Miranda_InfoQ精选文章