【K8S系列】深入解析etcd

news2024/10/6 3:33:53

序言

时间永远是旁观者,所有的过程和结果,都需要我们自己去承担。

文章标记颜色说明:

  • 黄色:重要标题
  • 红色:用来标记结论
  • 绿色:用来标记一级论点
  • 蓝色:用来标记二级论点

Kubernetes (k8s) 是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下etcd。

希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言和我交流

 专栏介绍

这是这篇文章所在的专栏,欢迎订阅:【深入解析k8s】专栏

简单介绍一下这个专栏要做的事:

主要是深入解析每个知识点,帮助大家完全掌握k8s,以下是已更新的章节

序号文章
第一讲深入解析 k8s:入门指南(一)
第二讲深入解析 k8s:入门指南(二)
第三讲深入解析Pod对象(一)
第四讲深入解析Pod对象(二)
第五讲深入解析无状态服务
第六讲深入解析有状态服务
第七讲深入解析控制器

第八讲

深入解析 ReplicaSet
第九讲深入解析滚动升级
第十讲深入解析StatefulSet(一)
第十一讲深入解析StatefulSet(二)
第十二讲深入解析DaemonSet
第十三讲深入解析Job

1 基础介绍

1.1 概念介绍

Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。在Kubernetes中,etcd是一个关键组件,用于存储Kubernetes集群中的所有配置数据和状态信息。

本文将介绍etcd的概念、优点、原理和使用方法。

etcd

etcd是一个分布式、高可用性的键值存储系统,由CoreOS开发并开源。它使用Raft算法来保证其高可用性和一致性,并可以在集群中的多个节点上部署。每个etcd节点都包含完整的数据副本,并与其他节点进行复制和同步,以确保数据的一致性和可用性。

在Kubernetes中,etcd存储了所有的Kubernetes对象(如Pod、Service、Deployment等)以及集群的状态信息。Kubernetes的各个组件(如API Server、Controller Manager、Scheduler等)通过etcd进行通信和协调。

1.2 优点介绍

etcd具有以下优点:

  1. 高可用性:etcd使用Raft算法实现了分布式的、高可用性的存储,可以在集群中的多个节点上进行部署,以确保数据的可用性和一致性。

  2. 可靠性:etcd可以持久化存储数据,并使用多版本控制来确保数据的一致性和可靠性。

  3. 简单易用:etcd提供了简单的REST API和命令行工具,使得数据的读写和管理变得非常简单和易用。

1.3 原理介绍

etcd的一些关键原理包括:

  1. 数据模型:etcd中的数据模型是基于键值对的。每个键值对都由一个唯一的键和一个对应的值组成。在Kubernetes中,etcd存储了所有的Kubernetes对象(如Pod、Service、Deployment等)以及集群的状态信息。

  2. 分布式存储etcd使用Raft算法实现了分布式的、高可用性的存储,可以在集群中的多个节点上进行部署,以确保数据的可用性和一致性。每个etcd节点都包含完整的数据副本,并与其他节点进行复制和同步,以确保数据的一致性和可用性。当集群中的某个节点故障时,etcd可以自动重新选举新的主节点,以确保数据的可用性和一致性。

  3. 一致性协议etcd使用Raft算法来保证数据的一致性和可用性。Raft算法是一种分布式一致性算法,用于在分布式系统中实现一致性和可用性。Raft算法将etcd集群分为多个节点,其中一个节点充当领导者(leader),负责处理所有客户端请求,并将写操作复制到其他副本节点中。当领导者节点故障时,其他节点将重新选举新的领导者节点。

  4. 快照和恢复:etcd使用快照机制来定期备份数据,并使用快照来加速恢复过程。当etcd节点启动时,它会从存储在本地磁盘上的快照中恢复数据,以快速重新建立集群状态。

拓展-Raft算法: 

Raft算法是一种分布式一致性算法,用于确保在分布式系统中所有节点的数据保持一致。它由分布式系统研究者Ongaro和Ousterhout在2014年提出,旨在替代Paxos算法。

Raft算法主要包括三个步骤:

  • 选举
  • 日志复制
  • 投票

选举

Raft算法使用一种称为“选举”的过程来选择一个领导者,由该领导者维护数据的一致性。

在选举过程中,每个节点都会发送一个投票请求,其他节点会接收并回复投票

如果一个节点收到大多数节点的投票,则该节点将成为领导者。

日志复制

在选举过程结束后,领导者将开始日志复制过程,即将新数据同步到所有节点。

在日志复制过程中,领导者将向其他节点发送新数据,其他节点将接收并将新数据添加到自己的日志中。

投票

在日志复制过程结束后,Raft算法将使用投票来确定哪个节点是领导者。

每个节点都会发送一个投票请求,其他节点会接收并回复投票。如果一个节点收到大多数节点的投票,则该节点将成为领导者。

2 使用介绍

使用etcd需要了解以下几个方面:

  1. 安装etcd:可以从官方网站下载etcd二进制文件并安装,也可以通过Docker容器运行etcd。

  2. 启动etcd集群:可以通过etcdctl命令行工具或API来启动etcd集群。

  3. 数据读写:可以使用etcdctl命令行工具或API来读写etcd中的数据。例如,可以使用etcdctl get命令来获取存储在etcd中的值,使用etcdctl put命令来将值存储到etcd中。

  4. 集群管理:可以使用etcdctl命令行工具或API来管理etcd集群。例如,可以使用etcdctl member命令来列出集群中的成员节点。

3 在 Kubernetes 中的作用

它可以用来存储 Kubernetes 集群中的所有配置数据,包括:

  • 服务发现
  • 分布式锁定
  • 集群调度
  • 高可用性
  • 存储资源状态:方便 Kubernetes 集群中的组件之间进行通信,以及实现高可用性,以确保 Kubernetes 集群的可用性
  • 跟踪集群状态:方便便检测错误和故障,以及跟踪用户请求,以便 Kubernetes 集群可以做出正确的响应。

等功能所需的所有元数据,从而确保 Kubernetes 集群的可用性。

4 总结 

在Kubernetes中,etcd是一个关键组件,因此需要注意一些使用注意事项。

例如,不要直接修改etcd中存储的Kubernetes对象,而是应该通过Kubernetes API Server来修改。

此外,要确保etcd的高可用性和一致性,应该在Kubernetes集群中使用多个etcd节点,并对其进行适当地配置和管理。

总之,etcd是Kubernetes中非常重要的一个组件,它负责存储Kubernetes集群的所有配置数据和状态信息

了解etcd的概念、优点、原理和使用方法,对于学习和使用Kubernetes来说都非常重要。

一句话总结一下etcd:

etcd 是一种持久化的分布式键值存储,它可以用来存储 Kubernetes 集群中的所有配置数据。

etcd今天就先讲到这里,下次见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/526233.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WeIdentity智能合约源码分析

WeIdentity智能合约 介绍 本文结合WeIdentity智能合约文档对其源码进行阅读分析。当前,WeIdentity合约层面的工作目标主要包括两部分: WeIdentity DID智能合约,负责链上ID体系建立,具体包括生成DID(Distributed IDe…

【C++】vector类详细总结(包括vector二维数组)(持续更新中)

目录 一、vector的初始化(9种) 二、vector的访问和遍历 2.1 访问(3种) (1)使用下标运算符[]访问和修改 (2)使用迭代器访问 (3)使用at()函数访问 &#…

Spring Boot配置多数据源的四种方式

1、导读 在日常开发中我们都是以单个数据库进行开发,在小型项目中是完全能够满足需求的。 但是,当我们牵扯到像淘宝、京东这样的大型项目的时候,单个数据库就难以承受用户的CRUD操作。 那么此时,我们就需要使用多个数据源进行读写…

centos上使用yum安装redis

使用yum install -y redis时报错,没有找到安装包 解决办法: 下载fedora的epel仓库,yum添加epel源:执行 yum install epel-release 回车 再次:yum install redis 回车 开启redis服务 service redis star…

C语言设计扫雷(保姆级教学)

目录 引入: 游戏思路与逻辑: 游戏具体实现过程 整个程序的大体逻辑: 游戏的执行逻辑: game.h头文件内容: 具体函数讲解 menu(菜单函数) Initboard(初始化棋盘函数&#xff09…

Ubuntu 22.04安装Cuda11.7和cudnn8.6

这篇文章记录了如何在Ubuntu22.04上安装CUDA11.7和cudnn8.6。按照步骤理应可以安装成功。如果还有问题,可以留言。 安装显卡驱动 打开‘软件和更新。 点击附加驱动安装显卡驱动 如果已经安装显卡驱动,请忽略上面的步骤。 安装gcc 新安装的Ubuntu22…

微软 New Bing AI 申请与使用保姆级教程(免魔法)

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 最近的 AI 技术实在火爆,从 OpenAI 的 ChatGPT,到微软的 New Bing,再到百度的文心一言,说明 AI …

[408] cache与主存的映射部分概念

涉及:基本理解 (防止误解映射规则cache 与 主存 的 "地址"构成主存块、cache块cache容量、cache的总容量有关计算的一些刁难名词不涉及:cache 与 主存映射规则基本理解:  首先我们需要明确的是我们之后针对的位数都是针对的 地址. 与实际的存储的 (01) 二进制无关. …

C# | 对象池

对象池 文章目录 对象池前言什么是对象池对象池的优点对象池的缺点 实现思路示例代码 结束语 前言 当我们开发一个系统或者应用程序时,我们通常需要创建很多的对象,这些对象可能是线程、内存、数据库连接、文件句柄等等。在某些情况下,我们需…

CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程

使用到的工具软件与固件下载地址: https://41ws38-my.sharepoint.com/:f:/g/personal/ddf_41ws38_onmicrosoft_com/EhgM458YouBBshliWJhjcDcBAU-F5Mu6HTIU8PeKJHZnZA?eZnJZa6 不能下载,帖子下面评论。 准备工作 设备 / 硬件:CM311-1a YST 电…

C语言格式化输出总结:%d,%c,%s,%f, %lf,%m.nd,%m.nf,%m.ns 以及sprintf函数

凡事发生必将有益于我,高手,从来都不仅仅是具备某种思维的人,而是那些具备良好学习习惯的人,成为高手,无他,手熟尔! -----来自一位IT领域的大神 在最近的学习之中,对于格式化输出这个…

微信小程序图片裁剪功能的实现

文章目录 图片上传与处理图片尺寸适配图片显示与裁剪框裁剪框的拖动与缩放增加canvas并裁剪图片保存图片到相册总结 在之前的博文中,已经介绍了如何使用在前端开发中,实现较方便自由的图片裁剪功能,可见博文: 如何一步步实现图片…

直达CSDN——创作者创收

catalogue 🌟 写在前面🌟 关于创收线下聚会🌟 创作是最简单的变现模式🌟 知识星球是否适合你🌟 独自开-让开发变得简单🌟 税/睡后收入🌟 KOL越具价值🌟 期待创收组织的建立&#x1f…

MySQL数据库和Redis缓存一致性的更新策略

目录 专栏导读一、更新策略二、读写缓存1、同步直写策略2、异步缓写策略三、双检加锁策略四、数据库和缓存一致性的更新策略1、先更新数据库,再更新Redis2、先更新缓存,再更新数据库3、先删除缓存,再更新数据库延时双删4、先更新数据库,再删除缓存5、总结五、MySQL主从复制…

解密《永恒之塔私服》龙界要塞全貌

《永恒之塔2.0:进军龙界》将于12月29日14:00正式开放测试,全区全服29日起陆续更新,并将在元旦假期期间完成所有区服更新工作。12月27日,2.0新区抢先免费体验已经开始,凭特权激活码抢先免费体验无外挂《永恒之塔2.0》。…

Transformer通俗笔记:从Word2Vec、Seq2Seq逐步理解到GPT、BERT

前言 我在写上一篇博客《22下半年》时,有读者在文章下面评论道:“july大神,请问BERT的通俗理解还做吗?”,我当时给他发了张俊林老师的BERT文章,所以没太在意。 直到今天早上,刷到CSDN上一篇讲B…

TOGAF®10标准读书会首场活动圆满举办,精彩时刻回顾!

7月21日19:30pm,TOGAF10标准读书会线上系列活动-第一季首场活动圆满举办,读书会活动集聚了行业专家的力量,共同阅读、分享并结合自身实践,来讨论TOGAF标准第10版所阐释的内容。 首期读书会聚焦TOGAF标准第10版中的基本内容展开分享…

AI平台、AI中台架构

选择什么方式接入AI开放平台 1)公有云 形式:在开放平台注册账户,申请权限,调用对应AI能力的API服务 缺点:数据出公司域,存在数据安全 优点:价格相对低 2)私有化 形式:将AI能力以产品包的形式部署到客户的服务器上 缺点:需要后续运维支持、价格昂贵 优点:数据…

字节跳动|后端|提前批|一面+二面+三面+HR 面

一面|1h 自我介绍select、poll、epoll?epoll的两种触发模式?TCP三次握手过程,有什么状态,状态机如何变化?TCP握手的目的有哪些?什么是 TIME_WAIT 状态,为什么需要 TIME_WAIT 状态&a…

168张图,万字长文,手把手教你开发vue后台管理系统

“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第1篇文章,点击查看活动详情。” 我写这个项目的初衷一方面是为了记录自己自学 vue 的一个过程,另一方面是为了帮助小白快速掌握使用 vue 脚手架创建项目的一个完整过程。 本项目是一个…