在这篇文章中,我们将讨论以下话题:

  • RPC vs. gRPC
  • 单体 vs. 微服务架构
  • 什么是 k8s
  • ChatGPT

RPC vs. gRPC

远程过程调用(RPC)使一台机器能够调用另一台机器上的某些代码,从用户角度来看就像本地函数调用一样。

gRPC 是 Google 于 2016 年创建的开源远程过程调用框架。为什么 gRPC 如此受欢迎?

  1. gRPC 拥有蓬勃发展的开发者生态系统。这个生态系统的核心是使用 Protocol Buffers 作为其数据交换格式
  2. gRPC 开箱即用即高性能

单体架构 vs. 微服务架构

下图比较了理想世界中的单体和微服务架构。

假设我们有一个电商网站,需要处理以下功能:

  • 用户管理
  • 采购管理
  • 订单管理
  • 库存管理
  • 支付
  • 物流

单体架构

所有组件都部署在一个实例中。服务调用在同一进程内,无需 RPC。与每个组件相关的数据表通常部署在同一个数据库中。

微服务架构

每个组件成为一个自包含的服务,由专业团队维护。服务之间的边界清晰定义。用户界面与多个服务对话以完成工作流程。这适合在业务大幅增长时扩展业务。

然而,由于有更多实例需要维护,微服务架构需要在 DevOps 方面进行相当多的投资。

在某个时期,微服务架构是黄金标准,因为几乎每家大型科技公司都从单体转向微服务。但现在,公司开始重新思考微服务的利弊。一些最具争议性的微服务定义是:独占使用数据库和在单个客户端请求内进行 1000+ 次 RPC。

什么是 Kubernetes(k8s)

k8s 是一个容器编排系统。它用于容器部署和管理。其设计受到 Google 内部系统 Borg 的很大影响。

k8s 集群由一组工作机器(称为节点)组成,这些节点运行容器化应用。每个集群至少有一个工作节点。

工作节点托管 Pod,Pod 是应用工作负载的组件。控制平面管理工作节点和集群中的 Pod。在生产环境中,控制平面通常在多台计算机上运行,集群通常运行多个节点,提供容错和高可用性。

控制平面组件

API 服务器: API 服务器与 k8s 集群中的所有组件通信。对 Pod 的所有操作都通过与 API 服务器通信执行。

调度器: 调度器监视 Pod 上的工作负载,并在新创建的 Pod 上分配负载。

控制器管理器: 控制器管理器运行控制器,包括节点控制器、作业控制器、EndpointSlice 控制器和服务账户控制器。

etcd: etcd 是一个键值存储,用作 Kubernetes 所有集群数据的后端存储。

节点组件

Pod: Pod 是一组容器,是 k8s 管理的最小单位。Pod 有一个 IP 地址应用于 Pod 内的每个容器。

Kubelet: 在集群中每个节点上运行的代理。它确保容器在 Pod 中运行。

Kube Proxy: kube-proxy 是在集群中每个节点上运行的网络代理。它路由来自服务的进入节点的流量。它将对工作的请求转发到正确的容器。

问题:你知道为什么 Kubernetes 被称为”k8s”吗?(答案:k 和 s 之间有 8 个字母)

ChatGPT

ChatGPT 令人震惊。它能在几秒钟内解决 LeetCode 困难题。代码甚至包含很好的注释。

本文为学习目的的个人翻译,译文仅供参考。

原文链接:EP35: What is Kubernetes

版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。