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了;

最新文章

  1. 谈谈yii2-GridView如何实现列表页直接修改数据
  2. Bootstrap系列 -- 2. 标题
  3. 高并发WCF配置
  4. [原创]android自定义动画的一点感悟
  5. $.ajax提交,后台接受到的值总是乱码?明天再总结
  6. 在HTML下,如何为多个选择框提取数据并序列化
  7. vue写请求接口--请求参数的变量要在return里面声明
  8. UIApplication对象及其代理UIApplicationDelegate[转]
  9. 【ASP.NET Web API教程】2.3 与实体框架一起使用Web API
  10. javaIO流实现读写txt文件
  11. [bzoj2957][楼房重建] (线段树)
  12. Robot Framework学习笔记(五)------Collections 库
  13. 通过python操作smtplib模块发送邮件
  14. webpack打包配置模板
  15. 前端 HTML 常用标签 head标签相关内容 script标签
  16. 【做题】spoj4060 A game with probability——dp
  17. Confluence 6 选项 2 – 转移 Crowd/Jira 应用程序中的用户和用户组到 Confluence 数据库
  18. win下php5.4安装ffmpeg-php扩展
  19. REST Framework组件的解析源码
  20. 【CentOS6.5】安装nginx报错:No package nginx available. Error: Nothing to do

热门文章

  1. Echarts 圆形立体柱状图
  2. uniapp 开发遇到的问题
  3. SAP BW/4HANA学习笔记2
  4. Django路由重定向
  5. mysql随机返回一条数据
  6. 别再写一堆的 for 循环了!Java 8 中的 Stream 轻松遍历树形结构,是真的牛逼
  7. mysql报错This function has none of DETERMINISTIC. NO SOL or READS SOL DATA...
  8. Java中创建线程的方式和线程中常用方法?
  9. 虚拟机redis无法连接
  10. 【转载】rename。给文件批量改名的python脚本