Kubernetes:解读轻松管理容器化应用的奇妙世界-CSDN博客

150 阅读5分钟

85a976e80fe5304594e1f58629ebbf23.jpeg

Image.jpeg

问题: 什么是 Kubernetes?

答案 → 这就是我们对 Kubernetes 的定义:

•Kubernetes 是一个开源的容器编排平台。

f95baaca25b14be83bd129843658edf4.jpeg

1*_9e5JDYzYO2Q9yIq9K0gSw.png

•它自动化容器化应用程序的部署、扩展和管理。

16d2c94e10bf2c17cbd872ad997dc315.jpeg

1*nEnJdhWyOQYOpP-jEzueeQ.png

问题: 让我们谈谈 Kubernetes 的起源?

答案 →

•Kubernetes 的起源可以追溯到谷歌的内部容器编排系统 BORG。

af3e44e731ca1af14743d9bc90895b4e.jpeg

1*g-IgD8aqs5DDIOKC2qGGvw.png

•这个系统管理了谷歌内部数千个应用程序的部署。

fb74dad08238406311e737710918183f.jpeg

1*B21D4FIZqfzSPgx3WmGZVA.png

•在 2014 年,谷歌开源了 BORG 的一个版本,即 Kubernetes。

问题: Kubernetes 的简称是什么?

答案 → 它也被称为 k8s

1fda82a3332ea5a5872cd681aab4f032.jpeg

1*nus_WsO6MWPJ0USwAEeLkw.png

问题: 详细解释一些关于 Kubernetes 的细节?

答案 → 一个 k8s 集群是一组被称为节点的机器。这些节点用于运行容器化应用程序。

0ecb969300dfe785ca3cdb7aa9464cf2.jpeg

1*aj_NsfUdOWvSqihI_CPuyQ.png

在 k8s 集群中有两个核心部分:

组件 #1.) 控制平面(Control-Pane)→ 它负责管理集群的状态。

2ef49ef1f6b88ef87c1015bb52423cf0.jpeg

1*suzdzUfhV7izc6cXq6-qhw.png

在生产环境中,控制平面通常运行在跨越多个数据中心区域的多个节点上。

52cf7c8e843e793b49c9c3720409025d.jpeg

1*kueeZGe2YBxYuOwe_FTDHQ.png

组件 #2.) 工作节点(Worker-Nodes)→ 这些节点运行容器化应用程序工作负载。容器化应用程序在 Pod 中运行。

af636b45a95f1f2c35a58f7da00aa36f.jpeg

1*AYVPb27aWDaDZ8mTA3pcDA.png

问题: Kubernetes 中的 Pod 是什么?

答案 → Pod 是 Kubernetes 中最小的可部署单元。

•一个 Pod 托管一个或多个容器,并为这些容器提供共享的存储和网络。•Pod 由 Kubernetes 控制平面创建和管理。这是 Kubernetes 应用程序的基本构建块。

581db5def11e513f283bbde7f09fe158.jpeg

1*LpGuh8amxnzukj0FKYo-mQ.png

问题: 详细解释 Kubernetes 中的控制平面?

答案 → Kubernetes 控制平面的主要组件包括:

组件 #1.) API 服务器(API-Server)→ 它是控制平面与集群其余部分之间的主要接口。它暴露了一个 RESTful API,允许客户端与控制平面交互并提交请求以管理集群。

2988191b826a5f2e9de3ce78ad8e37d4.jpeg

1*1kPPaGxWrSLRXTcW67AdZw.png

组件 #2.) etcd →

•它代表分布式键值存储。

99e66787d2046b6012aa2740cfcb4019.jpeg

1*Td8Xq3Bt6kZAV-b68RfcDw.png

•它存储集群的持久状态。

c3394f041b0e2876a33e39baab1efa5d.jpeg

1*YZhvXB8nDuib8cb8d1aIfA.png

•它被 API 服务器和控制平面的其他组件用于存储和检索有关集群的信息。

d5ee664edf091331deb8d0e25c8a2a1f.jpeg

1*Q90ElNyRUUfS8Rr4QS0QKw.png

组件 #3.) 调度器(Scheduler)→ 它负责将 Pod 调度到集群中的工作节点上。它使用有关 Pod 需要的资源和工作节点上可用资源的信息来进行放置决策。

7bdd5976a75fab53e3350e0c7fb7ed19.jpeg

1*B9WVsKRDIuy09KLFdlrgow.png

组件 #3.) 控制器管理器(Controller Manager)→ 它负责运行管理集群状态的控制器。一些示例包括:

复制控制器(Replication Controller)→ 确保 Pod 的期望副本数量正在运行。

03a892bb34ad948ea2716442e8de7d4c.jpeg

1*ilx_oGtiJyarMFUj0w97mQ.png

部署控制器(Deployment Controller)→ 管理部署的滚动更新和回滚。

组件 #4.) 工作节点(Worker Nodes)→ 运行在工作节点上的核心组件包括:

Kubelet → 这是在每个工作节点上运行的守护程序。它负责与控制平面通信。它接收来自控制平面的有关在节点上运行哪些 Pod 以及确保 Pod 的期望状态得到维护的指令。

35224a86aa68f8e323538f7e2d791e2c.jpeg

1*moP6tzOlpdA4EdfF7W3ZpQ.png

容器运行时(Container-Runtime)→ 这在工作节点上运行容器。它负责从注册表拉取容器镜像、启动和停止容器以及管理容器的资源。

ea5003c15da6cb4b60496993db0eec91.jpeg

1*5AMGCK8aWBgCKnE-PywQCw.png

Kube-Proxy → 这是在每个工作节点上运行的网络代理。它负责将流量路由到正确的 Pod,为 Pod 提供负载均衡,并确保流量均匀分布到各个 Pod。

bdf4b7add53afe72ea7ff512edcf89d0.jpeg

1*8GcrFXD-Kta5OKnRBIR5tg.png

问题: 使用 Kubernetes 的优势是什么?

答案 → 使用 Kubernetes 有以下优势:

功能池 → Kubernetes 是可扩展和高可用的。它提供自愈、自动回滚和水平扩展等功能。

f432ddd8a18b625808b1a3abff324afd.jpeg

1*3-jn195BgOkxuQzQpEJHkw.png

简便扩展 → 它使我们能够根据需要轻松扩展应用程序,让我们能够快速响应需求变化。

5fd31bae55d0c3e782493d71386ab296.jpeg

1*_P4Bw-CTZeLYxrVpNvh6-w.png

Kubernetes 是可移植的 → 它帮助我们以一种一致可靠的方式部署和管理应用程序,而不受底层基础设施的影响。它可以在本地部署、公共云中或混合环境中运行。它提供了一种统一的方式来打包、部署和管理应用程序。

0587c8104a13c3d94b474580641bdeae.jpeg

1*fNSgI9kIEHLrJvQOeZ9Emw.png

问题: 使用 Kubernetes 的劣势是什么?

答案 → 使用 Kubernetes 有以下劣势:

复杂性 → 设置和操作都非常复杂。

1de153c36eda0670cd8edfba52d0fd4b.jpeg

1*-oqtUJa8WsOzRYFfclfLeg.png

高成本 → 初期成本高,特别是对于新接触容器化的组织。为了支持上述所有功能,需要一定程度的资源。

431ee29b6c3cc65668bc0bc7536be837.jpeg

1*KCgbpufhYF73uzEygzXFyQ.png

高水平的专业知识 → 需要高水平的专业知识和资源来设置和管理生产环境的 Kubernetes。对于许多小型组织来说可能会显得过度庞大。

问题: 如何简化 Kubernetes 的管理?

答案 → 一个流行的选择是将控制平面的管理外包给托管 Kubernetes 服务:

3feb4d16b6124da2b24ed102ab71f8db.jpeg

1*RqdqQoWBS1OSrjOErz4yJA.png

这些服务允许组织在不必担心底层基础设施的情况下运行在 Kubernetes 上的应用程序。

76787db64519149232d77c175e35bb10.jpeg

1*JmgBGKvyBNr5QBAzoCqt3A.png

这些服务负责需要深度专业知识的任务,比如设置和配置控制平面、扩展集群以及提供持续的维护和支持。

a66d7b35f8f8078c76974ea96e3a6765.jpeg

1*ElbPkF_ESVutaO1CDwm5fQ.png

这样,对于较小的组织来说,试用 Kubernetes 就会相对简单一些。


  • 系统设计概念系列文章

计算机的层次化架构\

每个开发者都应该知道的7个原则\

6个系统设计的基本概念\

数据库:系统设计的核心\

  • 图解系列

系统设计中的缓存技术:完整指南

关系数据库的全景图 

Redis 全景解析

当然架构设计、全景图解系列还有很多,快来关注一起学习吧~