【二进制部署k8s-1.29.4】三、etcd集群的安装配置

文章目录

简介

本章节主要讲解安装etcd的过程,并通过脚本etcd.sh来查看etcd的集群状态以及etcd的数据库中存放数据的情况,也可以通过etcd.sh脚本来进行etcd的备份和还原。
第一章.安装前软件准备及系统初始化阶段
第二章.证书及配置文件的准备

一.确认证书文件

1.在第二章"二.【二进制安装k8s-1.29.4】证书及配置文件的准备",我们准备了所有相关的证书级配置文件,其中ca.pem和ca-key.pem生成在ca目录下,etcd.pem和etcd-key.pem生成在install_etcd目录下。

2.再次确认如下四个证书是否存在:ca.pem,etcd-key.pem,etcd.pem,ca-key.pem。

3.该四个证书是通过ca-config.json,ca-csr.json先生成CA证书ca.pem和ca-key.pem,然后在通过etcd-csr.json 生成etcd.pem 和etcd-key.pem。

4.将ca.pem,etcd-key.pem,etcd.pem,ca-key.pem 拷贝到/opt/etcd/ssl目录下

二.准备配置文件

安装etcd的三台机器的配置都不一样,在第二章"二.【二进制安装k8s-1.29.4】证书及配置文件的准备"中有准备好三台机所需的etcd.conf,将etcd.conf拷贝到/opt/etcd/conf。

三.安装etcd

先下载好etcd-v3.5.4-linux-amd64.tar.gz,下载地址参见第一章:"一.【二进制安装k8s-1.29.4】安装前软件准备及系统初始化阶段"

shell 复制代码
mkdir -p /opt/etcd/{conf,bin,ssl,logs} #创建目录
tar zxvf etcd-v3.5.4-linux-amd64.tar.gz
cp etcd-v3.5.4-linux-amd64/etcd* /opt/etcd/bin/ #将etcd的三个可执行文件拷贝过去
rm -rf etcd-v3.5.4-linux-amd64

四.启动脚本

在第二章"二.【二进制安装k8s-1.29.4】证书及配置文件的准备"中我们有准备好etcd.service的启动脚本,将etcd.service 拷贝存到/usr/lib/systemd/system/,然后执行
systemctl daemon-reload
systemctl enable etcd
systemctl start etcd

五、验证安装

通过查看集群状态来确认服务是否安装正常。将如下脚本保存为xetcd.sh,然后执行:./xetcd.sh all,该脚本可以单独查集群健康状态、查看etcd的状态,列出etcd集群列表,备份etcd数据库,还原etcd数据库。

shell 复制代码
#!/bin/bash

etcdIp="https://10.16.120.81:2379,https://10.16.120.82:2379,https://10.16.120.83: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://10.16.120.81: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
相关推荐
Plastic garden2 小时前
Docker(1)
运维·docker·容器
gs801403 小时前
网络隐形杀手:从 Could not connect to SMTP host 报错深度剖析 Docker MTU 黑洞理论与实战
网络·docker·容器
程序猿阿伟4 小时前
《一套完整方法论:搞定图形应用的Docker镜像优化》
数据库·docker·容器
java_logo5 小时前
2026 Docker 国内镜像加速配置教程
运维·docker·容器·docker镜像·docker镜像源·docker镜像加速·docker镜像国内库
IT策士5 小时前
Docker从0到1再到 Kubernetes 实战:第15篇Compose 中的服务依赖、健康检查与启动顺序
docker·容器·kubernetes
Waay6 小时前
K8s Deployment 滚动更新与回滚深度详解(含踩坑实录+生产选型原理)
云原生·容器·kubernetes
顾默@6 小时前
双系统Ubuntu18.04升级22.04,安装docker进行openclaw安装
运维·docker·容器
蜀道山老天师7 小时前
Docker Compose 多容器编排实战:LNMP、Tomcat 集群、云桌面、Portainer、Zabbix 一键部署
运维·docker·容器·tomcat·zabbix
见牛羊8 小时前
docker理解
java·docker·容器
IT策士11 小时前
Docker 从 0 到 1 再到 Kubernetes 实战:第18篇 从 Docker Compose 到 Kubernetes 的思考
docker·容器·kubernetes