kubernets之机理概览
一 了解kubernets的运行机理
1.1 了解架构
众所周知,kubernets的组成由2个部分组成
- kubernets 平面
- node节点 (工作节点)
控制平面的组成
- etcd 分布式的持久化存储
- apiserver 服务器
- scheduler 调度器
- controller manager 控制器管控器
工作节点的组成
- kubelet
- kubelet服务代理 (kube-proxy)
- 容器运行时(主要是docker)
其他可能出现的一些组件(非必需)
- kubernets DNS服务器
- 仪表盘
- Ingress控制器
- 容器网络接口插件
1.1.1 kubernets组建的分布式特性
若想获得完整kubernets的全部功能需要部署全部的组件,各个组件的功能和依赖如下图所示

这里可以通过以下命令来检查集群服务器的健康状态
k get componentstatuses
组件间的通信方式:
kubernets组件间不能直接通信,只能通过apiserver与etcd进行通信,例如修改某个资源状态,都是通过API服务器
单组件运行多个实例
工作节点上面的应用需要发布在单个节点上面,但是控制平面的组件却可以分布在多个节点上,etcd和apiserver可以有多个实例同时进行,但是控制器和调度器某个时间点只有一个有作用,其余的组件就只处于待命状态
组件部署形态
控制平面的组件以及一些常见的插件(网络插件以及Ingress)等这些都是以pod形式部署,而工作节点上面的kube-proxy以pod形式部署,而唯一一个不以pod部署的是kubelet
1.1.2 kubernets中与etcd相关
任何所有资源的mainifest都存储在etcd中,并且唯一能与之通信的只有apiserver,这样的好处是增加乐观锁的系统,并且etcd是kubernets中唯一的存储地方,还有一点要注意的是,由于etcd使用的是RATF算法,这种算法只有当一半以上(不含一半)的节点数能够转换到了另外一种形态的话,系统里面的存储才能够转换形态,具体细节可以查看下图所示

由于这个原因,故通常在部署高可用集群的时候经常需要部署奇数个数的节点数(3,5,7)
1.1.3 kubernets中与api服务器相关
api服务器作为kubernets里面作为k8s中心组件,其他组件或者客户端都会过来调用它,它对外提供了一个restfulapi形式的接口,支持客户端进行增删改查,并将修改后的资源持久化存储到etcd中
同时它还提供了一种一致的方式将对象存储到etcd中也对这些对象进行效验,这样客户端就无法将非法数据存储到集群中的etc中,同时还会处理乐观锁机制,对于并发的写入就不会被其他用户修改
kuberct作为客户端之一,当以json形式文件创建一个资源的时候,实际上是将数据以post形式发布到api服务器中,之后经过api服务器的多重认证写入etcd中

- 第一个需要通过就是认证插件,api服务器可以配置一个或者多个认证插件,在有请求到来的时候,API服务器会轮流调度这些插件,直到有一个能够辨别出来这个请求是谁发过来的
- 第二个需要通过的鉴权插件,这个插件的作用主要是用来鉴别这个用户是否有权限在这个命名空间里面对资源进行一些列的增删改查,这个也可以配置一到多个,之后会进入第三个插件
- 第三个需要通过的准入插件,如果创建或者修改一个资源,需要经过准入插件的认证,服务器可以同时配置很多的准入插件,在这个过程中插件会去修改或者添加资源的某些字段,甚至于拒绝对资源的修改或者创建,这个过程比较验证,需要请求能够通过所有的准入插件才能进行资源验证最后到达存储空间中,之后返回一个响应到客户端
1.1.4 服务端是如何通知客户端资源的变化情况的呢
除了之前讨论的,服务端不会多做任何其他的事情,当创建一个deployment的时候,API服务器不会去创建RS以及任何的pod,这些创建工作是经由控制器以及调度器来执行的任务,api服务器也不会去通知这些调度器以及控制器需要干啥,它做的就是启动这些控制器以及其他的组件来监听已部署资源的变更,控制平面可以请求订阅资源被创建,删除,修改等的通知,这使得组件们去执行相应的操作去完成。
客户端通过创建到API服务器的HTTP连接来监听变更,通过此连接,客户端会收到来自服务端的资源变更,服务端会在创建,修改等操作完成之后,会将更新后的资源发送给所有监听该对象的客户端中,图示描述了,一个资源创建的过程中客户端服务端等的交互过程

小技巧:可以通过以下命令来实时的监控集群中的pod变化
k get po --watch
k get po -o yaml --watch
kubernets之机理概览的更多相关文章
- InnoDB存储引擎概览
InnoDB存储引擎概览 InnoDB存储引擎以其平衡了高可靠性和高性能性而闻名遐迩,在MySQL 8.0版本中,InnoDB存储引擎是默认的存储引擎.(历史追溯从MySQL 5.5.5版本开始, ...
- Activity之概览屏幕(Overview Screen)
概览屏幕 概览屏幕(也称为最新动态屏幕.最近任务列表或最近使用的应用)是一个系统级别 UI,其中列出了最近访问过的 Activity 和任务. 用户可以浏览该列表并选择要恢复的任务,也可以通过滑动清除 ...
- Atitit 软件工程概览attilax总结
Atitit 软件工程概览attilax总结 1.1. .2 软件工程的发展 进一步地,结合人类发展史和计算机世界演化史来考察软件工程的发展史. 表2 软件工程过程模型 表2将软件工程的主要过程模型做 ...
- Kubernets搭建Kubernetes-dashboard
接上篇文章,在已经部署好Kubernetes的基础上部署kubernetes-dashboard,它是官方提供的用户管理Kubernets集群可视化工具:部署dashboard其实和在kubernet ...
- iOS开发系列—Objective-C之基础概览
概览 前面我们已经用了几章内容进行C语言介绍,当然要通过几篇文章完整的介绍C语言的知识是不太现实的,例如C语言的文件操作.内存申请等我们都没有重点介绍,当然核心知识点基本都已经提到了,后面有时间我们会 ...
- iOS开发系列--IOS程序开发概览
概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...
- Azure SQL Database (19) Stretch Database 概览
<Windows Azure Platform 系列文章目录> Azure SQL Database (19) Stretch Database 概览 Azure SQL Da ...
- Web前端开发大系概览 (前端开发技术栈)
前言 互联网建立50多年了,网站开发技术日新月异,但web前端始终离不开浏览器,最终还是HTML+JavaScript+CSS这3个核心,围绕这3个核心而开发出来大量技术框架/解决方案. 我从2000 ...
- Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx
Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx 1. 摘要算法的大概流程2 2. 旧约圣经 (39卷)2 2.1. 与古兰经的对 ...
随机推荐
- 双端口RAM和多模块存储器
目录 双端口RAM 存取周期 双端口RAM 多模块存储器 普通存储器 单体多字存储器 多体并行的存储器 高位交叉编址的多体存储器 低位交叉编址的多提存储器 为什么要这么弄? 高位 低位 流水线(考试常 ...
- DRF对Django请求响应做了技术升级
Django视图是用来处理请求和响应的,Django默认是按Form和Template来设计的,如果要处理以JSON格式为主的RESTful API,那么就需要对Django请求和响应的处理代码进行优 ...
- vue第一单元(初识webpack-webpack的功能-webpack的初步使用)
第一单元(初识webpack-webpack的功能-webpack的初步使用) #课程目标 了解webpack出现的意义,以及webpack解决的前端问题 掌握webpack的使用流程和步骤 掌握we ...
- js配合php原生代码发送ajax请求
<?php //$a = "{'id':'1'}"; //$b = '{"id":1}'; //$a = iconv('ASCII',"UTF- ...
- 第八章 SMS--短信服务
今天咱们接着 上一篇 第七章 Rocketmq–消息驱动 继续写 SpringCloud Alibaba全家桶 -> 第八章 SMS–短信服务,废话不多说,开干 8.1 短信服务介绍 短信服务( ...
- 轻松理解HTTP缓存策略
上一篇文章我写了koa-static的源码解析,其中用到了HTTP的缓存策略,给返回的静态文件设置了一些缓存的头,比如Cache-Control之类的.于是我就跟朋友讨论了一下HTTP的缓存策略: 朋 ...
- kubernetes环境搭建 -k8s笔记(一)
一.环境准备 1.硬件及版本信息: cpu&内存:2核心,2G 网络: 每台vm主机2块网卡,一块NAT用于上网,别一块配置成 "仅主机模式",网段为192.168.100 ...
- GeoServer安装部署流程
1.双击geoserver-2.13.0.exe进行安装,点击Next进行下一步 2.GeoServer遵循GPL许可,点击I agree继续 3.选择要安装的程序文件目录,点击Next继续 4.点击 ...
- 将XML转换为实体
需求 将XML文件中的数据经过转换后插入到数据库中. 参考 C#实体类和XML的相互转换 https://blog.csdn.net/pan_junbiao/article/details/82938 ...
- 【基础】:Rsync数据同步工具
第二十一节 Rsync数据同步工具 1.1 Rsync介绍 1.1.1 什么是Rsync? 1.1.2 Rsync简介 1.3 Rsync的特性 1.1.4 Rsync的企业工作场景说明 1.2 Rs ...