# Kubernetes架构

Kubernetes 致力于提供跨主机集群的**自动部署**、**扩展**、**高可用**以及运行应用程序**容器**的平台，其遵循<mark style="color:blue;">**主从式架构设计**</mark>，其组件可以分为<mark style="color:blue;">**工作节点（Node）**</mark>组件和<mark style="color:blue;">**控制平面**</mark>组件。

<figure><img src="https://2758333174-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fxln9iuY1OY6Ee0rjuIc1%2Fuploads%2F5vGz0Q22ncdXCFyfQ1rI%2FFigure-P90_79112.jpg?alt=media&#x26;token=de65d961-de1b-4b15-a9a2-2d60ff32b50f" alt="" width="563"><figcaption></figcaption></figure>

Kubernetes 架构可分为<mark style="color:blue;">**主（Master）节点**</mark>、<mark style="color:blue;">**从（工作/Worker/Node）节点**</mark>和<mark style="color:blue;">**数据库 Etcd，**</mark>其中：

*   <mark style="color:blue;">**主节点为集群的控制单元**</mark>，一般不会运行业务应用程序，主要包含的组件有 **Kube-APIServer**、**Kube-ControllerManager**、**Kube-Scheduler**。

    > 如果 Master 节点要部署容器，也会包含 **Kubelet**、**Kube-Proxy** 这两个组件。
* <mark style="color:blue;">**从节点为工作单元**</mark>，也就是部署应用程序容器的节点，主要包含的组件有 **Kubelet**、**Kube-Proxy。**

一个集群中可以有很多 **Node 节点**，用以保证集群容器的分布式部署，用于实现**业务的高可用性**；也可以有很多 Master 节点，并通过一个<mark style="color:blue;">**负载均衡器**</mark>保证**集群控制节点的高可用**。

> 负载均衡可以使用**软件负载均衡 Nginx/LVS/HAProxy + KeepAlived** 或者**硬件负载均衡 F5** 等。
>
> * 其高可用原理在于分配了一个<mark style="color:blue;">**虚拟 IP 地址（VIP）**</mark>在多个 Master 节点间进行漂移，当主节点发生宕机时，其他的从节点会竞争主节点角色，并获得分配的 VIP 地址。
> * 其他组件通过上述的 VIP 连接至负载均衡器，由负载均衡器将请求转发给后端的 Kube-APIServer。

{% hint style="warning" %}
#### **Etcd** 集群可以和 Master 节点部署在同一个宿主机，也可以单独部署，<mark style="color:orange;">**生产环境建议部署大于 3 的奇数台Etcd 节点实现 Etcd 集群的高可用。**</mark>
{% endhint %}
