一、ectd数据库介绍
etcd 是 CoreOS 团队于2013年6月发起的开源项目, 是一种开源的分布式键值存储库,用于保存和管理分布式系统保持运行所需的关键信息。 etcd 基于 Raft 共识算法而构建,可确保集群中所有节点之间的数据存储一致性。
etcd 采用全新的设计,具有以下特性:
- 完全复制:etcd 集群中的每个节点都可以访问完整的数据存储库。
- 高度可用:etcd 被设计为没有单点故障,并且可以稳定地容忍硬件故障和网络分区。
- 完全一致:每次数据“读取”都会返回所有集群中最新的“写入”数据。
- 运行迅速:etcd 的基准测试速度为每秒 10,000 次写入。
- 安全可靠:etcd 支持自动传输层安全性 (TLS) 和可选的安全套接字层 (SSL) 客户机证书认证。 由于 etcd 存储重要且高度敏感的配置数据,因此管理员应在部署中实施基于角色的访问控制,并确保与 etcd 交互的团队成员只具有执行其工作所需的最低级别的访问权限。
- 操作简单:任何应用(从简单的 Web 应用到 Kubernetes 等高度复杂的容器编排引擎)都可以使用标准的 HTTP/JSON 工具在 etcd 中读写数据。
由于 etcd 的性能在很大程度上取决于存储磁盘的速度,因此强烈建议在 etcd 环境中使用 SSD。
etcd 是 Kubernetes 的核心组件之一,充当主要键值存储库,用于创建可正常运行且具有容错能力的 Kubernetes 集群。 Kubernetes API 服务器会将每个集群的状态数据都存储在 etcd 中。 Kubernetes 使用 etcd 的“观察”功能来监控这些数据,并在发生变化时自行重新配置。 “观察”功能会存储代表集群实际状态和理想状态的值,并且可以在这两种状态不同时作出响应。
etcd数据库架构分为4个部分:
- HTTP Server: 处理用户API请求以及其它etcd节点的同步与心跳请求。
- Store:处理etcd事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是etcd对用户提供的大多数API功能的具体实现。
- Raft:Raft强一致性算法的具体实现,是etcd的核心。
- WAL:是etcd的数据存储方式。除了在内存中存有所有数据的状态以及节点的索引以外,etcd就通过WAL进行持久化存储。
二、etcd数据库安装和使用
1、etcd安装:etcd数据库可以通过源码和二进制文件方式安装,详细文档可以查看https://etcd.io/docs/v3.5/install/,二进制方式安装可以从https://github.com/etcd-io/etcd/releases/下载合适的版本,解压文件生成一个包含二进制文件的目录,将目录添加到环境变量。输入 “etcd --version”可以查看etcd数据库的版本信息。
2、etcd配置:etcd默认配置文件/etc/etcd/etcd.conf内容如下:
- ETCD_NAME:节点名称,必须唯一;
- ETCD_DATA_DIR:etcd的数据存放目录;
- ETCD_LISTEN_PEER_URLS:用于监听其他节点的url;
- ETCD_LISTEN_CLIENT_URLS:用于和客户端通信的url;
- ETCD_ADVERTISE_CLIENT_URLS:建议本节点和客户端通信使用的url;
- ETCD_INITIAL_CLUSTER:集群中所有节点的信息;
- ETCD_INITIAL_CLUSTER_TOKEN:创建集群的token,这个值每个集群均相同;
- ETCD_INITIAL_CLUSTER_STATE:初始集群状态;
- ETCD_INITIAL_ADVERTISE_PEER_URLS:建议本节点用于和其他节点之间通信的url;
# cat >> /etc/etcd/etcd.conf << EOF ETCD_NAME="etcd01" ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="http://10.10.1.2:2380" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.10.1.2:2380" ETCD_LISTEN_CLIENT_URLS="http://10.10.1.2:2379,http://127.0.0.1:2379" ETCD_ADVERTISE_CLIENT_URLS="http://10.10.1.2:2379" ETCD_INITIAL_CLUSTER="etcd01=http://10.10.1.2:2380,etcd02=http://10.10.1.3:2380,etcd03=http://10.10.1.4:2380" ETCD_INITIAL_CLUSTER_TOKEN="xxxx" ETCD_INITIAL_CLUSTER_STATE="new" EOF
3、交互:与etcd数据库进行交互通常使用etcdctl命令行工具,该工具在安装etcd时默认安装,etcdctl常见的 语法命令如下:
etcdctl get Gets the key or a range of keys etcdctl put Puts the given key into the store etcdctl del Removes the specified key or range of keys [key, range_end) etcdctl txn Txn processes all the requests in one transaction etcdctl compaction Compacts the event history in etcd etcdctl alarm disarm Disarms all alarms etcdctl alarm list Lists all alarms etcdctl defrag Defragments the storage of the etcd members with given endpoints etcdctl endpoint health Checks the healthiness of endpoints specified in `--endpoints` flag etcdctl endpoint status Prints out the status of endpoints specified in `--endpoints` flag etcdctl endpoint hashkv Prints the KV history hash for each endpoint in --endpoints etcdctl move-leader Transfers leadership to another etcd cluster member. etcdctl watch Watches events stream on keys or prefixes etcdctl version Prints the version of etcdctl etcdctl lease grant Creates leases etcdctl lease revoke Revokes leases etcdctl lease timetolive Get lease information etcdctl lease list List all active leases etcdctl lease keep-alive Keeps leases alive (renew) etcdctl member add Adds a member into the cluster etcdctl member remove Removes a member from the cluster etcdctl member update Updates a member in the cluster etcdctl member list Lists all members in the cluster etcdctl snapshot save Stores an etcd node backend snapshot to a given file etcdctl snapshot restore Restores an etcd member snapshot to an etcd directory etcdctl snapshot status Gets backend snapshot status of a given file etcdctl make-mirror Makes a mirror at the destination etcd cluster etcdctl migrate Migrates keys in a v2 store to a mvcc store etcdctl lock Acquires a named lock etcdctl elect Observes and participates in leader election etcdctl auth enable Enables authentication etcdctl auth disable Disables authentication etcdctl user add Adds a new user etcdctl user delete Deletes a user etcdctl user get Gets detailed information of a user etcdctl user list Lists all users etcdctl user passwd Changes password of user etcdctl user grant-role Grants a role to a user etcdctl user revoke-role Revokes a role from a user etcdctl role add Adds a new role etcdctl role delete Deletes a role etcdctl role get Gets detailed information of a role etcdctl role list Lists all roles etcdctl role grant-permission Grants a key to a role etcdctl role revoke-permission Revokes a key from a role etcdctl check perf Check the performance of the etcd cluster etcdctl help Help about any command
4、在服务器上安装Etcd注意的事项:
- 关闭selinux子系统;
- 关闭firewalld或开放需要使用的端口;
- 关闭swap内存交换;
- 配置yum最新源;
标签:Etcd,etcdctl,member,role,user,etcd,组件,ETCD,k8s From: https://www.cnblogs.com/zqhIndex/p/18283676