抽空学习了一下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. 抓包工具Fiddler及Charles

    一.抓包工具介绍 1.charles抓包如何抓取手机端数据包(安卓手机) (1)获取pc的IP地址 (2)打开charles里的[Proxy]-[Proxy setting],设置端口号,默认为888 ...

  2. PHP 之ftp客户端类封装实现

    <?php /** * Class FtpClient */ class FtpClient { private $host = '';//远程服务器地址 private $user = ''; ...

  3. 关于img的一个小知识点

    这两天在撸代码的时候发现图片的最下面总是会留一条空白,刚开始不知道为什么,但是UI拿刀对我说去掉它,瑟瑟发抖的我找了下原因及解决方案. 原因:img 是一个inline-block标签,而这个标签的v ...

  4. Entertainment Box Gym100781E(数据结构+贪心)

    Entertainment Box 题意: 有n个节目,每个节目给出开始时间(st)和结束时间(en): 有k个内存条这k个内存条可以同时存储节目.如果节目j的开始时间stj  大于等于节目i的结束时 ...

  5. RHEL6 配置Yum库

    在/mnt目录下创建子目录“/cdrom”(用于将iso文件挂载到此目录下) 镜像状态确定为“已连接”(“已连接”未勾选的情况下无法获得iso文件) 配置自动挂载文件 (系统开机时会主动读取“/etc ...

  6. Cent os常见操作命令

    1.查看防火墙状态:firewall-cmd –-state 2.关闭防火墙:systemctl stop firewalld.service 3.禁止防火墙开机启动:systemctl disabl ...

  7. CSS3 (1) - Beginner

    /Library/Frameworks/Python.framework/Versions/3.5/bin git clone https://*corp.com/*-dev.git /usr/loc ...

  8. [cogs461] [网络流24题#10] 餐巾 [网络流,最小费用最大流]

    建图:从源点向第一层连边,第一层表示当天用掉多少餐巾,第二层表示当天需要多少餐巾,所以注意购买餐巾的边容量为无穷大,要从源点开始连向第二层的点,每天可能有剩余,在第一层内表示为流入第二天的节点.具体见 ...

  9. 华为/H3C Syslog配置

    H3C交换机的设置举例1. 组网需求将系统的日志信息发送到 linux 日志主机:日志主机的IP 地址为1.2.0.1/16:信息级别高于等于 informational 的日志信息将会发送到日志主机 ...

  10. HDU 5434

    其实是一道状态DP题.都是行与行之间的转移,可以知道,当某j列中有一个象,如果存在情况i-1行j-1列有象而i,j-1位置无象则不可放,或者i-1,j+1有而i,j+1无同样不可放. 使用快速状态转移 ...