Master节点部署的都是kubernetes的核心模块
APIServer
提供资源操作的唯一入口,并且提供认证/授权/kubernets的访问控制
可以通过kubectl和自己开发的客户端,通过http的请求通过restapi的形式来访问apiserver,从而实现对整个集群的控制

ControllerManager
负责维护整个集群的状态,如,故障检测/扩缩容/滚动更新等

Scheduler
负责资源的调度,按照预定的调度策略,把pod调度到相应的node节点
K8s有丰富的调度策略

Etcd
主要用于一致性存储,保存pod/service和集群的状态等信息
相当于k8s集群需要持久化的数据都会存储在etcd

Kube-dns
负责整个集群的dns服务,但并不是必须的,若不需要通过名字来访问,可以不安装kube-dns,但通常会安装,因为通过名字访问是一个比较重要的功能

Node节点的服务
Kubelet
维护当前节点的容器的生命周期,维护当前节点的volume/网络等的管理

Kube-proxy
每个node都会运行一个kube-proxy,提供内部的服务发现和负载均衡,为service的概念提供一个落地的方法

Kube-dns
负责整个集群的dns服务,但并不是必须的,若不需要通过名字来访问,可以不安装kube-dns,但通常会安装,因为通过名字访问是一个比较重要的功能

Dashboard
提供一个集群相关数据展示和操作的ui界面

整体访问流程
用户执行kubectl/userClient向apiserver发起一个命令,经过认证授权后,经过scheduler的各种策略,得到一个目标node,然后告诉apiserver,apiserver 会请求相关node的kubelet,通过kubelet把pod运行起来,apiserver还会将pod的信息保存在etcd;pod运行起来后,controllermanager就会负责管理pod的状态,如,若pod挂了,controllermanager就会重新创建一个一样的pod,或者像扩缩容等;pod有一个独立的ip地址,但pod的IP是易变的,如异常重启,或服务升级的时候,IP都会变,这就有了service;完成service工作的具体模块是kube-proxy;在每个node上都会有一个kube-proxy,在任何一个节点上访问一个service的虚拟ip,都可以访问到pod;service的IP可以在集群内部访问到,在集群外呢?service可以把服务端口暴露在当前的node上,外面的请求直接访问到node上的端口就可以访问到service了;

----------------------------------------------------------------------------------------------------------------------
以上部分是来至网络比较官方的介绍。 一下是本人的理解。
开放端口 : 
API Server  6443/8080
Controller 10252
Scheduler 10251
Etcd 2379/2380

api server 作为统一接收指令,并实现调度服务。  接收kubelet, kubectl 和 http api 的指令。 
api server 把资源调度的任务分配给  Controller / Scheduler 进行执行, 其实际具体执行pod任务,应该是 node 上的 kubelet
Controller , Scheduler, kubelet , api server 四者把任务和数据统一到 ETCD 进行,保证数据的一致性。

Kube-proxy 作为 node 的网络代理, 执行 svc 的网络映射命令
Kube-dns     负责把 ip  与 name 对应起来, 方便管理

最新文章

  1. [实践] Android5.1.1源码 - 让某个APP以解释执行模式运行
  2. 常用算法——排序(三)
  3. 基于redis和docker的guestbook留言簿案例
  4. HTML、canvas、video灰度
  5. 2. hdfs
  6. 《linux性能及调优指南》
  7. APACHE 403 FORBIDDEN错误的解决办法之一
  8. 多线程与网络之SDWebImage和NSCache
  9. UVALive 4043 Ants
  10. 《how to design programs》第10章表的进一步处理
  11. Jndi使用好处,与简单实例【JBOSS】
  12. CentOS-6.5-x86_64 最小化安装,已安装包的总数,这些包?
  13. C# 我的注册表操作类
  14. 浅析flannel与docker结合的机制和原理
  15. RS485通讯协议的应用 (转)
  16. [刷题]算法竞赛入门经典(第2版) 5-9/UVa1596 - Bug Hunt
  17. 再学习之Spring(面向切面编程)
  18. Python 接口自动化(预)
  19. VS2012中C++,#include无法打开自己所写的头文件(.h)
  20. 操作json数据

热门文章

  1. QT中QString与string的转化,解决中文乱码问题
  2. PPM 信号解析
  3. idea从github中pull或者push成功之后tomcat启动不了,报Error....
  4. Font Awesome 完全兼容 Bootstrap 的所有组件。
  5. git工作区和暂存区图
  6. mysql模糊查询特殊字符(\,%和_)处理
  7. SQLServer 2008 还原数据库备份版本不兼容的问题
  8. Python全栈开发:socket代码实例
  9. es6 + 笔记整理
  10. JUC 一 CopyOnWriteArrayList 和 CopyOnWriteArraySet