基本概念

1、Master 节点

Kubernetes 集群的管理节点,主要作用:

  • 集中管理和控制整个 Kubernetes 集群

  • 调度和分配容器应用程序到 Node 节点上

  • 监控集群中的节点和应用程序的状态

  • 提供 API 和命令行工具,用于管理和操作集群

2、Node 节点

Kubernetes 集群的资源节点,主要作用:

  • 是运行容器应用程序的实际节点

  • 运行容器运行时(如 Dockerd 或 Containerd)和 Kubernetes 代理(kubelet)

  • 接收 Master 节点分配的应用程序任务,并启动、停止和监控容器的生命周期

  • 执行容器网络和存储的配置和管理

  • 提供资源(CPU、内存等)和服务(如服务发现和负载均衡)

3、API 对象

Kubernetes 集群的管理操作单元,包括 Pod、Deployment、Service、ConfigMap、Secrete 等。

每个 API 对象都有三大类属性:

  • metedata:对象元数据

  • spec:对象规范,用于描述对象的预期状态

  • status:对象状态

Kubernetes 集群的管理操作都是声明式的,可以避免操作丢失或多次运行。

4、资源清单

Kubernetes 集群是一个完全以资源为中心的系统,所有对象都使用资源清单 manifest(YAML 或 JSON 格式) 来定义。


对象介绍(部分)

1、Namespace

命名空间,是对一组资源和对象的抽象集合,用于对 Kubernetes 集群中的资源进行隔离。

特殊的是,Node, PersistentVolume,StorageClass 等部分资源不属于任何 Namespace。

2、Pod

Kubernetes 集群调度的最小单位,是容器的二次封装。

  • 每个 Pod 由一个根容器(Pause)和若干个业务容器组成,业务容器通过根容器共享网络和存储

  • 每个 Pod 表示某个应用程序的一个实例

3、Label

标签,用于实现对象的分类和分组。

4、Deployment

无状态控制器,用于管理 Pod 副本。

创建 Deployment 时需要指定两个东西:

  • Pod 模版:用于创建 Pod 副本

  • Label 标签:用于监控 Pod 副本

5、ReplicaSet

副本集控制器,是 Pod 副本的抽象,用于对 Pod 副本进行伸缩和版本管理。

6、Service

Service 对象将背后的 Pod 聚合在一起,以单一入口的方式对外提供服务。

它定义了 Pod 的访问方式,使得其他应用程序通过 Service 对象即可访问到这些 Pod,而无需关心 Pod 的 IP 地址、端口号等。

  • 匹配 Label 标签的 Pod IP 和端口列表组成 Endpoints(负载均衡列表),由 kube-proxy 将服务 IP 负载均衡到这些 Endpoints 上

  • 每个 Service 都会自动分配一个 clusterIP(VIP)和 DNS 域名,其他容器可以通过该地址或 DNS 来访问服务,而不需要了解后端应用程序的运行

🔔 关于各类对象的详细概念,请前往官方文档自行查阅

Concepts | Kubernetes


组件介绍

1、Master 节点核心组件

  • etcd:存储 Kubernetes 集群的后端数据(即集群的状态信息),是一种键值数据库

  • kube-apiserver:资源操作的唯一入口,负责 etcd 的所有操作,如注册、发现、安全等

  • kube-controller-manager:资源控制中心,负责维护集群的状态,如自动伸缩、滚动更新等

  • kube-scheduler:调度 Pod,为 Pod 分配节点并绑定

2、Node 节点核心组件

  • kubelet:负责处理 Master 下发到本节点的任务,管理 Pod 和 Pod 内的容器

  • container runtime:容器运行时,用于运行容器

  • cni 插件:容器运行时接口,提供网络通信服务,如 Flannel 或 Calico

  • kube-proxy:负载均衡网络流量,为 Service 对象提供内部服务发现

3、可选组件

  • ingress:为 Kubernetes 集群服务提供外网入口

  • kube-dns / coredns:为 Kubernetes 集群提供 DNS 服务

  • metrics:为 Kubernetes 集群提供资源监控服务

  • dashboard:为 Kubernetes 集群提供 GUI 可视化界面

4、组件通信

以 Pod 创建流程为例:

  • 用户通过 HTTP REST API(kube-apiserver)提交创建请求

  • kube-apiserver 将其写入 etcd

  • kube-controller-manager 创建资源

  • kube-scheduler 检测到未绑定 Node 节点的 Pod,开始分配 Node 节点并进行绑定

  • kube-apiserver 将其写入 etcd

  • kubelet 检测到有新的 Pod 调度过来,通过 container runtime 将其运行起来

  • kubelet 通过 container runtime 获取 Pod 状态,并更新到 kube-apiserver 中

  • kube-apiserver 将其写入 etcd