Kubernetes 架构笔记
1. Kubernetes 概述
Kubernetes 是一个容器编排平台,用于自动化部署、扩展和管理容器化应用。
核心功能:
- 自动化容器的部署和复制
- 动态扩缩容
- 负载均衡与服务发现
- 自愈能力(自动重启、替换故障容器)
- 密钥与配置管理
2. Kubernetes 架构图:Master 与 Node 节点核心架构图
3. Kubernetes 架构组件
Kubernetes 采用主从(Master-Worker)架构,分为**控制平面(Control Plane)和工作节点(Worker Nodes)**两部分。
3.1 控制平面(Master)
负责集群的全局决策和调度,包含以下核心组件:
1. kube-apiserver
- 作用:集群的唯一入口,提供 REST API,所有组件均通过它与集群交互。
- 关键特性:
- 认证/授权(如 RBAC)
- 校验资源配置(如 YAML 文件)
- 与 etcd 交互存储集群状态
2. etcd
- 作用:分布式键值存储数据库,保存集群的所有状态数据(如 Pod、Service 配置)。
- 特性:
- 高可用性(通常部署奇数个节点)
- 数据一致性(基于 Raft 算法)
3. kube-scheduler
- 作用:决定 Pod 应该运行在哪个节点上。
- 调度策略:
- 资源需求(CPU/Memory)
- 亲和性/反亲和性(Affinity/Anti-affinity)
- 节点标签匹配
4. kube-controller-manager
- 作用:运行多个控制器进程,确保集群状态符合预期。
- 核心控制器:
- Deployment Controller:管理副本数
- Node Controller:监控节点状态
- Service Controller:管理 Service 和 Endpoints
5. cloud-controller-manager(可选)
- 作用:与云厂商(如 AWS、Azure)交互,管理负载均衡器、存储卷等云资源。
3.2 工作节点(Worker Node)
运行容器化应用的机器,包含以下组件:
1. kubelet
- 作用:节点上的“代理”,负责:
- 与控制平面通信
- 管理 Pod 生命周期(创建/销毁容器)
- 监控容器健康状态
2. kube-proxy
- 作用:实现 Kubernetes Service 的网络代理和负载均衡。
- 支持模式:
- iptables(默认)
- IPVS(高性能场景)
3. 容器运行时(Container Runtime)
- 作用:运行容器的底层软件,如:
- Docker(已废弃,改用 containerd)
- containerd(默认)
- CRI-O
3. Kubernetes 核心对象
对象 | 作用描述 |
---|---|
Pod | 最小部署单元,包含一个或多个共享网络的容器 |
Deployment | 管理 Pod 的副本集,支持滚动更新和回滚 |
Service | 定义一组 Pod 的访问策略(如负载均衡、DNS 名称) |
ConfigMap | 存储非机密配置数据(如环境变量) |
Secret | 存储敏感数据(如密码、令牌) |
Volume | 提供 Pod 中容器的持久化存储 |
4. 集群交互流程示例
- 用户提交请求
kubectl apply -f nginx.yaml
→ 请求发送到kube-apiserver
。 - 写入状态
kube-apiserver
将配置保存到etcd
。 - 调度决策
kube-scheduler
选择合适节点,更新etcd
。 - 执行部署
kubelet
监听到变化,调用containerd
创建容器。 - 服务暴露
kube-proxy
配置 iptables 规则,实现 Service 访问。
评论需开启科学上网!