k8s学习笔记之etcd集群部署

一、先准备三个虚拟机:
ip:
10.10.102.60
10.10.102.61
10.10.102.62

二、hostname修改:
永久修改hostname,hostname全部修改为ip
编辑hostname内容:#vim /etc/hostname
将内容删掉,修改为ip
重启服务器:#reboot
查看hostname是否修改:#hostname
三、建立etcd集群
安装etcd: #yum install etcd -y

图片1.png

如果出现以下情况:

图片2.png

可以尝试此处提供的两种解决方案:
a、先自己点击http://mirrors.cug.edu.cn/.....的那个链接,如果可以我们本地网络可以访问得到,那么证明是服务器的网络问题,可以修改dns,方法如下:

  • 命令行输入 sudo vim /etc/resolv.conf
  • 点击 i 进入编辑模式
  • 修改文件内容:
    nameserver 202.101.172.46 #修改成你的主DNS,由于本人在杭州,所以这里用的是杭州电信的dns
    search localhost #你的域名
  • 点击 esc 退出编辑模式
  • 输入 :wq 后回车键退出
    之后执行下:
yum makecache

搞定后重新安装一遍etcd,如果问题还是没有解决则尝试用b方案。

b、由提示的异常可以看出,是找不到etcd-2.3.7-2.el7.x86_64导致的,解决方案如下:
先在网上下载etcd-2.3.7-2.el7.x86_64.rpm

image.png
  • 采用命令:scp /home/rice/桌面/etcd-2.3.7-2.el7.x86_64.rpm root@10.10.102.62:/tmp/etcd-2.3.7-2.el7.x86_64.rpm
    (etcd-2.3.7-2.el7.x86_64.rpm的文件地址根据实际情况修改)将文件远程上传到虚拟机上
  • 采用命令:rpm -i etcd-2.3.7-2.el7.x86_64.rpm (进行安装)
  • 安装后会出现
image.png

不过没关系,重新安装一次etcd即可。

安装成功后配置etcd集群

修改etcd配置文件,我这里的环境是在/etc/etcd/etcd.conf,请根据实际情况修改。

etcd0配置示例:

#[member]
# 节点名称
ETCD_NAME=etcd0
# # 数据存放位置
ETCD_DATA_DIR="/var/lib/etcd/etcd0"
# # 监听其他 Etcd 实例的地址
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
# # 监听客户端地址
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
# # 通知其他 Etcd 实例地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.10.102.60:2380"
# # 初始化集群内节点地址
ETCD_INITIAL_CLUSTER="etcd0=http://10.10.102.60:2380,etcd1=http://10.10.102.61:2380,etcd2=http://10.10.102.62:2380"
# # 初始化集群状态,new 表示新建
ETCD_INITIAL_CLUSTER_STATE="new"
# # 初始化集群 token 
ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
# # 通知 客户端地址 
ETCD_ADVERTISE_CLIENT_URLS="http://10.10.102.60:2379,http://10.10.102.60:4001"

etcd1配置示例:

#[member]
# 节点名称
ETCD_NAME=etcd1
# # 数据存放位置
ETCD_DATA_DIR="/var/lib/etcd/etcd1"
# # 监听其他 Etcd 实例的地址
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
# # 监听客户端地址
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
# # 通知其他 Etcd 实例地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.10.102.61:2380"
# # 初始化集群内节点地址
ETCD_INITIAL_CLUSTER="etcd0=http://10.10.102.60:2380,etcd1=http://10.10.102.61:2380,etcd2=http://10.10.102.62:2380"
# # 初始化集群状态,new 表示新建
ETCD_INITIAL_CLUSTER_STATE="new"
# # 初始化集群 token 
ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
# # 通知 客户端地址 
ETCD_ADVERTISE_CLIENT_URLS="http://10.10.102.61:2379,http://10.10.102.61:4001"

etcd2配置示例:

#[member]
# 节点名称
ETCD_NAME=etcd2
# # 数据存放位置
ETCD_DATA_DIR="/var/lib/etcd/etcd2"
# # 监听其他 Etcd 实例的地址
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
# # 监听客户端地址
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
# # 通知其他 Etcd 实例地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.10.102.62:2380"
# # 初始化集群内节点地址
ETCD_INITIAL_CLUSTER="etcd0=http://10.10.102.60:2380,etcd1=http://10.10.102.61:2380,etcd2=http://10.10.102.62:2380"
# # 初始化集群状态,new 表示新建
ETCD_INITIAL_CLUSTER_STATE="new"
# # 初始化集群 token 
ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
# # 通知 客户端地址 
ETCD_ADVERTISE_CLIENT_URLS="http://10.10.102.62:2379,http://10.10.102.62:4001"

针对以上配置参数做些解释:

  • ETCD_NAME :ETCD的节点名,在集群中应该保持唯一,可以使用 hostname。

  • ETCD_DATA_DIR:ETCD的数据存储目录,服务运行数据保存的路径,默认为 ${name}.etcd。

  • ETCD_SNAPSHOT_COUNTER:多少次的事务提交将触发一次快照,指定有多少事务(transaction)被提交时,触发截取快照保存到磁盘。

  • ETCD_HEARTBEAT_INTERVAL:ETCD节点之间心跳传输的间隔,单位毫秒,leader 多久发送一次心跳到 followers。默认值是 100ms。

  • ETCD_ELECTION_TIMEOUT:该节点参与选举的最大超时时间,单位毫秒,重新投票的超时时间,如果 follow 在该时间间隔没有收到心跳包,会触发重新投票,默认为 1000 ms。

  • ETCD_LISTEN_PEER_URLS:该节点与其他节点通信时所监听的地址列表,多个地址使用逗号隔开,其格式可以划分为scheme://IP:PORT,这里的scheme可以是http、https。和同伴通信的地址,比如 http://ip:2380 ,如果有多个,使用逗号分隔。需要所有节点都能够访问,所以不要使用 localhost。

  • ETCD_LISTEN_CLIENT_URLS:该节点与客户端通信时监听的地址列表,对外提供服务的地址:比如 http://ip:2379 ,http://127.0.0.1:2379 ,客户端会连接到这里和 etcd 交互

  • ETCD_INITIAL_ADVERTISE_PEER_URLS:该成员节点在整个集群中的通信地址列表,这个地址用来传输集群数据的地址。因此这个地址必须是可以连接集群中所有的成员的。该节点同伴监听地址,这个值会告诉集群中其他节点。

  • ETCD_INITIAL_CLUSTER:配置集群内部所有成员地址,其格式为:ETCD_NAME=ETCD_INITIAL_ADVERTISE_PEER_URLS,如果有多个使用逗号隔开,集群中所有节点的信息,格式为 node1=http://ip1:2380 ,node2=http://ip2:2380 ,…。注意:这里的 node1 是节点的 --name 指定的名字;后面的 ip1:2380 是 --initial-advertise-peer-urls 指定的值

  • ETCD_ADVERTISE_CLIENT_URLS:广播给集群中其他成员自己的客户端地址列表

  • ETCD_INITIAL_CLUSTER_STATE:新建集群的时候,这个值为new;假如已经存在的集群,这个值为 existing。

  • ETCD_INITIAL_CLUSTER_TOKEN:初始化集群token,创建集群的token,这个值每个集群保持唯一。这样的话,如果你要重新创建集群,即使配置和之前一样,也会再次生成新的集群和节点 uuid;否则会导致多个集群之间的冲突,造成未知的错误。

注意:所有ETCD_MY_FLAG的配置参数也可以通过命令行参数进行设置,但是命令行指定的参数优先级更高,同时存在时会覆盖环境变量对应的值。

测试etcd集群

按上面配置好各集群节点后,分别在各节点启动etcd。

[root@etcd2 ~]# $ systemctl start etcd

查看所有集群节点信息。

[root@etcd1 ~]# etcdctl member list
Error:  client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused
; error #1: dial tcp 127.0.0.1:2379: getsockopt: connection refused

error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused
error #1: dial tcp 127.0.0.1:2379: getsockopt: connection refused

如果出现以上错误信息,可以通过该方法解决:
在etcd配置文件中的ETCD_LISTEN_CLIENT_URLS项,加入http://127.0.0.1:2379 ,http://127.0.0.1:4001 。如:

ETCD_LISTEN_CLIENT_URLS="http://10.10.102.61:2379,http://10.10.102.61:4001,http://127.0.0.1:2379,http://127.0.0.1:4001" 

再次查询:

[root@etcd2 ~]# etcdctl member list
ce2a822cea30bfca: name=etcd2 peerURLs=http://localhost:2380,http://localhost:7001 clientURLs=http://10.10.102.61:2379,http://10.10.102.61:4001 isLeader=true

如果查询出现:

图片.png

由提示可知:是集群节点的版本太低导致的,
在etcd0上:

[root@10 ~]# etcd --version
etcd Version: 3.1.9
Git SHA: 0f4a535
Go Version: go1.7.4
Go OS/Arch: linux/amd64

在etcd1和etcd2上:

[root@10 ~]# etcd --version
etcd Version: 2.3.7
Git SHA: fd17c91
Go Version: go1.6.3
Go OS/Arch: linux/amd64

解决方法是卸载了某个集群节点的etcd,然后安装同样版本号的etcd即可,在这里我将低版本的卸载掉,重新安装高版本的。

卸载方法:

[root@10 ~]# yum remove etcd

重新安装好后,再重新像上面那样配置 etcd.conf,后启动etcd,查看集群状态:

[root@10 tmp]# etcdctl member list
81816861758ee8a9: name=etcd2 peerURLs=http://10.10.102.62:2380 clientURLs=http://10.10.102.62:2379,http://10.10.102.62:4001 isLeader=false
9551f10c6eb4d835: name=etcd0 peerURLs=http://10.10.102.60:2380 clientURLs=http://10.10.102.60:2379,http://10.10.102.60:4001 isLeader=false
e2f8b90ab44a9152: name=etcd1 peerURLs=http://10.10.102.61:2380 clientURLs=http://10.10.102.61:2379,http://10.10.102.61:4001 isLeader=true

证明集群部署成功。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • from http://www.infoq.com/cn/articles/etcd-interpretation...
    小树苗苗阅读 13,939评论 3 38
  • Kubernetes作为容器应用的管理中心,通过对Pod的数量进行监控,并且根据主机或容器失效的状态将新的Pod调...
    辉耀辉耀阅读 4,593评论 0 13
  • docker实现了更便捷的单机容器虚拟化的管理, docker的位置处于操作系统层与应用层之间; 相对传统虚拟化(...
    Harvey_L阅读 19,888评论 3 44
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 我躺在床上已经第四天了 所谓天灾人祸 总有些事情和时间是你预想不到的 计划之外的 原本打算什么时候看完法理要往后拖...
    考研狗的成长日记阅读 68评论 0 0