简介
本章节主要讲解etcd-v3.6.6集群的安装过程,并通过脚本etcd.sh来查看etcd的集群状态以及etcd的数据库中存放数据的情况,也可以通过etcd.sh脚本来进行etcd的备份和还原。上一章中我们准备了etcd安装所需要的证书、配置、启动脚步、检测脚本。
== 文章导航===
【k8s-1.34.2安装部署】一.系统初始化及k8s集群规划
【k8s-1.34.2安装部署】二.kubernets软件、证书、配置、脚本等文件准备
【k8s-1.34.2安装部署】三.etcd-v3.6.6 TLS版集群安装
【k8s-1.34.2安装部署】四.kubernets master组件kube-apiserver,kube-controller-manager,kube-scheduler安装
【k8s-1.34.2安装部署】五.worker端containerd2.2.1、kubelet-1.34.2安装
【k8s-1.34.2安装部署】六.企业级部署cilium-1.18.4网络插件
【k8s-1.34.2安装部署】七.coredns-v1.13.1安装
【k8s-1.34.2安装部署】八.metric-server-0.8.0安装
【k8s-1.34.2安装部署】九.k8s管理平台xkube安装部署
【k8s-1.34.2安装部署】十.gateway Api v1.4.0安装
【k8s-1.34.2安装部署】十一.metallb-v0.15.2安装
一.安装etcd
1.1. 安装包安装
在第二章时我们准备了etcd的安装包,接下来我们只需要将安装包中的内容拷贝到对应的目录并启动即可,将etcd目录及文件拷贝到/opt/下,并将etcd.service拷贝到/usr/lib/systemd/system/,同时在规划的etcd01,etcd02,etcd03的机器上,分别将配置文件重命名为etcd.conf,并删除另外两个文件。例如:etcd01.my-k8s.local 对应etcd01.conf
etcd目录结构如下:
├── bin
│ ├── etcd
│ ├── etcdctl
│ └── etcdutl
├── conf
│ ├── etcd01.conf
│ ├── etcd02.conf
│ └── etcd03.conf
├── etcd.service
├── logs
└── ssl
├── ca-key.pem
├── ca.pem
├── etcd-key.pem
└── etcd.pem
1.2.配置etcd的主机名映射
修改/etc/hosts,添加如下配置,此处的IP为需要安装etcd集群的三个IP,主机名需要与etcd.conf中的一致。三台机都需要配置如下映射
192.168.10.185 etcd01.my-k8s.local
192.168.10.186 etcd02.my-k8s.local
192.168.10.187 etcd03.my-k8s.local
二.启动etcd
在三台机上分别执行如下命令
systemctl daemon-reloadsystemctl enable etcdsystemctl start etcd
三、验证安装
1.通过命令systemctl status etcd看看启动是否正常,安装是否报错
2.通过查看集群状态来确认服务是否安装正常。将如下脚本保存为xetcd.sh,然后执行:./xetcd.sh all,该脚本可以单独查集群健康状态、查看etcd的状态,列出etcd集群列表,备份etcd数据库,还原etcd数据库。
./xetcd.sh all命令执行的结果如下:
+----------------------------------+--------+-------------+-------+
| ENDPOINT | HEALTH | TOOK | ERROR |
+----------------------------------+--------+-------------+-------+
| https://etcd03.my-k8s.local:2379 | true | 15.988935ms | |
| https://etcd02.my-k8s.local:2379 | true | 15.948957ms | |
| https://etcd01.my-k8s.local:2379 | true | 15.803808ms | |
+----------------------------------+--------+-------------+-------+
+------------------+---------+--------+----------------------------------+----------------------------------+------------+
| ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER |
+------------------+---------+--------+----------------------------------+----------------------------------+------------+
| 206f11271cff2cca | started | etcd01 | https://etcd01.my-k8s.local:2380 | https://etcd01.my-k8s.local:2379 | false |
| 2636113ae997b450 | started | etcd03 | https://etcd03.my-k8s.local:2380 | https://etcd03.my-k8s.local:2379 | false |
| a9a64ba8a4b9168a | started | etcd02 | https://etcd02.my-k8s.local:2380 | https://etcd02.my-k8s.local:2379 | false |
+------------------+---------+--------+----------------------------------+----------------------------------+------------+
+----------------------------------+------------------+---------+-----------------+---------+--------+-----------------------+--------+-----------+------------+-----------+------------+--------------------+--------+--------------------------+-------------------+
| ENDPOINT | ID | VERSION | STORAGE VERSION | DB SIZE | IN USE | PERCENTAGE NOT IN USE | QUOTA | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS | DOWNGRADE TARGET VERSION | DOWNGRADE ENABLED |
+----------------------------------+------------------+---------+-----------------+---------+--------+-----------------------+--------+-----------+------------+-----------+------------+--------------------+--------+--------------------------+-------------------+
| https://etcd01.my-k8s.local:2379 | 206f11271cff2cca | 3.6.6 | 3.6.0 | 125 MB | 59 MB | 53% | 2.1 GB | true | false | 2 | 1313129 | 1313129 | | | false |
| https://etcd02.my-k8s.local:2379 | a9a64ba8a4b9168a | 3.6.6 | 3.6.0 | 125 MB | 59 MB | 54% | 2.1 GB | false | false | 2 | 1313129 | 1313129 | | | false |
| https://etcd03.my-k8s.local:2379 | 2636113ae997b450 | 3.6.6 | 3.6.0 | 125 MB | 59 MB | 54% | 2.1 GB | false | false | 2 | 1313129 | 1313129 | | | false |
+----------------------------------+------------------+---------+-----------------+---------+--------+-----------------------+--------+-----------+------------+-----------+------------+--------------------+--------+--------------------------+-------------------+
xetcd.sh的脚本内容如下:
#!/bin/bash
etcdIp="https://etcd01.my-k8s.local:2379,https://etcd02.my-k8s.local:2379,https://etcd03.my-k8s.local:2379"
bakDir="/data/BAK"
health() {
/opt/etcd/bin/etcdctl \
--cacert=/opt/etcd/ssl/ca.pem \
--cert=/opt/etcd/ssl/etcd.pem \
--key=/opt/etcd/ssl/etcd-key.pem \
--endpoints="${etcdIp}" endpoint health --write-out=table
}
status() {
/opt/etcd/bin/etcdctl \
--cacert=/opt/etcd/ssl/ca.pem \
--cert=/opt/etcd/ssl/etcd.pem \
--key=/opt/etcd/ssl/etcd-key.pem \
--endpoints="${etcdIp}" endpoint status --write-out=table
}
list() {
/opt/etcd/bin/etcdctl \
--cacert=/opt/etcd/ssl/ca.pem \
--cert=/opt/etcd/ssl/etcd.pem \
--key=/opt/etcd/ssl/etcd-key.pem \
--endpoints="${etcdIp}" member list -w table
}
bak() {
/opt/etcd/bin/etcdctl \
--cacert=/opt/etcd/ssl/ca.pem \
--cert=/opt/etcd/ssl/etcd.pem \
--key=/opt/etcd/ssl/etcd-key.pem \
--endpoints="https://etcd01.my-k8s.local:2379" snapshot save ${bakDir}/`date +%Y%m%d%H%M%S`.db
}
restore() {
bakfile=$1
xIp=$2
if [ ! -f $bakfile ];then
echo "no file:$bakfile"
return
fi
/opt/etcd/bin/etcdctl \
--cacert=/opt/etcd/ssl/ca.pem \
--cert=/opt/etcd/ssl/etcd.pem \
--key=/opt/etcd/ssl/etcd-key.pem \
--endpoints="${xIp}" --data-dir=/opt/etcd/default.etcd snapshot restore $bakfile
}
case $1 in
health)
health;;
status)
status;;
list)
list;;
all)
health
list
status;;
bak)
bak;;
restore)
restore "$2" "$3";;
*)
echo "$0 status|bak|restore \$2 \$3 #\$2 is bakfiepath,\$3 is etcd ip";;
esac