跳到主要内容

图解 Kubernetes 组件与网络模型

前言

一直没有系统的学习过 Kubernetes ,最近抽出了点时间学习 Kubernetes。

Kubernetes 是典型的 Master + Worker 架构,跟 Console + Sidecar 有些相似,Master 节点负责调度、监控、是所有流量的入口,Worker 负责具体的 Pod 运行。

Kubernetes 核心组件

Kubernetes 组件分为两大类:Control Plane(控制层) 和 Worker Node(工作层)

控制层

  • kube-apiserver:提供 RESTful API,集群的唯一入口,所有组件和用户请求都要经过它。
  • etcd:分布式 KV 存储,保存集群所有状态数据(Pod、Service、ConfigMap 等)。
  • kube-scheduler:负责把新创建的、还没绑定节点的 Pod 调度到合适的 Node 上。
  • kube-controller-manager:运行各种控制器(Deployment、ReplicaSet、Service 等控制器)。

工作层

  • kubelet:负责接收 apiserver 下发的 Pod 定义,上报 Pod 状态。
  • kube-proxy:负责 Service 的负载均衡与转发。
  • container:真正跑容器,早期是 Docker

Kubernetes 控制层与工作层核心组件

Kubernetes 网络模型

一次网络请求在 Kubernetes 的完整流程:

  1. Ingress 层,Ingress Controller 根据配置规则分发请求。
  2. Service 层,根据服务发现以及负载均衡继续分发请求。
  3. Pod 层,服务实际运行层处理请求。

Kubernetes Ingress、Service 与 Pod 网络模型

一次完整流程

  1. 用户执行 kubectl apply -f deploy.yml
  2. kubectl 解析 YAML(Deployment)
  3. kubectl 向 kube-apiserver 发送创建请求
  4. kube-apiserver 做认证鉴权,把 Deployment 资源持久化保存到 etcd
  5. kube-apiserver 返回成功
  6. controller-manager 通过 Watch 机制监听到新 Deployment
  7. 创建 ReplicaSet 并同时创建 Pod (未正式分配资源)存入 etcd
  8. scheduler 选择合适的 Node 并完成 Pod 绑定,将信息存入 etcd

kubectl apply 创建 Deployment 的详细时序图

💬 评论区