闲谈etcd(二)etcd在kubernetes中的应用

Kubernetes

Kubernetes是一个分布式操作系统,它是Google在分布式操作系统领域十余年工程经验和智慧的结晶,Kubernetes已经成为分布式集群管理系统和公有云/私有云的事实标准。

作为分布式操作系统,Kubernetes(包括其前代产品Google Borg)的出现远远晚于UNIX、Linux、Windows等著名的单机操作系统,Kubernetes架构设计自然地继承了很多单机操作系统的珍贵遗产,微内核架构就是这些遗产中最重要的一份。

使用 Kubernetes,可以快速、高效地满足以下的需求:

  • 快速精准地部署应用程序
  • 即时伸缩你的应用程序
  • 无缝展现新特征
  • 限制硬件用量仅为所需资源

etcd在k8s中起到了重要的作用,用于存储所有需要持久化的数据。通过分布式,它还维护分布式机器/服务器上所有集群的数据存储副本。此副本对于所有数据存储区都是相同的,并维护来自所有其他etcd数据存储区的相同数据。即使一个副本被破坏,还有另两个保存着相同的信息。

etcd在kubernetes中的应用

服务发现

分布式系统中,服务发现是比较常见的问题,在同一个分布式中的进程和服务,如何才能找到对方并建立连接,通过etcd保存这些进程的ip和监听的端口,通过名字就可以进行查找和连接。

配置中心

通过对Kubernetes-etcd的键值存储,存储了Kubernetes集群的所有配置。不同于传统的以表格形式存储数据的数据库,etcd为每个记录创建一个数据库页,在更新一条记录时不会妨碍其他记录,etcd以可靠的方式为Kubernetes添加和管理所有记录。

通过watch机制,实时通知配置变化。通过raft算法保持系统数据的cp和强一致性。

通过grpc proxy对同一个key 的watcher做优化。

集群监控

通过watch机制监控各节点,当节点消失或配置有变动时,watcher第一时间发现告知用户。使用TTL Key机制,比如心跳协议来代表节点是否存在,完成各个节点的健康状态。

通过这个功能,Kubernetes可以订阅集群内的更改并执行来自API服务器的任何状态请求。etcd与分布式集群中的不同组件协作。etcd对组件状态的更改作出反应,其他组件可能会对更改作出反应。

Leader选举

etcd不会处理每个集群节点上的写操作。只有一个实例负责在内部处理写操作,那个节点叫做leader。集群内其他节点采用RAFT算法选择一个leader。一旦leader选定,其他节点就成为follower节点。

当写请求到达leader节点时,leader处理写入。leader etcd节点向其他节点广播数据的副本。如果一个follower节点在那一刻处于不活动或脱机状态,那么基于大多数可用节点,写请求将得到一个完整的标志。如果leader得到集群中其他成员的同意,写操作将获得完整标志。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值