网站首页 > 文章精选 正文
大家好,我是mikechen。
K8S是云原生最核心的内容,也是云计算的未来,下满我就全面来详解K8S架构原理@mikechen
本文作者:陈睿|mikechen
文章来源:mikechen.cc
K8S
随着容器化技术的普及,如何有效地管理、和编排大规模的容器集群成为了一个挑战。
Kubernetes应运而生,它提供了一个强大的平台,用于自动化容器的部署、扩展和管理。
Kubernetes(简称K8S)是一个开源的容器编排平台,最初由Google开发,2014年开源。
K8S,用于自动化部署、扩展和管理容器化应用,支持跨主机集群的容器调度与管理。
K8S基于Google内部Borg系统的经验,提供了声明式配置、高可用性和可扩展性。
K8S架构
K8S采用主从分布式架构,如下图所示:
K8S集群,由主节点(Master节点)、和工作节点(Node节点)组成。
+--------------------+ +----------------+ | API Server |<------->| etcd | +--------------------+ +----------------+ | +---------+---------+ | |+-----------+ +------------------+| Scheduler | | ControllerManager|+-----------+ +------------------+ ↓ 控制指令下发 +--------------------------+| Worker Node |+--------------------------+| kubelet | kube-proxy | CRI || Pod(多个容器) |+--------------------------+
控制平面(Master)
管理集群状态,包含API Server、控制器管理器、调度器和etcd。
工作节点(Node)
运行应用,包含Kubelet、Kube-Proxy和容器运行时。
K8S原理
K8S最核心会涉及到:API Server、控制器、Kubelet…等组件,要想掌握好K8S原理,需要掌握好这些组件。
1.API Server
kube-apiserver,是控制平面的核心API服务器,是所有集群操作的入口。
K8S,提供REST API,供kubectl、UI、控制器调用。
负责:认证、授权、准入控制、数据校验…等等功能。
2. Scheduler
负责为Pod选择合适的Node节点。
调度过程:
- 过滤(过滤掉资源不足/不满足约束条件的节点);
- 打分(根据优先级函数选择最优节点);
- 绑定Pod到目标Node。
3. Controller Manager
kube-controller-manager 是 Kubernetes 控制平面的一个核心组件。
负责运行各种控制器,这些控制器监控集群的状态,并确保集群达到期望的状态。
多种控制器的集合:
- ReplicaSetController:副本管理
- NodeController:节点失联检测
- JobController、DaemonSetController等
4. etcd
K8S的分布式状态存储系统,存储集群中所有对象状态。
支持高可用(多副本)、基于Raft协议。
分布式键值存储:存储集群的所有状态数据。
存储集群状态:是集群的“大脑”,确保数据的一致性和可靠性。
5.kubelet
节点代理:运行在每个节点上的代理,管理Pod和容器。
管理Pod和容器:确保Pod中的容器按照期望状态运行。
6.kube-proxy
网络代理:实现Service的负载均衡和网络代理。
实现Service的负载均衡:维护网络规则,将流量转发到正确的Pod。
7.容器运行时(Container Runtime)
容器运行环境:负责运行容器,如Docker、containerd。
K8S工作流程
整体工作流程,如下:
- 用户通过 kubectl 与 API Server 交互。
- API Server 将集群的期望状态存储在 etcd 中。
- 控制器管理器监控集群状态,并采取行动来维持期望状态。
- 调度器将 Pod 调度到合适的节点上。
- Kubelet 管理节点上的 Pod 和容器。
- kube-proxy进行网络的代理与负载均衡。
通过以上组件的协同工作,K8S以实现容器的部署、扩展和自动化管理。
以上
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
猜你喜欢
- 2025-04-23 Kubernetes原理深度解析:万字图文全总结!
- 2025-04-23 一站式速查知识总结,助您轻松驾驭容器编排技术(水平扩展控制)
- 2025-04-23 kubectl常用删除命令
- 2025-04-23 Devops实践之minikube部署:单机环境使用k8s
- 2025-04-23 Kubernetes组件及工作原理详解
- 2025-04-23 Kubernetes Kube-Proxy 组件 IPVS 模式工作原理及常用故障排查
- 2025-04-23 K8s核心组件解析:一文读懂它们的作用
- 2025-04-23 k8s service 负载均衡:proxy mode介绍
- 2025-04-23 一起学云原生(3)k8s基础知识总结
- 2025-04-23 k8s基础知识之基础组件
- 05-16一文学完《图解HTTP》
- 05-16您未被授权查看该页
- 05-16快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别
- 05-16一张图带你了解HTTP 9个请求方法,收藏!
- 05-16Java 里的基本类型和引用类型
- 05-16新手小白学Java|零基础入门笔记|原来学Java可以这么简单
- 05-16深度学习CV方向高频算法面试题6道|含解析
- 05-16C语言结构体成员变量名后加冒号和数字的含义
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)