theboyaply
theboyaply
发布于 2020-03-13 / 767 阅读
0
0

k8s 基础组件

基础组件总览图

k8s组件图

k8s 是采用 http 协议进行通信的 C/S 架构。

kubectl

kubectl 是使用命令行与 k8s 交互的客户端工具,同理 web ui 代表了浏览器或其他图形化工具与 k8s 交互的方式。

我们下面说的 客户端发来的请求、任务 等就是指这里发送的命令。

api server

api server 是一切服务访问的入口。

通过上图你会发现,所有的组件都会与 api server 进行交互(包括图中没有箭头的 kubeletkube proxy),所以 api server 是非常繁忙的,因此为了减轻 api server 的压力,shceduleraplication controller 等一些组件都可以在本地生成一些缓存,通过使用缓存的方式来减少对 api server 的访问。

scheduler

scheduler 任务调度器,负责接收客户端的请求任务,选择合适的节点(node)进行任务分配。

scheduler 发出的调度命令不会直接发送到具体的节点上执行,而是通过 api server 写入到 etcdnode 节点自己会去 etcd 上拉取数据,如果拉取到了分配到自己这个节点的任务,会自动执行。

replication controller

replication controller(controllerManager) 负责副本 (Pod) 的伸缩控制。

k8s 可以指定期望的运行副本的数量,如果实际运行的副本数量少于或多于期望的数量,那么 replication controller 会自动帮助 k8s 进行副本数量的扩充或缩容。

etcd

etcd 是使用 Go 语言开发的,一款使用 <K, V> 存储方式的开源数据库。官方将其定位成一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转。

可信赖的etcd 本身就支持集群化,不像 mysql 等还需要借助其它方式才能实现集群。因此称为可信赖的

etcd 可以保存 k8s 集群所有 需要持久化 的数据,以保证可以根据这些数据对集群进行恢复。

对于 etcd 来说,它分为 v2v3 两个版本:

v2 会将数据写入内存中,因此需要自己进行数据备份操作。

v3 会引入一个本地卷持久化的操作,不需要自己进行数据备份操作。

v2 只存在 k8s v1.11 之前的版本中,在这之后已经被弃用了。

etcd内部架构

etcd内部架构图

etcd 是采用 http 协议进行通信的 C/S 架构,k8s 同样也是采用这种方式。

  • Raftk8s 集群中所有的数据都会存放在这里。
  • WAL:预写日志。如果更改 Raft 中的数据,那么 WAL 会成一份日志记录这次改动。
  • Entry:小版本日志数据,WAL 每一次的日志都会写入到这里存储。
  • Snapshot:大版本日志,每隔一段时间对 Entry 中的日志进行汇总存放。
  • StoreRaftWAL 都会存入这里并写入磁盘中保存。

node 节点

node 节点是 k8s 集群中最终执行客户端请求任务的组件,其包括了三个部分:kubeletkube proxyPod容器

kubelet

操作 CRI 访问容器,管理容器的生命周期。

Container Runtime Interface,容器运行时接口。kubelet 创建和管理容器的时候并不是直接调用Docker API 而是通过一组叫做 CRIgRPC 接口来间接执行的。

kube proxy

负责写入规则至 iptablesipvs(lvs),实现服务访问映射。即 PodPod 之间的访问,Pod 节点的对外服务,负载均衡等等。

kube proxy 默认是操作防火墙 firewall 对容器进行映射。在新的版本中推荐使用 lvs

Pod

Pod 里面跑的是容器,如 Docker、Rocket 等。

其它插件

CoreDNS

可以为集群中的 SVC 创建一个域名 IP 的对应关系解析,即不需要通过 IP 地址去进行访问,直接可以使用 CoreDNS 生成的域名进行访问。

Dashboard

k8s 集群提供一个 B/S 结构访问体系。

Ingress Controller

官方只实现了四层代理,Ingress 可以实现七层代理。

Federation

提供一个跨集群中心多 k8s 管理统一管理功能。

Prometheus

提供一个 k8s 集群的监控能力。

ELK

提供 k8s 集群日志统一分析介入平台。

-- end --


评论