文档章节

Kubernetes总架构图

 爱哭的小魔女
发布于 2017/07/31 16:10
字数 1261
阅读 1
收藏 0

原文链接

 

摘要: 一、Kubernetes的总架构图 二、Kubernetes各个组件介绍 (一)kube-master[控制节点] master的工作流程图 Kubecfg将特定的请求,比如创建Pod,发送给Kubernetes Client。

本文CSDN博客地址:http://blog.csdn.net/huwh_/article/details/71308171

 

一、Kubernetes的总架构图

Center

二、Kubernetes各个组件介绍

(一)kube-master[控制节点]

  •  master的工作流程图

  1. Kubecfg将特定的请求,比如创建Pod,发送给Kubernetes Client。

  2. Kubernetes Client将请求发送给API server。

  3. API Server根据请求的类型,比如创建Pod时storage类型是pods,然后依此选择何种REST Storage API对请求作出处理。

  4. REST Storage API对的请求作相应的处理。

  5. 将处理的结果存入高可用键值存储系统Etcd中。

  6. 在API Server响应Kubecfg的请求后,Scheduler会根据Kubernetes Client获取集群中运行Pod及Minion/Node信息。

  7. 依据从Kubernetes Client获取的信息,Scheduler将未分发的Pod分发到可用的Minion/Node节点上。

1、API Server[资源操作入口]

  1. 提供了资源对象的唯一操作入口,其他所有组件都必须通过它提供的API来操作资源数据,只有API Server与存储通信,其他模块通过API Server访问集群状态。

    1. 第一,是为了保证集群状态访问的安全。

    2. 第二,是为了隔离集群状态访问的方式和后端存储实现的方式:API Server是状态访问的方式,不会因为后端存储技术etcd的改变而改变。

  2. 作为kubernetes系统的入口,封装了核心对象的增删改查操作,以RESTFul接口方式提供给外部客户和内部组件调用。对相关的资源数据“全量查询”+“变化监听”,实时完成相关的业务功能。

2、Controller Manager[内部管理控制中心]

  1. 实现集群故障检测和恢复的自动化工作,负责执行各种控制器,主要有:

    • endpoint-controller:定期关联service和pod(关联信息由endpoint对象维护),保证service到pod的映射总是最新的。

    • replication-controller:定期关联replicationController和pod,保证replicationController定义的复制数量与实际运行pod的数量总是一致的。

3、Scheduler[集群分发调度器]

  1. Scheduler收集和分析当前Kubernetes集群中所有Minion节点的资源(内存、CPU)负载情况,然后依此分发新建的Pod到Kubernetes集群中可用的节点。

  2. 实时监测Kubernetes集群中未分发和已分发的所有运行的Pod。

  3. Scheduler也监测Minion节点信息,由于会频繁查找Minion节点,Scheduler会缓存一份最新的信息在本地。

  4. 最后,Scheduler在分发Pod到指定的Minion节点后,会把Pod相关的信息Binding写回API Server。

(二)kube-node[服务节点]

  •  kubelet结构图

1、Kubelet[节点上的Pod管家]

  1. 负责Node节点上pod的创建、修改、监控、删除等全生命周期的管理

  2. 定时上报本Node的状态信息给API Server。

  3. kubelet是Master API Server和Minion之间的桥梁,接收Master API Server分配给它的commands和work,与持久性键值存储etcd、file、server和http进行交互,读取配置信息。

  4. 具体的工作如下:

    1. 设置容器的环境变量、给容器绑定Volume、给容器绑定Port、根据指定的Pod运行一个单一容器、给指定的Pod创建network 容器。

    2. 同步Pod的状态、同步Pod的状态、从cAdvisor获取Container info、 pod info、 root info、 machine info。

    3. 在容器中运行命令、杀死容器、删除Pod的所有容器。

2、Proxy[负载均衡、路由转发]

  1. Proxy是为了解决外部网络能够访问跨机器集群中容器提供的应用服务而设计的,运行在每个Node上。Proxy提供TCP/UDP sockets的proxy,每创建一种Service,Proxy主要从etcd获取Services和Endpoints的配置信息(也可以从file获取),然后根据配置信息在Minion上启动一个Proxy的进程并监听相应的服务端口,当外部请求发生时,Proxy会根据Load Balancer将请求分发到后端正确的容器处理。

  2. Proxy不但解决了同一主宿机相同服务端口冲突的问题,还提供了Service转发服务端口对外提供服务的能力,Proxy后端使用了随机、轮循负载均衡算法

3、kubectl(kubelet client)[集群管理命令行工具集]

  1. 通过客户端的kubectl命令集操作,API Server响应对应的命令结果,从而达到对kubernetes集群的管理。

参考文章:

https://yq.aliyun.com/articles/47308?spm=5176.100240.searchblog.19.jF7FFa

 

版权声明:本文内容由互联网用户自发贡献,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

原文链接

本文转载自:

粉丝 0
博文 105
码字总数 7329
作品 0
私信 提问
Kubernetes核心组件解析

众所周知,Kubernetes是目前最为火热的容器编排工具之一,其背后有如此多的追随者必然是有原因的。首先Kubernetes非常轻量,通常Kubernetes都是以容器作为载体,而容器本来就具有轻量级秒级部...

Docker
2018/08/05
0
0
直播 | 为什么Kubernetes天然适合微服务

分享时间:3月13日 20:30 分享主题:为什么Kubernetes天然适合微服务 分享人介绍:刘超,网易云解决方案总架构师。毕业于上海交通大学,15年云计算领域研发及架构经验,先后在EMC、CCTV证券资...

Docker
2018/03/12
0
0
Kubernetes Meetup | 云计算 x Docker---新计算,新纪元

随着时代的发展,云计算成为人尽皆知的新一代技术,其地位已上升至国家战略层面。作为云计算2.0时代的先驱,足以改变传统IT时代的最新虚拟化技术Docker和全球顶级开源项目Kubernetes被越来越...

Ghostcloud
2017/10/24
6
0
Kubernetes Meetup | 云计算 x Docker---新计算,新纪元

随着时代的发展,云计算成为人尽皆知的新一代技术,其地位已上升至国家战略层面。作为云计算2.0时代的先驱,足以改变传统IT时代的最新虚拟化技术Docker和全球顶级开源项目Kubernetes被越来越...

Ghostcloud
2017/10/24
7
0
聊聊kubernetes[2]——对Nodes、Service、Pods的理解

聊聊kubernetes——对Nodes、Service、Pods的理解 kubernetes学习笔记,分享出来,希望能帮助一些有需要的人,有问题一起交流。 1. kubernetes组件的简单说明 kubernetes中有很多的组件,比如...

cying
2018/07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 年迈渔夫遭黑帮袭抢

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享Elvis Presley的单曲《White Christmas》: 《White Christmas》- Elvis Presley 手机党少年们想听歌,请使劲...

小小编辑
今天
1K
16
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
12
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部