抽空学习了一下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内部,流程如下:

  1. 通过 kubectl 命令行,创建一个包含Nginx 的Deployment对象。kubectl会调用 API Server 往 etcd里面写入一个Deployment 对象。
  2. Deployment Controller监听到有新的 Deployment 对象被写入,就获取到对象信息,根据对象信息来做任务调度,创建对应的 Replica Set 对象。
  3. Replica Set Controller 监听到有新的对象被创建,也读取到对象信息来做任务调度,创建对应的 Pod 。
  4. Scheduler监听到有新的Pod被创建,读取到 Pod 对象信息,根据集群状态将 Pod 调度到某一个节点上,然后更新 Pod(内部操作是将 Pod 和节点绑定)。
  5. Kubelet 监听到当前的节点被指定了新的 Pod,就根据对象信息运行 Pod。

【K8s】Kubernetes架构理解的更多相关文章

  1. K8S Kubernetes 架构

    Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统. Kubernetes架构 Kubernetes借鉴了Borg的设计理念,比如Pod.Service.Label ...

  2. 5分钟让你理解K8S必备架构概念,以及网络模型(上)

    写在前面 在这用XMind画了一张导图记录Redis的学习笔记和一些面试解析(源文件对部分节点有详细备注和参考资料,欢迎关注我的公众号:阿风的架构笔记 后台发送[导图]拿下载链接, 已经完善更新): ...

  3. k8s入坑之路(2)kubernetes架构详解

    每个微服务通过 Docker 进行发布,随着业务的发展,系统中遍布着各种各样的容器.于是,容器的资源调度,部署运行,扩容缩容就是我们要面临的问题.   基于 Kubernetes 作为容器集群的管理平 ...

  4. 【转载】k8s入坑之路(2)kubernetes架构详解

    每个微服务通过 Docker 进行发布,随着业务的发展,系统中遍布着各种各样的容器.于是,容器的资源调度,部署运行,扩容缩容就是我们要面临的问题. 基于 Kubernetes 作为容器集群的管理平台被 ...

  5. kubernetes架构(2)

    一.Kubernetes 架构: Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务. Master 节点 Master 是 Ku ...

  6. 第2篇Kubernetes架构

      一.Kubernetes 架构: Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务. Master 节点 Master 是 ...

  7. Kubernetes 架构(下)- 每天5分钟玩转 Docker 容器技术(121)

    上一节我们讨论了 Kubernetes 架构 Master 上运行的服务,本节讨论 Node 节点. Node 是 Pod 运行的地方,Kubernetes 支持 Docker.rkt 等容器 Run ...

  8. Kubernetes 架构(下)【转】

    上一节我们讨论了 Kubernetes 架构 Master 上运行的服务,本节讨论 Node 节点. Node 是 Pod 运行的地方,Kubernetes 支持 Docker.rkt 等容器 Run ...

  9. 【Kubernetes 系列二】从虚拟机讲到 Kubernetes 架构

    目录 什么是虚拟机? 什么是容器? Docker Kubernetes 架构 Kubernetes 对象 基础设施抽象 在认识 Kubernetes 之前,我们需了解下容器,在了解容器之前,我们得先知 ...

随机推荐

  1. (转)Arcgis for javascript实现百度地图ABCD marker的效果

    概述: 在我的博客中,有一篇相关的文章,这段时间,有很多人问我求源码,只是时间过去已长,源代码已找不到,乘着这个9.3放假,又重新实现了下,并相关代码做了优化,在此贴出来,方便大家使用. 相关文章地址 ...

  2. C# 调用指定打印机 (并不是默认)

    this.printDocument1.PrinterSettings.PrinterName = "Microsoft XPS Document Writer"; this.pr ...

  3. 使用原生JS的AJAX读取json全过程

    首先ajax(async javascript and xml)是用于前端与后端文件比如xml或者json之间的交互.他是一种异步加载技术,意味着你点击某个加载事件是再也不用刷新整个页面,而是发送局部 ...

  4. ubuntu14.0开机guest账号禁用方法

    在终端里进入/usr/share/lightdm/lightdm.conf.d/目录 sudo vim 50-unity-greeter.conf 然后在文件里输入: [SeatDefaults] a ...

  5. Day 27 网络编程

    目录 网络架构及演变过程 网络架构 互联网和互联网的组成 互联网的组成(教材版) 互联网的组成(科普版) 互联网的硬件组成 互联网的软件组成 OSI七层协议 物理层 数据链路层 网络架构及演变过程 网 ...

  6. 【LeetCode】1、Two Sum

    题目等级:Easy 题目描述:   Given an array of integers, return indices of the two numbers such that they add u ...

  7. HDU 2451 Simple Addition Expression(找规律,考验智商)

    题目 最近比赛的题目好多签到题都是找规律的考验智商的题目啊,,,我怎么越来越笨了,,,, 通过列举,可以发现规律: 从左往右按位扫这个数: 当数的长度大于1时: 当首位大于3时,答案就是4*4*4*… ...

  8. display: table-cell; 自适应布局

    #extras {display: table-cell;width: 180px;padding-left: 10px;border-right: 1px dotted #d7ad7b;} tabl ...

  9. 关于预测io调用的思考

    什么是预测io 预测io是linux2.6版本内核调用默认的调用程序,对应用程序进行跟踪,统计应用程序使用io情况,在读操作返回之前先停顿6ms时间(linux默认时间),如果这期间有读操作过来,可以 ...

  10. 20.混合使用match和近似匹配实现召回率与精准度的平衡

    主要知识点: 召回率的慨念 精准度的慨念 match和近似匹配混合使用方法         召回率(recall):比如你搜索一个java spark,总共有100个doc,能返回多少个doc作为结果 ...