【08-初识Kubernetes】
第一章:Kubernetes架构总览
-
为什么要了解架构?
想想自己需要管理一座城市——需要知道市长办公室在哪(控制面)、交警怎么指挥交通(调度器)、负责节点(节点代理)。Kubernetes就是管理"容器化应用"这座城市的操作系统。
如果不理解架构,就不知道一个命令下去会发生什么。
-
Kubernetes 的前身:Google Borg
脱胎于Google内部运行了超过15年的管理集群-——Borg。
四大核心组件
-
BorgMaster 集群大脑。负责状态管理和决策。【市长角色】
-
Scheduler 智能调度器,决定任务跑在哪台机器。【交警指挥中心】
-
Borglet 节点代理,管理容器生命周期。【每栋物业】
-
Borgcfg 声明式配置工具。【城市规划蓝图】
关键设计思想:BorgMaster 使用Paxos协议保证一致性——即使部分节点故障,集群状态也不会丢失。这个思想直接传承给了Kubernetes.
-
Kubernetes架构总览

设计哲学:决策集中,任务分布。
-
控制面组件详解
控制面是集群的大脑,负责全局决策与事件响应。
kube-apiserver——集群的唯一入口
-
所有组件之间的通信都通过它
-
所有kuberctl命令最终都达它
-
负责认证、鉴权、准入控制。
API Server 集群的前台接待,所有访客必须先经过它。
etcd——集群的记忆
-
分布式键值存储,存储集群的所有数据。
-
高可用、强一致性。
-
如果etcd挂了,集群就失忆了。
Etcd 是集群的数据库,丢了它失去整个集群的状态。
kube—scheduler 调度员
-
监听新创建的Pod
-
根据资源需求、亲和性、污点性等条件,选择最合适的节点。
新来的住户(Pod)该住在哪栋大楼(Node),调度员说了算。
kube-controller-manager——循环控制执行者
-
包含多个控制器(Deployment、ReplicaSet、Node等)
-
每个控制器通过控制循环不断对齐"期望状态"和“实际状态”。
要三个副本,它就一直盯着,少了就加,多了就减少。
-
节点组件详解
每个工作节点上必须运行以下组件:
-
Kubelet ——节点管家
确保Pod中的容器正常运行。
向API Server汇报节点状态。
-
kube-proxy ——网络规则管理者
维护节点上的网络规则(iptables/IPVS)
实现Service的负载均衡。
-
容器运行时—— 实际干活的
负载运行容器
常见选择:containerd 、cri-o
-
API与对象模型
什么是Kubernetes对象?
对象是集群中的实体,描述你想要什么。比如:
我想要运行3个nginx副本——>Deloyment 对象
我想要暴露一个服务———> Server对象
我想存储配置信息——>ConfigMap 对象
核心该概念:spec与status 参数状态
每个对象都有两个关键字:spec 声明我想要什么,期望状态;status 观测实际状态。
控制器持续将实际状态向期望状态对齐,并同步更新 status 反映真实情况。
对象标识:每个对象由三样东西确定:
-
Name (用户定义名称)
-
UID (系统自动生成)
-
Namespace (命名空间范围)
标签范围(Label)与 选择器(Selector)
标签是附加在对象上的键值,是Kubernetes组织资源核心机制:
metadata: labels: app: nginx env: production tier: frontend
选择器通过标签筛选对象:
kubectl get pods -l app=nginx,env=production
-
命名空间(Namespace)
命名空间在单个集群内实现虚拟隔离,适合多个租户场景。
kubernetes默认的四个命名空间:
Defalut 默认命名空间,未指定时资源在此。
-
Kube-system :系统组件(API Server、调度器。
-
Kube-public :所有用户可读的公共资源。
-
Kube-node-lease :节点心跳数据。
-
对象所有权与垃圾回收
对象之间可以有父子关系(通过ownerReference字段)。删除父对象时,可以选择三种策略:
-
前台删除:先删除子对象,再删父对象。
-
后台删除:先删除父对象,再删子对象。
-
孤立删除:只删除父对象,子对象保留。
比如:删除一个Deployment 时,默认会级联删除它创建的ReplicaSet和Pod.
-
API Server 请求处理流程。
当你执行·kubectl apply -f deploy.yaml·时,请求经过以下步骤:
客户端请求 │ ▼ ① 认证(Authentication)—— 你是谁? │ ▼ ② 鉴权(Authorization)—— 你有权限吗? │ ▼ ③ 准入控制(Admission Control)—— 要不要修改/拒绝? │ ▼ ④ 校验(Validation)—— 格式合法吗? │ ▼ ⑤ 存储(Persist)—— 写入 etcd
-
扩展机制
Kubernetes 设计之初就考虑了可扩展性:
-
CRD :自定义资源类型
-
Webhook :拦截API请求做校验/修改
-
认证模块 : 新增认证方式
-
调度插件:自定义调度逻辑
-
网络插件:实现Pod网络
-
存储插件:对接存储系统
-
日志监控
组件日志路径(Linux)
| 组件 | 路径 |
| kube-apiserver | /var/log/kube-apiserver.log |
| kube-scheduler | /var/log/kube-scheduler.log |
| kube-controller-manager | /var/log/kube-controller-manager.log |
| kubelet | /var/log/kubelet.log |
| 容器日志 | /var/log/pods/<namespace>_<pod>_<uid>/<container>/ |
指标采集
所有组件通过 /metrics 端点暴露 Prometheus 格式指标,是监控集群健康的基础设施。
本章小结
| 你要记住的 | 核心要点 |
| 架构模式 | 控制面 + 工作节点,决策集中、任务分布 |
| 控制面四组件 | API Server、etcd、Scheduler、Controller Manager |
| 节点三组件 | kubelet、kube-proxy、容器运行时 |
| 对象核心思想 | spec(期望)→ 控制器 → status(实际) |
| API Server 流程 | 认证 → 鉴权 → 准入控制 → 校验 → 存储 |
| 扩展能力 | CRD、Webhook、网络/存储/调度插件 |
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)