【k8s连载系列】2. k8s整体架构( 二 )


## 4、kubectl
命令行管理工具 。这个工具我们可以安装在任何节点上 。通常,我们将其安装在master节点上 。可以安装在安卓手机上,苹果手机上,windows电脑上,只要能够通过网络连接到api server,就能下发请求 。
## 5、Web UI
Web UI是一套可操作的界面 。Dashboard是 Kubernetes 集群的通用的、基于 Web 的用户界面 。它使用户可以管理集群中运行的应用程序以及集群本身并进行故障排除 。
这个仪表盘不是给开发者使用的,开发者通常还是使用命令行,命令行是最全的 。
# 三、etcd数据存储
【【k8s连载系列】2. k8s整体架构】?先来说说etcd数据库的背景 。我们熟悉的docker是docker公司开发的,其实在docker公司吧docker做大之前,还有一个公司也在默默的付出,就是Core OS公司,知道这家公司的人不多,但这个公司的技术背景是非常强悍的 。docker公司和Core OS公司关系非常好,可以说技术是半共享状态 。docker里面很多技术也是core OS公司贡献的 。但是最终的结果是docker公司走红,一飞升天了,但是core OS公司没有几个人知道,但是core OS公司也获得了强大的技术背景的实例 。core OS公司也想崛起,还开发了一款容器,但很显然,没法和docker比,于是core OS公司ua拿了一个策略,加入到了k8s的生态构建 。core OS为k8s构建了很多组件,etcd就是core OS公司开发并且维护的,采用golang语言编写 。etcd是k8s的总存储,由core OS公司负责,由此可见技术能力是很强的 。
etcd是键值对数据库, 存储K8s集群的所有重要信息(持久化). 在Kubernetes集群中起到的了持久化的作用.
## 1.etcd概念
etcd官方将其定位为一个**可信赖**的**分布式****键值存储**服务, 它能够为整个分布式集群存储一些关键数据, 协助分布式集群的正常运转.
> 可信赖的:官方已经提供了一个高可用方案,也就是说本省自带高可用>> 分布式:将数据分散到不同节点,以此来保证数据的强壮性>> 键值存储:就是简单的K-V对 。etcd所有的数据类型只有一种存储结构,就是k-v结构 。
## 2. Raft算法
- Raft是etcd采用的算法,叫做共识算法,或最终一致算法 。
> ?举个例子,什么是共识算法 。比如有一个村子,村子里有几百个村民,然后有一个人考上了***大学,可厉害 。旁边的邻居知道了,然后就开始一传十,十传百,最后整个村子的人都知道了 。这就是共识算法>> ?那最终一致是怎么回事呢?整个村子的人可能有的人先知道这个事,有的人晚点知道,但最终大家都知道 。过程不一定一致,但结果是一致的 。>> ?刚刚说了Raft的节点为什么是3,5,7,9个呢,因为要投票选举,如果数据在某个节点,比如我的数据值是2017,另外两个事2018,已投票我就输了,那就是以你俩的数据为准,你俩成为leader了,来管理我,你们来提供服务,我要听你们的话,你们把数据给我 。
- 每一个Raft集群中都包含多个服务器,在任意时刻,每一台服务器只能处于Leader、Follower以及Candidate三种状态;在处于正常的状态时,集群中只会存在一个Leader,其余都是Follower 。
- Leader:领导者- Follower:跟随者- Candidate:竞选者
注意:一个能被外部正常访问的集群只有Leader和Follower两种状态 。并且通常只有一个leader,其余都是follower
读写的信息, 所有的读写信息都被存在Raft里面, 而且, 为了防止这些信息出现损坏, 他还有一个WAL预写日志
## 2. Raft算法
- ## etcd的版本
<img src="http://shimg.jingyanzongjie.com/230728/0644404526-1.png" alt="img" style="zoom:30%;" />
 etcd现在有两个版本, v2和v3版本,

经验总结扩展阅读