前言

K8s目前也是比较主流的一套分布式容器编排工具,因此有着很好的社区,网络上与其相关的技术文章也是数不胜数,该篇文章只是之前学习K8s的笔记搬运。我一直觉得学习一个组件最好的方式还是先了解他的组成架构,然后才会尝试去搭建运行。因此在开始搭建K8s集群前还是应当先对其基础架构中的模块有所了解,该篇文章主要梳理K8s集群部署时我们需要运行的模块(或者说我们在搭集群实质上是在运行哪些模块)。以下是K8s的架构图(截取至K8s官方网站)。
k8s-structure

K8s架构模块

Master节点

名称 作用
ControllerManager 负责管理集群各种资源,如Deployment、DaemonSet、Namespace等等
Kube-apiserver 提供HTTP/HTTPS的RESTFUL接口,CLI工具以及管理端UI界面都通过其管理资源
etcd 储存配置信息以及各种资源的状态信息
Scheduler 决定POD最终在哪个Node上运行,这将涉及到调度策略
Kubelet 根据配置信息创建Pod并运行容器以及上报容器运行的状态

Node节点

名称 作用
Kube-proxy TCP/UDP流转发,是Service组件的实现,当有多个副本时能实现负载均衡,通过Service暴露的端口以及Selector选择器找到一组Pod实现负载均衡
Kubelet 根据配置信息创建Pod并运行容器以及上报容器运行的状态

例子

通过以下几组截图看下K8s集群在运行的各个模块。
k8s-running-module
k8s-kubelet