kubernetes 核心原理
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 核心原理的更多相关文章
- 第三章 kubernetes核心原理
kubernetes API Server 提供了Kubernetes各类资源对象(如pod,re,service等)的增删改查及watch等Http Rest接口,成为集群内各个功能模块之间数据交互 ...
- kubernetes核心原理之API Server原理分析
kubernetes API Server的核心功能是提供了Kubernetes各类资源对象(Pod,RC,Service等)的增删改查及Watch等HTTP Rest接口,成为集群内各个功能模块之间 ...
- Docker容器技术的核心原理
目录 1 前言 2 docker容器技术 2.1 隔离:Namespace 2.2 限制:Cgroup 2.3 rootfs 2.4 镜像分层 3 docker容器与虚拟机的对比 1 前言 上图是百度 ...
- 【算法】(查找你附近的人) GeoHash核心原理解析及代码实现
本文地址 原文地址 分享提纲: 0. 引子 1. 感性认识GeoHash 2. GeoHash算法的步骤 3. GeoHash Base32编码长度与精度 4. GeoHash算法 5. 使用注意点( ...
- docker核心原理
容器概念. docker是一种容器,应用沙箱机制实现虚拟化.能在一台宿主机里面独立多个虚拟环境,互不影响.在这个容器里面可以运行着我饿们的业务,输入输出.可以和宿主机交互. 使用方法. 拉取镜像 do ...
- HDFS 核心原理
HDFS 核心原理 2016-01-11 杜亦舒 HDFS(Hadoop Distribute File System)是一个分布式文件系统文件系统是操作系统提供的磁盘空间管理服务,只需要我们指定把文 ...
- 剖析SSH核心原理(一)
在我前面的文章中,也试图总结过SSH,见 http://blog.csdn.net/shan9liang/article/details/8803989 ,随着知识的积累,总感觉以前说得比较笼统, ...
- 关于Ajax的技术组成与核心原理
1.Ajax 特点: 局部刷新.提高用户的体验度,数据从服务器商加载 2.AJax的技术组成 不是新技术,而是之前技术的整合 Ajax: Asynchronous Javascript And Xml ...
- Libevent核心原理
Libevent 是一个事件驱动框架, 不能仅说他是一个网络库. notejs就是采用与libevent类似的libev来做核心驱动的. Libevent支持三种事件:io事件.信号事件.时间事件 ...
随机推荐
- APUE学习笔记——8.11 实际用户ID、有效用户ID、设置用户ID
用户ID的基本概念 在Unix系统中,很多操作涉及到权限问题,这些权限涉及到用户ID和组ID的概念. 组ID和用户ID的原理和相关内容是类似的.下面介绍用户ID. 我们常见见到三种关于 ...
- [Linux] 虚拟环境的配置和使用 virtualenv
1.安装 sudo apt-get install python-virtualenv 2.使用 创建虚拟环境: virtualenv [虚拟环境名称] 例如: virtualenv env_test ...
- 在IIS上搭建FTP站点
操作环境 系统:win7 IIS版本:7.5 FTP传输工具:FlashXP 概述 本文介绍了如何在win7下利用IIS(默认已安装IIS和FTP功能)搭建FTP站点,FTP站点的常用配置. 快速搭建 ...
- postgres访问外网控制
1. sudo apt-get install postgresql #安装psql 2. su passwd postgres #设置postgres账户的密码 3. postgresql.conf ...
- C#将html代码转换成文本代码
/// <summary> /// 去除HTML标记 /// </summary> /// <param name="strHtml">包括HT ...
- AX内部公司
<object width="450" height="500" align="middle" id="reader&quo ...
- 2019ICPC南昌邀请赛网络赛 I. Max answer (单调栈+线段树/笛卡尔树)
题目链接 题意:求一个序列的最大的(区间最小值*区间和) 线段树做法:用单调栈求出每个数两边比它大的左右边界,然后用线段树求出每段区间的和sum.最小前缀lsum.最小后缀rsum,枚举每个数a[i] ...
- web端高德地图javascript API的调用
[转载https://www.cnblogs.com/zimuzimu/p/6202244.html]web端高德地图javascript API的调用 关于第三放地图的使用,腾讯.百度.高德 具体怎 ...
- 基于 task 为 VSCode 添加自定义的外部命令
我们有很多全局的工具能在各处使用命令行调用,针对某个仓库特定的命令可以放到仓库中.不过,如果能够直接为顺手的文本编辑器添加自定义的外部命令,那么执行命令只需要简单的快捷键即可,不需要再手工敲了. ...
- iOS客户端打包自动集成weex方案
我司在2017年已经部分使用weex开发,然而开发weex 的人都知道,在前端开发完成之后需要集成到 安卓和iOS 各个app 之中.每次修改都要重新copy给各个app 负责人去打包,因此这是一种重 ...