3.1 K8s API Server 原理分析

  K8s API server核心提供对各种资源对象的增、删、改、查以及Watch等HTTPRest接口,是集群内各个模块之间数据交互和通信的中心枢纽,是整个系统的数据总线和数据中心。

  (1)是集群管理的API入口。

  (2)资源配额控制的入口。

  (3)提供了完备的集群安全机制。

  3.1.1 K8s API server 通过一个名为Kube-apiserver的进程提供服务,该进程运行在Master节点上。在默认情况下,Kube-apiserver进程在本地的8080端口提供rest服务。可以同时开启HTTPS安全端口来启动安全机制,加强REST API访问安全性。

  我们可以通过命令行工具Kubectl来与K8s API server交互,它们之间的接口是REST调用。为了测试和学习K8s API  server所提供的接口,我们也可以使用curl命令行工具进行快速验证。

  也可以用变成的方式调用API server的接口

3.2 Controller Manager 原理分析

  集群内的管理控制中心

  3.2.1 Replication Controller

   副本控制器,确保Pod副本数量保持预设值。

  3.2.2 Node Controller

  kubelet进程在启动时通过API server注册自身的节点信息,并定时向API server汇报状态信息,

   API server将这些信息更新到etcd中,etcd中存储节点信息:健康状况,节点资源,节点名称,节点地址,OS version, Docker版本,kubelet版本。

  Node controller 通过API server实时获取Node的相关信息。

3.2.3 ResourceQuota Controller

  资源配额管理保证指定的资源对象在任何时候都不会超量占用系统物理资源。

  3.2.4 Namespace Controller

  3.2.5 Service Controller 与 Endpotint  controller

   Service、Endpoints与pod的关系: Endpoints表示一个service对应的所有POD副本的访问地址。

   Endpoints controller就是负责生成和维护所有Endpoints对象的控制器。

   Endpoints对象在哪里被使用? 答案: 每个Node上的kube-proxy进程,kube-proxy进程获取每个

   service的Endpoints,实现了Service的负载均衡。

3.3 Scheduler原理分析 

  负责Pod调度的重要功能模块。接收Controller Manager创建新Pod,为其安排一个Node,然后完成后,目标NOde上的kubelet服务进程接管后续工作。 

3.4 kubelet运行机制分析    

  k8s集群中,在每个node节点上都会启动一个kubelet服务进程,该进程用于处理Master节点上下发到本节点的任务,管理Pod以及Pod中的容器。每个kubelet进程会在API server上注册节点自身信息,定期向Master节点汇报节点资源使用情况。

  3.4.1 节点管理

  3.4.2 Pod管理

  3.4.3 容器健康检查

  3.4.4 cAdvisor资源监控

3.5 kube-proxy 运行机制分析 

  service是对一组Pod的抽象,它会根据访问策略来访问这些POD。

   service只是一个概念,真正将service的作用落实的是Kube-proxy服务进程。

   每个Node上都运行一个kube-proxy服务进程,可以看做是Service的透明代理兼负载均衡器。

    其核心功能是将某个service的访问请求转发的到后端的多个pod实例上。

     service的Cluster IP与NodePort等概念是kube-proxy服务通过Iptable的NAT转换实现的,kube-proxy在运行

    过程中动态创建与Service相关的iptables规则,这些规则实现了Cluster Ip以及NodePort请求流量重定向

    到Kube-proxy进程上对应服务的代理端口的功能。

    由于kube-proxy的作用,在service的调用过程中客户端无须关心后端有几个Pod ,中间过程的通信、负载均衡算法以及

故障恢复都是透明的。

3.6 集群安全机制

  

3.7 网络原理

  

  

kubernetes 核心原理的更多相关文章

  1. 第三章 kubernetes核心原理

    kubernetes API Server 提供了Kubernetes各类资源对象(如pod,re,service等)的增删改查及watch等Http Rest接口,成为集群内各个功能模块之间数据交互 ...

  2. kubernetes核心原理之API Server原理分析

    kubernetes API Server的核心功能是提供了Kubernetes各类资源对象(Pod,RC,Service等)的增删改查及Watch等HTTP Rest接口,成为集群内各个功能模块之间 ...

  3. Docker容器技术的核心原理

    目录 1 前言 2 docker容器技术 2.1 隔离:Namespace 2.2 限制:Cgroup 2.3 rootfs 2.4 镜像分层 3 docker容器与虚拟机的对比 1 前言 上图是百度 ...

  4. 【算法】(查找你附近的人) GeoHash核心原理解析及代码实现

    本文地址 原文地址 分享提纲: 0. 引子 1. 感性认识GeoHash 2. GeoHash算法的步骤 3. GeoHash Base32编码长度与精度 4. GeoHash算法 5. 使用注意点( ...

  5. docker核心原理

    容器概念. docker是一种容器,应用沙箱机制实现虚拟化.能在一台宿主机里面独立多个虚拟环境,互不影响.在这个容器里面可以运行着我饿们的业务,输入输出.可以和宿主机交互. 使用方法. 拉取镜像 do ...

  6. HDFS 核心原理

    HDFS 核心原理 2016-01-11 杜亦舒 HDFS(Hadoop Distribute File System)是一个分布式文件系统文件系统是操作系统提供的磁盘空间管理服务,只需要我们指定把文 ...

  7. 剖析SSH核心原理(一)

      在我前面的文章中,也试图总结过SSH,见 http://blog.csdn.net/shan9liang/article/details/8803989 ,随着知识的积累,总感觉以前说得比较笼统, ...

  8. 关于Ajax的技术组成与核心原理

    1.Ajax 特点: 局部刷新.提高用户的体验度,数据从服务器商加载 2.AJax的技术组成 不是新技术,而是之前技术的整合 Ajax: Asynchronous Javascript And Xml ...

  9. Libevent核心原理

    Libevent 是一个事件驱动框架, 不能仅说他是一个网络库. notejs就是采用与libevent类似的libev来做核心驱动的.   Libevent支持三种事件:io事件.信号事件.时间事件 ...

随机推荐

  1. Appium测试Webview

    通常情况下我们都是通过Android自带的tools下的UI automator viewer来获取控件或元素的xpath.class.id等来直接进行定位 如下面的“用户登录”按钮: 但是有一些并不 ...

  2. Spring报错:java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist

    感谢:http://blog.chinaunix.net/uid-20681545-id-184633.html提供的解决方案,非常棒 ! 问题说明: 新建一个Spring项目,新建一个Bean类:H ...

  3. websocket基本概念

    (1)websocket 协议 与 http协议 websocket 协议,双工通道 socket连接不断开 http 协议 ,只能请求响应 (用户主动获取) socket连接断开 都是基于socke ...

  4. 在头文件中声明class 类 与 include类所在的头文件区别---理解

    在头文件中声明class 类 与 include类所在的头文件的理解: 在头文件中,声明类 它告诉编译器:存在这样的类.而实际的类则可以位于同一个编译单元中,也可以放在其他编译单元中.没有这个类原型, ...

  5. [置顶] 针对 CoordinatorLayout 及 Behavior 的一次细节较真

    我认真不是为了输赢,我就是认真.– 罗永浩 我一直对 Material Design 很感兴趣,每次在官网上阅读它的相关文档时,我总会有更进一步的体会.当然,Material Design 并不是仅仅 ...

  6. matlab linux的安装(第二次)

    1 挂载 2 下载jdk,matlab里面那个不行,缺点东西 3 安装 ./install *** 4 激活,非在线 5 license.lic路径在百度云中有 6 运行路径在你安装过程中的选的路径, ...

  7. ubuntu下mysql安装提供外网访问

    修改配置文件 1. sudo apt-get install mysql-server #安装mysql服务器 2. sudo apt-get install  mysql-client #安装mys ...

  8. C的动态链表建立

    运用到的函数为: 动态内存分配函数malloc()              比如:char *name=(char *)malloc(20);  相当与c++的new关键字 动态内存释放函数free ...

  9. 每天一个linux命令:【转载】cp命令

    cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数.但是如果是 ...

  10. BZOJ2131 免费的馅饼【线段树优化DP】

    Input 第一行是用空格隔开的二个正整数,分别给出了舞台的宽度W(1到10^8之间)和馅饼的个数n(1到10^5). 接下来n行,每一行给出了一块馅饼的信息.由三个正整数组成,分别表示了每个馅饼落到 ...