GitBook: No commit message

This commit is contained in:
yeasy
2025-12-17 10:37:56 +00:00
committed by gitbook-bot
parent 61a71f3c25
commit 5c3841dc98
57 changed files with 138 additions and 145 deletions

View File

@@ -1,9 +1,11 @@
# 基本架构
# 架构设计
任何优秀的项目都离不开优秀的架构设计本小节将介绍 Kubernetes 在架构方面的设计考虑
## 基本考虑
如果让我们自己从头设计一套容器管理平台有如下几个方面是很容易想到的
* 分布式架构保证扩展性
* 逻辑集中式的控制平面 + 物理分布式的运行平面
* 一套资源调度系统管理哪个容器该分配到哪个节点上
@@ -13,7 +15,7 @@
下面这张图完整展示了 Kubernetes 的运行原理
![Kubernetes 架构](./_images/k8s_architecture.png)
![Kubernetes 架构](../.gitbook/assets/k8s_architecture.png)
可见Kubernetes 首先是一套分布式系统由多个节点组成节点分为两类一类是属于管理平面的主节点/控制节点Master Node一类是属于运行平面的工作节点Worker Node
@@ -22,6 +24,7 @@
从这张图上我们没有能发现 Kubernetes 中对于控制平面的分布式实现但是由于数据后端自身就是一套分布式的数据库 Etcd因此可以很容易扩展到分布式实现
## 控制平面
### 主节点服务
主节点上需要提供如下的管理服务
@@ -31,6 +34,7 @@
* `controller-manager` 负责管理控制器包括 endpoint-controller刷新服务和 pod 的关联信息 replication-controller维护某个 pod 的复制为配置的数值
### Etcd
这里 Etcd 即作为数据后端又作为消息中间件
通过 Etcd 来存储所有的主节点上的状态信息很容易实现主节点的分布式扩展
@@ -38,7 +42,8 @@
组件可以自动的去侦测 Etcd 中的数值变化来获得通知并且获得更新后的数据来执行相应的操作
## 工作节点
* kubelet 是工作节点执行操作的 agent负责具体的容器生命周期管理根据从数据库中获取的信息来管理容器并上报 pod 运行状态等
* kube-proxy 是一个简单的网络访问代理同时也是一个 Load Balancer它负责将访问到某个服务的请求具体分配给工作节点上的 Pod同一类标签
![Proxy 代理对服务的请求](./_images/kube-proxy.png)
![Proxy 代理对服务的请求](../.gitbook/assets/kube-proxy.png)