【二进制部署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
相关推荐
A ?Charis9 分钟前
ExternalName Service 针对的是k8s集群外部有api服务的场景?
kubernetes
Dusk_橙子11 分钟前
在K8S中,pending状态一般由什么原因导致的?
云原生·容器·kubernetes
HEX9CF1 小时前
【Docker】快速部署 Nacos 注册中心
运维·docker·容器
喝醉酒的小白3 小时前
几种K8s运维管理平台对比说明
运维·容器·kubernetes
明 庭4 小时前
通过 Docker 部署 pSQL 服务器的教程
服务器·docker·容器
Linux运维老纪15 小时前
DNS缓存详解(DNS Cache Detailed Explanation)
计算机网络·缓存·云原生·容器·kubernetes·云计算·运维开发
JunLan~20 小时前
Docker 部署 GLPI(IT 资产管理软件系统)
运维·docker·容器
青草地溪水旁21 小时前
c++ list的front和pop_front的概念和使用案例
c++·容器·list
元气满满的热码式1 天前
K8S部署DevOps自动化运维平台
运维·kubernetes·devops
LUCIAZZZ1 天前
基于Docker以KRaft模式快速部署Kafka
java·运维·spring·docker·容器·kafka