Kubernetes | 二进制软件包方式部署 -- 部署 etcd 组件

04 部署 etcd 组件

etcd 是一个高度一致的分布式键值存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。它可以优雅地处理网络分区期间的领导者选举,即使在领导者节点中也可以容忍机器故障。

更多内容请移步 etcd 官网详阅。

4.1 获取二进制软件包

在本地主机上操作。

从 GitHub 下载二进制软件包,这里整理了一个 v3.5.2 版本的软件包,里面只包含了 3 个文件:etcd、etcdctl、etcdutl。

官方GitHub:etcd

这里将软件包存放在 /data/k8s-deploy/software,后面其他组件的软件包也存放在此目录。

解压之后将这些文件分发到 3 台服务器上。

cd /data/k8s-deploy/software
wget https://github.com/pjgmow/etcd/releases/download/v3.5.2/etcd-v3.5.2-linux-amd64.tar.gz
tar xf etcd-v3.5.2-linux-amd64.tar.gz && cd etcd-v3.5.2-linux-amd64

#K8S_HOST=(k8s-master-01 k8s-master-02 k8s-master-03)
#for h in ${K8S_HOST[@]};do scp etcd* root@$h:/usr/local/bin/;done
scp etcd* root@k8s-master-01:/usr/local/bin/
scp etcd* root@k8s-master-02:/usr/local/bin/
scp etcd* root@k8s-master-03:/usr/local/bin/
4.2 生成服务配置文件

在本地主机上操作。

k8s-deploy 提供了 etcd 的配置文件模板,文件中有几个内容需要修改:

__ETCD_NAME__:节点名称,每台服务器要使用不同的名称
__ETCD_DATA_DIR__:etcd 数据存储的目录
__INITIAL_ADVERTISE_PEER_URLS__:告知集群其他节点的 URL
__ADVERTISE_CLIENT_URLS__:告知客户端的 URL, 也就是对外提供服务的 URL
__INITIAL_CLUSTER__:集群中所有节点
__INITIAL_CLUSTER_STATE__:集群状态,new 为新创建集群,existing 为已存在的集群
__INITIAL_CLUSTER_TOKEN__:集群 ID

通过 etcd.yaml 模板来生成 k8s-master-01 的配置文件。

ETCD_NAME=k8s-etcd-01
ETCD_DATA_DIR=/var/lib/etcd/default.etcd
INITIAL_ADVERTISE_PEER_URLS=https://192.168.3.201:2380
ADVERTISE_CLIENT_URLS=https://192.168.3.201:2379
INITIAL_CLUSTER=k8s-etcd-01=https://192.168.3.201:2380,k8s-etcd-02=https://192.168.3.202:2380,k8s-etcd-03=https://192.168.3.203:2380
INITIAL_CLUSTER_STATE=new
INITIAL_CLUSTER_TOKEN=k8s-etcd-cluster

cd /data/k8s-deploy/config
cp etcd.yaml etcd.yaml.k8s-master-01
sed -i "s#__ETCD_NAME__#${ETCD_NAME}#" ./etcd.yaml.k8s-master-01
sed -i "s#__ETCD_DATA_DIR__#${ETCD_DATA_DIR}#" ./etcd.yaml.k8s-master-01
sed -i "s#__INITIAL_ADVERTISE_PEER_URLS__#${INITIAL_ADVERTISE_PEER_URLS}#" ./etcd.yaml.k8s-master-01
sed -i "s#__ADVERTISE_CLIENT_URLS__#${ADVERTISE_CLIENT_URLS}#" ./etcd.yaml.k8s-master-01
sed -i "s#__INITIAL_CLUSTER__#${INITIAL_CLUSTER}#" ./etcd.yaml.k8s-master-01
sed -i "s#__INITIAL_CLUSTER_STATE__#${INITIAL_CLUSTER_STATE}#" ./etcd.yaml.k8s-master-01
sed -i "s#__INITIAL_CLUSTER_TOKEN__#${INITIAL_CLUSTER_TOKEN}#" ./etcd.yaml.k8s-master-01

生成 k8s-master-02 的配置文件。

# 有些变量是重复的,这里修改其中几个即可
ETCD_NAME=k8s-etcd-02
INITIAL_ADVERTISE_PEER_URLS=https://192.168.3.202:2380
ADVERTISE_CLIENT_URLS=https://192.168.3.202:2379

cd /data/k8s-deploy/config
cp etcd.yaml etcd.yaml.k8s-master-02
sed -i "s#__ETCD_NAME__#${ETCD_NAME}#" ./etcd.yaml.k8s-master-02
sed -i "s#__ETCD_DATA_DIR__#${ETCD_DATA_DIR}#" ./etcd.yaml.k8s-master-02
sed -i "s#__INITIAL_ADVERTISE_PEER_URLS__#${INITIAL_ADVERTISE_PEER_URLS}#" ./etcd.yaml.k8s-master-02
sed -i "s#__ADVERTISE_CLIENT_URLS__#${ADVERTISE_CLIENT_URLS}#" ./etcd.yaml.k8s-master-02
sed -i "s#__INITIAL_CLUSTER__#${INITIAL_CLUSTER}#" ./etcd.yaml.k8s-master-02
sed -i "s#__INITIAL_CLUSTER_STATE__#${INITIAL_CLUSTER_STATE}#" ./etcd.yaml.k8s-master-02
sed -i "s#__INITIAL_CLUSTER_TOKEN__#${INITIAL_CLUSTER_TOKEN}#" ./etcd.yaml.k8s-master-02

生成 k8s-master-03 的配置文件。

ETCD_NAME=k8s-etcd-03
INITIAL_ADVERTISE_PEER_URLS=https://192.168.3.203:2380
ADVERTISE_CLIENT_URLS=https://192.168.3.203:2379

cd /data/k8s-deploy/config
cp etcd.yaml etcd.yaml.k8s-master-03
sed -i "s#__ETCD_NAME__#${ETCD_NAME}#" ./etcd.yaml.k8s-master-03
sed -i "s#__ETCD_DATA_DIR__#${ETCD_DATA_DIR}#" ./etcd.yaml.k8s-master-03
sed -i "s#__INITIAL_ADVERTISE_PEER_URLS__#${INITIAL_ADVERTISE_PEER_URLS}#" ./etcd.yaml.k8s-master-03
sed -i "s#__ADVERTISE_CLIENT_URLS__#${ADVERTISE_CLIENT_URLS}#" ./etcd.yaml.k8s-master-03
sed -i "s#__INITIAL_CLUSTER__#${INITIAL_CLUSTER}#" ./etcd.yaml.k8s-master-03
sed -i "s#__INITIAL_CLUSTER_STATE__#${INITIAL_CLUSTER_STATE}#" ./etcd.yaml.k8s-master-03
sed -i "s#__INITIAL_CLUSTER_TOKEN__#${INITIAL_CLUSTER_TOKEN}#" ./etcd.yaml.k8s-master-03

配置文件生成之后,将这些文件分发到 3 台服务器上。

不同服务器用的配置文件不同,不要搞错配置文件了。

#K8S_HOST=(k8s-master-01 k8s-master-02 k8s-master-03)
#for h in ${K8S_HOST[@]};do scp etcd.yaml.$h root@$h:/etc/kubernetes/conf/etcd.yaml;done
scp etcd.yaml.k8s-master-01 root@k8s-master-01:/etc/kubernetes/conf/etcd.yaml
scp etcd.yaml.k8s-master-02 root@k8s-master-02:/etc/kubernetes/conf/etcd.yaml
scp etcd.yaml.k8s-master-03 root@k8s-master-03:/etc/kubernetes/conf/etcd.yaml
4.3 生成服务启动管理文件

在本地主机上操作。

k8s-deploy 已提供了服务启动管理文件,不需要修改内容,直接分发到 3 台服务器即可。

cd /data/k8s-deploy/service

#K8S_HOST=(k8s-master-01 k8s-master-02 k8s-master-03)
#for h in ${K8S_HOST[@]};do scp etcd.service root@$h:/etc/systemd/system/;done
scp etcd.service root@k8s-master-01:/etc/systemd/system/
scp etcd.service root@k8s-master-02:/etc/systemd/system/
scp etcd.service root@k8s-master-03:/etc/systemd/system/
4.4 启动 etcd 服务

在本地主机上操作。
建议打开 3 个窗口,然后依次启动 etcd 服务,也可以多窗口同时启动。

服务配置文件和服务启动管理文件都分发之后,分别登录到 3 台服务器上启动 etcd 服务。

systemctl daemon-reload
systemctl enable etcd
systemctl start etcd
systemctl status etcd
4.5 检测 etcd 集群状态

在本地主机上操作。

3 台服务器的 etcd 服务状态都是正常情况下,通过 etcdctl 命令来检测一下集群是否能够正常对外提供服务。

cd /data/k8s-deploy/software/etcd-v3.5.2-linux-amd64
ETCDCTL_API=3 ./etcdctl -w table --endpoints=https://192.168.3.201:2379 \
--cacert=/data/k8s-deploy/tls-csr/ca.pem \
--cert=/data/k8s-deploy/tls-csr/etcd.pem \
--key=/data/k8s-deploy/tls-csr/etcd-key.pem \
member list

执行命令后正常的返回结果如下。

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

推荐阅读更多精彩内容