1. Master节点

Master是Kubernetes Cluster的大脑,运行这Daemon服务(守护进程)包括 kube-apiserver、kube-scheduler、kube-controller-manager、etcd和Pod网络(如flannel)。

(1)API Server(kube-apiserver)

API Server提供 HTTP/HTTPS RESTful API,即Kubernetes API。API Server是K8s Cluster的前端接口,各类客户端工具(CLI或UI)以及k8s其他组件可以通过它管理Cluster的各种资源。

(2)Scheduler(kube-scheduler)

Scheduler负责决定将Pod放在哪个Node上运行。Scheduler在调度时会充分考虑Cluster的拓扑结构,当前各个节点的负载,以及应用节点的负载,以及应用对高可用、性能、数据亲和性的需求。

(3)Controller Manager(kube-controller-manager)

Controller Manager负责管理Cluster各种资源,保证资源处于预期的状态。Controller Manager由多种controller组成,包括replication controller、endpoints controller、namespace controller、serviceaccounts controller等。

不同的controller管理不同的资源。例如,replication controller管理Deployment、StatefulSet、DaemonSet的生命周期,namespace controller管理Namespace资源。

(4)etcd

etcd负责保存k8s cluster的配置信息和各种资源的状态信息,当数据发生变化时,etcd会快速地通知k8s相关组件。

(5)Pod网络

Pod要能够相互通信,k8s cluster必须部署Pod网络,flannel是其中一个可选方案。

2. Node节点

Node是Pod运行的地方,Kubernetes支持Docker、rkt等容器Runtime。Node上运行的Kubernetes组件有kubelet、kube-proxy和Pod网络。

(1)kubelet

kubelet是Node的agent,当Scheduler确定在某个Node上运行Pod后,会将Pod的具体配置信息(image、volume等)发送给该节点的kubelet,kubelet根据这些信息创建和运行容器,并向Master报告运行状态。

(2)kube-proxy

service 在逻辑上代表了后端的多个Pod,外界通过service访问Pod。Service接收到的请求是如何发给Pod的呢?这就是kube-proxy要完成的工作。

每个Node都会运行kube-proxy服务,它负责将service的TCP/UDP数据流转发到后端的容器。如果有多个副本,kube-proxy会实现负载均衡。

(3)Pod网络

Pod要能够相互通信,k8s必须部署pod网络。

实例

root@k8s-master:~# kubectl create deployment httpd-app --image=httpd:latest --replicas=3
deployment.apps/httpd-app created

等待应用部署完成,查看pod:

root@k8s-master:~# kubectl get pod -o wide
NAME                         READY   STATUS    RESTARTS   AGE   IP           NODE        NOMINATED NODE   READINESS GATES
httpd-app-54d8977885-6tfjf   1/1     Running   0          38s   10.244.1.4   k8s-node1   <none>           <none>
httpd-app-54d8977885-dgg88   1/1     Running   0          38s   10.244.2.2   k8s-node2   <none>           <none>
httpd-app-54d8977885-lbtqh   1/1     Running   0          38s   10.244.1.3   k8s-node1   <none>           <none>

可以看到 k8s 部署了 deployment httpd-app,有三个副本Pod,分别运行在 k8s-node1 和 k8s-node2。

部署过程:

(1)kubectl发送部署请求到API Server。

(2)API Server 通知 Controller Manager创建一个deployment的资源

(3)Scheduler执行调度任务,将三个副本分发到k8s-node1和k8s-node2。

(4)k8s-node1和k8s-node2 上的kubectl在各自的节点上创建并运行Pod。

补充:

(1)应用的配置和当前状态信息都保存在etcd中,执行kubectl get pod时 API Server会从etcd中读取这些数据.

(2)flannel会为每个Pod都分配IP,因为没有创建service,所以目前kube-proxy还没有参与进来。

玩转k8s(二)—— Kubernetes架构相关推荐

  1. 【云原生 • Kubernetes】k8s功能特性、k8s集群架构介绍

    目录(k8s集群搭建先导篇) 一.Kubernetes 的特性/功能 二.Kubernetes 集群架构介绍 1. master node 节点 2. worker node 节点 三.Kuberne ...

  2. 深入玩转K8S之使用kubeadm安装Kubernetes v1.10以及常见问题解答

    原文链接:http://blog.51cto.com/devingeng/2096495 关于K8S: Kubernetes是Google开源的容器集群管理系统.它构建于docker技术之上,为容器化 ...

  3. 在200元的电视盒子使用sealos玩转K8S

    你是否苦于想搭建k8s测试平台却缺少硬件资源?是否因为公有云平台价格昂贵望而却步?是否因为k8s搭建复杂入门又出门? 今天带给你一条龙方案,仅需200元,就能低成本在家就能玩转k8s.  具体的刷固件 ...

  4. 读书笔记-每天5分钟玩转k8s

    一.K8s基本概念 一.Pod Pod 是容器的集合,通常会将紧密相关的一组容器放到一个 Pod 中,同一个 Pod 中的所有容器共享 IP 地址和 Port 空间,也就是说它们在一个 network ...

  5. 每天五分钟玩转K8S(一)

    k8s的安装 总体基于<每天5分钟玩转k8s>这本书,主要是里面有些地方容易有坑,所以想将里面可能有坑的地方记录下来,为其他使用这本书的读者可以避免踩坑.(主要是有些坑坑了我好久T_T)博 ...

  6. 【云原生之K8s】 Kubernetes原理

    目录 引言 一.K8S的由来 1.公有云类型说明:IAAS,PAAS,SAAS 2.资源管理器的诞生 2.1 MESOS 2.2 Docker Swarm 2.3 Kubernetes 二.为什么需要 ...

  7. Kubernetes架构为什么是这样的?

    小编序: 在上周发布的<从"鸿沟理论"看云原生,哪些技术能够跨越鸿沟?>一文中,灵雀云CTO陈恺表示:Kubernetes在云计算领域已经成为既定标准,进入主流市场,最 ...

  8. 深入玩转K8S之智能化的业务弹性伸缩和滚动更新操作

    在上篇我们讲到了较为傻瓜初级的弹性伸缩和滚动更新,那么接下来我们来看看较为高级的智能的滚动更新.本节的知识点呢是K8S的liveness和readiness探测,也就是说利用健康检查来做更为智能化的弹 ...

  9. 揭开面纱:Kubernetes架构详解

    [编者的话] 本文介绍了Kubernetes中的主要组件和各个组件的工作模式. 入门导论:Kubernetes组件和组件之间如何协同工作 本文讲的是揭开面纱:Kubernetes架构详解如果你正在实现 ...

  10. K8S (kubernetes)

    k8s全称kubernetes,这个名字大家应该都不陌生,k8s是为容器服务而生的一个可移植容器的编排管理工具,越来越多的公司正在拥抱k8s,并且当前k8s已经主导了云业务流程,推动了微服务架构等热门 ...

最新文章

  1. R语言为dataframe添加新的数据列(add new columns):使用R原生方法、data.table、dplyr等方案
  2. 建设有竞争力的APP开发团队
  3. Vitamio打造自己的Android万能播放器
  4. word报错:题注或页码中不含章节编号。请使用“开始”选项卡上的“多级列表”按钮,然后选择链接到标题样式的编号方案(无法添加题注)
  5. Linux驱动之混杂设备(misc)
  6. linux 查看socket fd,linux socket中select()函数以及FD_ZERO FD_SET FD_CLR FD_ISSET
  7. linux安装包管理(未完待续)
  8. 决战双十一,促销海报设计模板,学习起来
  9. C语言二叉树求叶子数
  10. Android学习小Demo(19)利用Loader来实时接收短信
  11. 微信小程序中实现人脸识别认证
  12. 量子计算最新进展:量子芯片将可利用现有硅工艺制造
  13. lol java_浅谈设计模式(java)——从lol来看观察者模式
  14. D3.入门教程——简介和安装
  15. 2022年全球沥青毯市场前景分析及研究报告
  16. linux系统解压缩命令大全
  17. python从键盘输入一个字符串、将小写字母全部_从键盘输入一个字符串,将其中的小写字母全部转换成大写字母...
  18. 选型宝访谈:当超融合一体机,具备云计算的基因,将会怎样?
  19. S5PV210 GPIO驱动及其在android2.3.1下jni调用
  20. [C语言]printf函数和scanf函数的返回值

热门文章

  1. hdu 2124 (赤裸裸的贪心)
  2. js获取select option中的值或者value值
  3. ZYNQ 高速QDR IP功能和调用
  4. 华为鸿蒙启用时间,时间表公布!即日起华为近百款设备陆续上“鸿蒙”
  5. 猪年设计素材:一波免费猪猪icon已为你备好
  6. java 套接字是什么_套接字是什么,套接字通信及其原理
  7. js 基本类型与引用类型的区别(我觉得很棒的一篇文章)
  8. Gitee 配置公钥私钥
  9. 3D模型欣赏:甲壳虫 汽车 材质处理细致 划痕真实
  10. jpg格式怎么压缩大小?怎么调整jpg照片大小kb?