蓝盟IT小贴士,来喽!
从宏观上看,Kubernetes的总体框架是Master、Node、etcd。
主节点是主节点,控制整个Kubernetes群集。 这包括API服务器、计划程序和控制器等组件。 为了保存数据,必须与etcd对话。
API Server :主要提供资源操作的集成门户,以阻止与etcd的直接交互。 功能包括安全、注册、发现等。
调度程序:负责根据特定的调度规则将pod调度到节点上。
控制器:资源控制中心确认资源处于预期的工作状态。
Node是一个工作节点,它向整个集群提供计算能力,并在实际执行容器的地方执行容器、矢量和kube-proxy。
kubelet :主要工作是容器的生命周期管理、与cAdvisor合作的监视、健康检查和定期的节点状态报告。
kube-proxy :主要利用服务来提供集群内部的服务发现和负载均衡,同时监听服务/终端点的变化,刷新负载均衡。
以部署为例,我们来看看架构中的每个组件在创建部署资源时都做了什么。
首先,kubectl开始创建部署的请求
apiserver接收部署创建请求并将相关资源写入etcd,然后所有组件与apiserver/etcd的交互都是类似的
部署控制器列表/watch资源已更改,并开始创建复制请求.
复制控制器列表/watch资源已更改,开始创建Pod请求
调度程序检测未绑定的Pod资源,并通过一系列匹配和过滤器选择适当的节点来绑定
贝克特发现有必要在自己的节点上创建新的Pod,负责Pod的创建和后续的生命周期管理
kube-proxy负责初始化与服务相关的资源,包括服务发现、负载均衡等网络规则
迄今为止,通过Kubernetes的各组件的分工协调,完成了从部署请求的制作到具体的各Pod正常工作的全过程。在Kubernetes的许多API资源中,Pod是最重要、基础和最小的部署单元。
首先应该考虑的问题是为什么需要pod。pod可以说是为“非常亲密”关系的集装箱而设计的集装箱设计模式。 我们设想servelet容器导入war包和日志收集等方案,需要在这些容器之间共享网络、共享存储、共享配置,具有Pod的概念。
文/上海蓝盟 IT外包专家