【K8s】Kubernetes架构理解
抽空学习了一下Kubernetes,感觉和大数据领域内集群的资源管理、任务调度等有异曲同工之处,简单总结一下备忘。
【概念】
Kubernetes是一个工业级的容器编排平台,单词有点长,常用K8s代称。
其主要功能有:
- 调度:例如,部署Pod时,将Pod部署到较为空闲的机器节点。
- 自动恢复:例如,机器节点健康检查,将故障机器节点上的Pod迁移到正常机器节点上。
- 弹性伸缩:例如,业务负载检查,当CPU/内存使用率过高,或Pod服务响应时间过长等预置前置条件满足时,自动扩容。
PS:
Pod是一组关系非常密切的容器的集合,例如容器间需要进行直接文件交换、共享某些Namespace、之间有非常频繁的RPC调用等。Pod才是K8s的原子调度单位,而不是容器。
【官方架构】

【理解】
官方的这个图是K8s的技术架构,其实在技术架构之前,应该有个更简化的K8s的逻辑架构做基础。理解输出如下:

- etcd:
是一个分布式存储组件,用来存储的集群所有状态,还具备事件订阅和监听、Leader 选举的能力。
事件订阅和监听:其他各个组件通信,都并不是互相调用API来完成的,而是把状态写入etcd,其他组件通过订阅etcd中的状态监听变化,然后做后续的处理,然后再一次把更新的数据写入etcd。
Leader 选举:组件比如Scheduler,为了做实现高可用,通过etcd从多个(通常是3个)实例里面选举出来一个做Master,其他都是Standby。
- API Server:
上述etcd并不是直接被访问,而是通过API Server代理后被访问。API Server相当于API网关,将对etcd接口的调用封装为标准的RESTFul API。
此外,API Server还实现了一些附加功能,例如身份认证、缓存等。
- Controller Manager:
实现任务调度。直接请求Kubernetes做调度的都是任务,例如Deployment、Deamon Set或者Job,每一个任务请求发送给Kubernetes 之后,都是由 Controller Manager 来处理的。
每一种任务类型对应一个 Controller Manager,例如:Deployment对应Deployment Controller,ReplicaSet对应ReplicaSet Controller。
- Scheduler:
实现资源调度。Controller Manager会把任务对资源Pod的要求,写入到etcd。Scheduler监听到有新的资源Pod要求被调度,会根据整个集群的各个节点的资源情况,将Pod分配到较为空闲合适的节点上。
- Kubelet:
是一个Agent,运行在每一个节点上,它会监听etcd中的Pod的信息,发现有分配给它所在节点的Pod需要运行,就在节点上运行相应的Pod,并且把状态更新回到etcd。
- Kubectl:
是一个提供给用户的命令行工具,用户通过它调用API Server,发送请求写入状态到etcd,或者查询etcd中的状态。
【举例】
假如要运行一个多个实例的Nginx,那么在 Kubernetes内部,流程如下:
- 通过 kubectl 命令行,创建一个包含Nginx 的Deployment对象。kubectl会调用 API Server 往 etcd里面写入一个Deployment 对象。
- Deployment Controller监听到有新的 Deployment 对象被写入,就获取到对象信息,根据对象信息来做任务调度,创建对应的 Replica Set 对象。
- Replica Set Controller 监听到有新的对象被创建,也读取到对象信息来做任务调度,创建对应的 Pod 。
- Scheduler监听到有新的Pod被创建,读取到 Pod 对象信息,根据集群状态将 Pod 调度到某一个节点上,然后更新 Pod(内部操作是将 Pod 和节点绑定)。
- Kubelet 监听到当前的节点被指定了新的 Pod,就根据对象信息运行 Pod。
【K8s】Kubernetes架构理解的更多相关文章
- K8S Kubernetes 架构
Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统. Kubernetes架构 Kubernetes借鉴了Borg的设计理念,比如Pod.Service.Label ...
- 5分钟让你理解K8S必备架构概念,以及网络模型(上)
写在前面 在这用XMind画了一张导图记录Redis的学习笔记和一些面试解析(源文件对部分节点有详细备注和参考资料,欢迎关注我的公众号:阿风的架构笔记 后台发送[导图]拿下载链接, 已经完善更新): ...
- k8s入坑之路(2)kubernetes架构详解
每个微服务通过 Docker 进行发布,随着业务的发展,系统中遍布着各种各样的容器.于是,容器的资源调度,部署运行,扩容缩容就是我们要面临的问题. 基于 Kubernetes 作为容器集群的管理平 ...
- 【转载】k8s入坑之路(2)kubernetes架构详解
每个微服务通过 Docker 进行发布,随着业务的发展,系统中遍布着各种各样的容器.于是,容器的资源调度,部署运行,扩容缩容就是我们要面临的问题. 基于 Kubernetes 作为容器集群的管理平台被 ...
- kubernetes架构(2)
一.Kubernetes 架构: Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务. Master 节点 Master 是 Ku ...
- 第2篇Kubernetes架构
一.Kubernetes 架构: Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务. Master 节点 Master 是 ...
- Kubernetes 架构(下)- 每天5分钟玩转 Docker 容器技术(121)
上一节我们讨论了 Kubernetes 架构 Master 上运行的服务,本节讨论 Node 节点. Node 是 Pod 运行的地方,Kubernetes 支持 Docker.rkt 等容器 Run ...
- Kubernetes 架构(下)【转】
上一节我们讨论了 Kubernetes 架构 Master 上运行的服务,本节讨论 Node 节点. Node 是 Pod 运行的地方,Kubernetes 支持 Docker.rkt 等容器 Run ...
- 【Kubernetes 系列二】从虚拟机讲到 Kubernetes 架构
目录 什么是虚拟机? 什么是容器? Docker Kubernetes 架构 Kubernetes 对象 基础设施抽象 在认识 Kubernetes 之前,我们需了解下容器,在了解容器之前,我们得先知 ...
随机推荐
- ceph对接openstack环境
环境准备: 保证openstack节点的hosts文件里有ceph集群的各个主机名,也要保证ceph集群节点有openstack节点的各个主机名 一.使用rbd方式提供存储如下数据: (1)image ...
- Django - Ajax初识
当需要在弹出的对话框中,做判断操作时,需要用到ajax 1.host.html <!DOCTYPE html><html lang="en"><hea ...
- 如何区分null和undefined
null和undefined是两种数据类型, 如果硬要区分的话. null是一种类型, 赋值变量为null型. 未定义的变量, 即为undefined. var a = null a // null ...
- MySQL之视图、触发器、存储过程、函数、事务、数据库锁
一.视图 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据. 视图的特点: 1.视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系: 2.视图是由基本 ...
- H5 web存储
H5提供了两种在客户端存储数据的方式:localStorage 持久化的本地存储(浏览器关闭重新打开数据依然存在)sessionStorage 针对一个session的本地存储之前这些都是由cooki ...
- hdu2001 计算两点间的距离【C++】
计算两点间的距离 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- 【POJ 1981】Circle and Points(已知圆上两点求圆心坐标)
[题目链接]:http://poj.org/problem?id=1981 [题意] 给你n个点(n<=300); 然后给你一个半径R: 让你在平面上找一个半径为R的圆; 这里R=1 使得这个圆 ...
- JavaSE 学习笔记之StringBuilder(十六)
< java.lang >-- StringBuilder字符串缓冲区:★★★☆ JDK1.5出现StringBuiler:构造一个其中不带字符的字符串生成器,初始容量为 16 个字符.该 ...
- maven local responsitory 手工新增jar
1.推荐几个好的 Maven 常用仓库网址:http://mvnrepository.com/http://search.maven.org/http://repository.sonatype.or ...
- nyoj_289_苹果_20140307
苹果 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 ctest有n个苹果,要将它放入容量为v的背包.给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值. ...