文章目录
- K8s架构
- K8s核心组件
-
- [控制平面组件(部署在 Master 节点)](#控制平面组件(部署在 Master 节点))
-
- [1. 查看组件运行情况](#1. 查看组件运行情况)
- [2. 查看组件 help 命令](#2. 查看组件 help 命令)
- Node端组件(部署在每个工作节点)
- K8s内部工作原理
Kubernetes(也称为 K8s)是一个开源的容器编排和管理系统,用于自动部署、扩展和管理容器化应用程序。
K8s架构
Kubernetes 采用主从架构(Master-Worker),主要分为两大部分:
1. 控制平面(Control Plane)------ 管理集群用于全局决策(比如调度)、集群状态管理等。
2. 工作节点(Worker Node)------ 执行容器化应用
运行实际的容器应用,并向控制平面汇报状态。
3. 分布式特性
- 无中心节点(Master 节点可多副本 HA)
- 所有组件通过 API Server 交互
- 状态存储在 etcd 中(强一致性)
K8s核心组件
控制平面组件(部署在 Master 节点)
组件 | 作用 |
---|---|
kube-apiserver |
所有组件交互的入口,提供 REST API 接口,是集群的"中枢神经" |
etcd |
分布式键值存储,保存整个集群的状态数据(如 Pod 信息、配置等) |
kube-scheduler |
负责为新创建的 Pod 分配合适的 Node 节点 |
kube-controller-manager |
管理控制器(副本控制器、节点控制器等),维持系统期望状态 |
cloud-controller-manager |
用于和云厂商平台(如 AWS、GCP)集成,管理负载均衡、存储等资源 |
1. 查看组件运行情况
在 Kubernetes 中,控制平面组件本身并不是通过 kubectl 的 help 命令直接查看的对象,因为它们不是 API 对象,而是后台运行的服务程序。但你可以间接地通过以下方式获取它们的信息或确认它们是否在运行。
bash
kubectl get pods -n kube-system

2. 查看组件 help 命令
Node端组件(部署在每个工作节点)
组件 | 作用 |
---|---|
kubelet |
负责与 API Server 通信,管理容器生命周期,监控容器运行状态 |
kube-proxy |
实现服务的负载均衡和网络代理,实现 Kubernetes 的 Service 网络 |
容器运行时(如 containerd、CRI-O、Docker) |
运行容器的底层工具,遵循 Kubernetes 的 CRI 接口 |
K8s内部工作原理
下面用一个创建 Pod 的过程来理解内部工作流程:
创建一个 Pod 的流程:
1. 用户操作:用户通过 kubectl 或其他方式向 kube-apiserver 提交创建 Pod 的请求。
2. API Server 接收请求:
验证并将 Pod 对象写入到 etcd 中(持久存储)。
3. 调度器(kube-scheduler):
- 监听未调度的 Pod;
- 根据策略(资源使用率、亲和性等)选择合适的 Node;
- 将调度结果写入 etcd。
4. 控制器通知 Node:
kubelet 监听到自己的 Node 上有新 Pod 需要创建,拉取镜像并创建容器。
5. 容器运行:
使用容器运行时(如 containerd)启动容器。
6. kubelet 上报状态:
周期性向 API Server 汇报 Pod 运行状态。
7. Service 和 kube-proxy:
若 Pod 关联了 Service,kube-proxy 会更新 iptables 或 IPVS 规则,进行负载均衡。