K8s将集群中的机器划分为一个主节点和一群工作节点,在主节点上运行着集群管理相关的一组进程kube-apiserver、kube-controller-manager 和 kube-scheduler,这些进程实现了整个集群的资源管理、pod 调度、弹性伸缩、安全控制、系统监控和纠错等管理功能,并且都是全自动完成的。集群中的工作节点运行真正的应用程序,各自又通过若干组件的组合来实现。在节点上,K8s管理的最小运行单元是pod。负载均衡模式需要通过kubelet、kube-proxy等这些服务进程实现,下图是K8s的整体架构:

主节点即中央控制节点是K8s 集群的管理节点,管理集群当中数据的接口、状态监测和回滚、状态更新、调度等功能,kubectl是K8s的命令行工具集,用于通过命令行与API server进行交互,而对K8s进行操作,实现在集群中进行各种资源的管理控制等操作,通过节点控制器来与工作节点交互。主节点内部架构如下图所示:

上图可以看出主节点的核心组件以及内部的交互流程,主节点提供的核心组件如下。

(1) etcd 是集群的状态, K8s 默认使用分布式的etcd集群整体存储用来实现发现服务和共享配置集群的所有状态都存储在etcd 实例中,并具有监控的能力,因此当etcd中的信息发生变化时,能够快速地通知集群中相关的组件。

(2) API server提供了集群网关,API server在客户端对集群进行访问, 客户端需要通过认证, 并使用API server作为访问节点和 pod (以及服务)的堡垒和代理/通道。

(3) Scheduler主要功能是资源调度,讲pod调度到对应的主机上。依据请求资源的可用性、服务请求的质量等约束条件,K8s也支持用户自己提供的调度器。

(4)controller负责维护集群的状态,比如故障检测、内存垃圾回收、滚动更新等,也执行API业务逻辑;K8s默认提供replication controller、controller、daemonset controller等控制器。

(5)kube-ui为可选组件,自带的一套用来查看集群状态的Web界面。

(6)kube-dns 为可选组件,记录启动的pod和服务地址,提供域名到地址的转换映射。

(7)其他组件包括容器资源使用监控、日志记录等。这些管理组件可以任意部署在相同或者不同的机器上,只要可以通过标准的HTTP接口相互访问即可。这意味着K8s的管理组件进行扩展将变得十分简单。在创建K8s集群过程中,都要预装一些必要的软件来响应主节点的管理,另外还有负责网络和负载均衡的接入代理。节点具体负责真正的容器的启停、状态监测、执行结果上报等工作。工作节点内部组件如下图所示:

工作节点主要由以下核心组件组成:

(1)本地的容器运行时环境,负责镜像管理以及pod和容器的真正运行。K8s本身并不提供容器运行时环境,但提供了接口,可以插入所选择的容器运行时环境,目前支持Docker和rkt。

(2)kubelet是节点上最主要的工作代理,用于汇报节点状态并负责维护pod的生命周期,也负责volume(CVI)和网络(CNI)的管理。kubelet是pod和节点API的主要实现者,负责驱动容器执行层。作为基本的执行单元,pod可以拥有多个容器和存储卷,能够方便地在每个容器中打包一个单一的应用,从而解耦了应用构建时和部署时所关心的事项,方便在物理机或虚拟机之间进行迁移。

(3)kube-proxy代理对抽象的应用地址的访问,服务提供了一种访问一群pod的途径, kube-proxy负责为服务提供集群内部的服务发现和应用的负载均衡(通常利用iptables规则),实现服务到pod的路由和转发。此方式通过创建一个虚拟的IP来实现,客户端能够访问此IP,并能够将服务透明地代理至pod。

(4)辅助组件,可选,Supervisord用来保持kubelet和Docker进程运行,Fluentd用来转发日志等。节点的重要属性有地址信息、状态、资源容量、节点信息。这些属性用来标识节点的运行状态,并可以被外部组件访问识别。

基本上这4类服务就能涵盖所有的在线交易类业务场景。

Kubernetes的整体架构的更多相关文章

  1. 【k8s连载系列】2. k8s整体架构

    # 一.Kubernetes的整体架构 学习k8s,最终目的是为了部署应用,部署一个完整的k8s, 就要知道k8s的组成.k8s主要包含两大部分: 中间包含三个绿色包的是master服务器. 下面是n ...

  2. Kubernetes 之上的架构应用

    规划并运转一个兼顾可扩展性.可移植性和健壮性的运用是一件很有应战的事情,尤其是当体系杂乱度在不断增长时.运用或体系 本身的架构极大的影响着其运转办法.对环境的依靠性,以及与相关组件的耦合强弱.当运用在 ...

  3. Spring技术内幕:设计理念和整体架构概述(转)

    程序员都很崇拜技术大神,很大一部分是因为他们发现和解决问题的能力,特别是线上出现紧急问题时,总是能够快速定位和解决. 一方面,他们有深厚的技术基础,对应用的技术知其所以然,另一方面,在采坑的过程中不断 ...

  4. TiDB 整体架构 结合yarn zookeeper分析架构

    TiDB 简介与整体架构| PingCAP https://www.pingcap.com/docs-cn/overview/ 真正金融级高可用 相比于传统主从 (M-S) 复制方案,基于 Raft ...

  5. 【深入浅出jQuery】源码浅析--整体架构

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  6. Underscore 整体架构浅析

    前言 终于,楼主的「Underscore 源码解读系列」underscore-analysis 即将进入尾声,关注下 timeline 会发现楼主最近加快了解读速度.十一月,多事之秋,最近好多事情搞的 ...

  7. jQuery 2.0.3 源码分析core - 整体架构

    拜读一个开源框架,最想学到的就是设计的思想和实现的技巧. 废话不多说,jquery这么多年了分析都写烂了,老早以前就拜读过, 不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery ...

  8. [转]Android App整体架构设计的思考

    1. 架构设计的目的 对程序进行架构设计的原因,归根到底是为了提高生产力.通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点, ...

  9. jQuery整体架构源码解析(转载)

    jQuery整体架构源码解析 最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性, ...

随机推荐

  1. 119_Power Pivot 长尾明细显示为【其他】

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 最近比较忙,太久不没有更新文章,确实没有好的素材,就写一个吧. 在关于产品数据分析的时候,我们经常关注的是主要的 ...

  2. 520表白小程序设计Python代码详解(PyQt5界面,B站动漫风)

    摘要:介绍一个动漫风的表白小程序,界面使用Python以及PyQt实现,界面样式经过多次美化调整,使得整体清新美观.本文详细介绍代码设计和实现过程,不仅是居家表白必备,而且适合新入门的朋友学习界面设计 ...

  3. python之模块(hashlib、logging)

    hashlib模块 加密的概念 加密,是以某种特殊的算法改变原有的数据,当其他人获得数据时,也无法了解数据的内容.简单的来说,就是将明文(人看得懂)数据通过一些手段变成密文数据(人看不懂),密文数据的 ...

  4. 深入浅出Nginx实战与架构

    本文主要内容如下(让读者朋友们深入浅出地理解Nginx,有代码有示例有图): 1.Nginx是什么? 2.Nginx具有哪些功能? 3.Nginx的应用场景有哪些? 4.Nginx的衍生生态有哪些? ...

  5. Google搜索为什么不能无限分页?

    这是一个很有意思却很少有人注意的问题. 当我用Google搜索MySQL这个关键词的时候,Google只提供了13页的搜索结果,我通过修改url的分页参数试图搜索第14页数据,结果出现了以下的错误提示 ...

  6. 覆盖率检查工具:JaCoCo 食用指南

    一:概述 众所周知,软件的代码覆盖率是衡量软件质量的重要指标, 我们今天简单介绍 JaCoCo 的实际使用示例,它是目前在大多数 Java 项目中应用最广泛的覆盖率检测框架 更多资料参考:JaCoCo ...

  7. 『忘了再学』Shell流程控制 — 33、if条件判断语句(一)

    目录 1.单分支if条件语句 2.双分支if条件语句 (1)示例1 (2)示例2 什么是流程控制? 普通理解:Shell编写的程序是顺序执行的,也就是说第一命令先执行,然后接着执行第二条命令,然后再下 ...

  8. 【Azure 应用服务】App Service 开启了私有终结点(Private Endpoint)模式后,如何来实现公网Git部署呢?

    问题描述 因为中国区的App Service对外(公网访问)需要进行ICP备案,所以很多情况下,Web应用部署到App Service后,都是通过Application Gateway(应用程序网关) ...

  9. 2 万字 + 30 张图 | 细聊 MySQL undo log、redo log、binlog 有什么用?

    作者:小林coding 计算机八股文网站:https://xiaolincoding.com/ 大家好,我是小林. 从这篇「执行一条 SQL 查询语句,期间发生了什么?」中,我们知道了一条查询语句经历 ...

  10. 《ECMAScript 6 入门》【二、变量的解构赋值】(持续更新中……)

    前言: 让我们看下es6的新语法解构,跟模式匹配类似.一.数组的解构赋值 举个例子给多个变量赋值的写法: var a =1;var b =2;var c =3; 需要写多个变量特别麻烦,我们先使用以前 ...