先记录参考信息:
etcd 场景
https://blog.csdn.net/bbwangj/article/details/82584988

etcd 集群部署
https://www.jianshu.com/p/85803026a9a1

https://www.cnblogs.com/skymyyang/p/10576278.html    (docker 方式)

使用
https://blog.csdn.net/kikajack/article/details/80377526

官网
https://etcd.io/

系统全面简介
https://www.cnblogs.com/panpanwelcome/p/8242418.html

工具:
etcdkeeper3
etcd-browser

ETCD 概念

Raft:etcd所采用的保证分布式系统强一致性的算法。
Node:一个Raft状态机实例。
Member: 一个etcd实例。它管理着一个Node,并且可以为客户端请求提供服务。
Cluster:由多个Member构成可以协同工作的etcd集群。
Peer:对同一个etcd集群中另外一个Member的称呼。
Client: 向etcd集群发送HTTP请求的客户端。
WAL:预写式日志,etcd用于持久化存储的日志格式。
snapshot:etcd防止WAL文件过多而设置的快照,存储etcd数据状态。
Proxy:etcd的一种模式,为etcd集群提供反向代理服务。
Leader:Raft算法中通过竞选而产生的处理所有数据提交的节点。
Follower:竞选失败的节点作为Raft中的从属节点,为算法提供强一致性保证。
Candidate:当Follower超过一定时间接收不到Leader的心跳时转变为Candidate开始竞选。
Term:某个节点成为Leader到下一次竞选时间,称为一个Term。
Index:数据项编号。Raft中通过Term和Index来定位数据。

部署

配置文件

/opt/etcd/cfg/etcd.conf

ETCD_NAME="etcd01" 
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://10.0.52.13:2380"
ETCD_LISTEN_CLIENT_URLS="https://10.0.52.13:2379,http://127.0.0.1:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://10.0.52.13:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://10.0.52.13:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://10.0.52.13:2380,etcd02=https://10.0.52.14:2380,etcd03=https://10.0.52.6:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new" #[Security]
ETCD_CERT_FILE="/opt/etcd/ssl/server.pem"
ETCD_KEY_FILE="/opt/etcd/ssl/server-key.pem"
ETCD_TRUSTED_CA_FILE="/opt/etcd/ssl/ca.pem"
ETCD_CLIENT_CERT_AUTH="true"
ETCD_PEER_CERT_FILE="/opt/etcd/ssl/server.pem"
ETCD_PEER_KEY_FILE="/opt/etcd/ssl/server-key.pem"
ETCD_PEER_TRUSTED_CA_FILE="/opt/etcd/ssl/ca.pem"
ETCD_PEER_CLIENT_CERT_AUTH="true"

把配置文件里的信息解析成命令行参数

--name etcd0      本member 的名字
--initial-advertise-peer-urls http://192.168.2.55:2380 本member地址,给其它member 同步数据用.
--listen-peer-urls http://0.0.0.0:2380 必须为 0.0.0.0 不能localhost , 同步数据
--listen-client-urls http://0.0.0.0:2379 必须为 0.0.0.0 不能localhost , api 接口 --advertise-client-urls http://192.168.2.55:2379 本member地址, 提供api 服务 --initial-cluster-token etcd-cluster-2 设置集群token ( 名称) --initial-cluster etcd0=http://192.168.2.55:2380,
etcd1=http://192.168.2.54:2380
,etcd2=http://192.168.2.56:2380 指定集群成员 --initial-cluster-state new new 或 existing, 新建还是加入其它,还是 补充节点
-data-dir 数据目录 , 默认设置看配置文件。 -discovery http://192.168.1.163:20003/v2/keys/discovery/78b12ad7-2c1d-40db-9416-3727baf686cb // 不明白其意

单节点部署

ubt  直接  执行 apt-get install   etcd 
centos 直接执行  yum install etcd 
通过 一下命令对服务进行控制

systemctl start etcd
systemctl stop etcd
systemctl restart etcd
systemctl status etcd

通过
/etc/systemd/etcd.service 配置文件设置启动参数

使用
etcdctl 命令行 进行 验证, 和操作api

---------------------------------------------------------------------------------------------------------------------------------
以下是应用部分
ETCD  主要功能:
1. 键值存储  (查, 建, 改, 删)
2.有序键
3.watch  观察, 观察键值/node 修改

应用场景:
1. 集群负载均衡 
服务程序启动后, 在同一的node下写入 自己的ip 信息
客户端/代理  watch node ,  更新服务 ip列表, 按策略找 ip 访问 。

2.微服务
其实类似上面

3.k8s 如何使用 ETCD
保存了 flannel 等网络插件配置信息
k8s 本身信息,  各种对象信息:pod , deploy, svc 等

查看网络信息

$ etcdctl --ca-file=/etc/kubernetes/ssl/ca.pem --cert-file=/etc/kubernetes/ssl/kubernetes.pem --key-file=/etc/kubernetes/ssl/kubernetes-key.pem ls /kube-centos/network -r
-- ::22.768145 I | warning: ignoring ServerName for user-provided CA for backwards compatibility is deprecated
/kube-centos/network/config
/kube-centos/network/subnets
/kube-centos/network/subnets/172.30.31.0-
/kube-centos/network/subnets/172.30.20.0-24 $ etcdctl --ca-file=/etc/kubernetes/ssl/ca.pem --cert-file=/etc/kubernetes/ssl/kubernetes.pem --key-file=/etc/kubernetes/ssl/kubernetes-key.pem get /kube-centos/network/config  2018-01-19 18:38:22.768145 I | warning: ignoring ServerName for user-provided CA for backwards compatibility is deprecated { "Network": "172.30.0.0/16", "SubnetLen": 24, "Backend": { "Type": "host-gw" } }

使用 v3 api  可以在  /registry  目录下查看到  k8s 的各种对象信息

ThirdPartyResourceData
apiextensions.k8s.io
apiregistration.k8s.io
certificatesigningrequests
clusterrolebindings
clusterroles
configmaps
controllerrevisions
controllers
daemonsets
deployments
events
horizontalpodautoscalers
ingress
limitranges
minions
monitoring.coreos.com
namespaces
persistentvolumeclaims
persistentvolumes
poddisruptionbudgets
pods
ranges
replicasets
resourcequotas
rolebindings
roles
secrets
serviceaccounts
services
statefulsets
storageclasses
thirdpartyresources

比如查看  pod 信息

ETCDCTL_API= etcdctl get /registry/pods --prefix -w json|python -m json.tool

参考了 :
https://my.oschina.net/u/2306127/blog/2979019https://blog.csdn.net/bbwangj/article/details/82866927

其它应用场景见文章开头的链接。

本文完结,  写下来 才会记忆深刻

最新文章

  1. scss编译
  2. 线程小demo
  3. 简单获取input file 选中的图片,并在一个div的img里面赋值src实现预览图片
  4. 【vijos1066】弱弱的战壕 线段树
  5. .Net文件操作
  6. OpenStack:初识
  7. 【应聘】阿里巴巴Java面试题目
  8. typdef struct 语法
  9. BZOJ3451: Tyvj1953 Normal
  10. 使用getGenericSuperclass()和getActualTypeArguments()将DAO做成泛型
  11. RabbitMQ消息队列安装和配置以及推送消息
  12. android binder机制之——(创建binder服务)
  13. 【CSS学习笔记】背景图片
  14. Css(常用的特殊效果)
  15. Android Studio buildGrade文件注解
  16. 源码mysql-5.7.23在cmake时出现的小问题
  17. 2019-04-17-day034-线程与数据共享
  18. [git] 文件操作
  19. 如何搭建github+hexo博客-转
  20. (转)使用 linux tar 命令压缩与解压文件

热门文章

  1. Ubunto 无法连接ssh客服端
  2. Docker系列(七):Docker图形化管理和监控
  3. 关于Unity中资源打包
  4. LightOJ-1007-Mathematically Hard-欧拉函数打表+前缀和+预处理
  5. P1305 新二叉树 /// 二叉树的先序遍历
  6. 2019 Multi-University Training Contest 7 Kejin Player Final Exam
  7. Python全栈开发:选课系统实例
  8. CF596D Wilbur and Trees
  9. 理清Java中try-catch-finally带return的执行顺序
  10. 安卓手机端微信网页浏览记录清理debugx5.qq.com