【二进制部署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
相关推荐
皮锤打乌龟5 小时前
(干货)Jenkins使用kubernetes插件连接k8s的认证方式
运维·kubernetes·jenkins
南猿北者6 小时前
docker Network(网络)
网络·docker·容器
sam-1237 小时前
k8s上部署redis高可用集群
redis·docker·k8s
ggaofeng9 小时前
通过命令学习k8s
云原生·容器·kubernetes
death bell9 小时前
Docker基础概念
运维·docker·容器
想学习java初学者12 小时前
Docker Compose部署Kafka(非Zookeeper)
docker·容器·kafka
qq_道可道12 小时前
K8S升级到1.24后,切换运行时导致 dind 构建镜像慢根因定位与解决
云原生·容器·kubernetes
SONGW201812 小时前
k8s拓扑域 :topologyKey
kubernetes
weixin_4381973813 小时前
K8S实现反向代理,负载均衡
linux·运维·服务器·nginx·kubernetes
牛右刀薛面16 小时前
麒麟V10,arm64,离线安装docker和docker-compose
运维·docker·容器·麒麟·鲲鹏