【二进制部署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
相关推荐
march of Time11 分钟前
docker容器技术、k8s的原理和常见命令、用k8s部署应用步骤
docker·容器·kubernetes
板栗妖怪43 分钟前
docker安装以及简单使用
docker·容器
乐之者v1 小时前
k8s 常用的命令
云原生·容器·kubernetes
蝎子莱莱爱打怪2 小时前
docker 重要且常用命令大全
java·spring cloud·docker·容器·eureka
小杰6663 小时前
安装docker版rabbitmq 3.12
docker·容器·rabbitmq
明明跟你说过6 小时前
【云原生】服务网格(Istio)如何简化微服务通信
运维·微服务·云原生·容器·kubernetes·k8s·istio
bestcxx7 小时前
(九)Docker 的网络通信
docker·容器
孤城2867 小时前
10 docker 安装 mysql详解
mysql·docker·微服务·容器
lendq7 小时前
k8s-第一节-minikube
云原生·容器·kubernetes
洛阳泰山9 小时前
Docker 镜像国内加速下载教程
docker·容器