【k8s-1.34.2安装部署】三.etcd-v3.6.6 TLS版集群安装

文章目录

简介

本章节主要讲解etcd-v3.6.6集群的安装过程,并通过脚本etcd.sh来查看etcd的集群状态以及etcd的数据库中存放数据的情况,也可以通过etcd.sh脚本来进行etcd的备份和还原。上一章中我们准备了etcd安装所需要的证书、配置、启动脚步、检测脚本。
文章目录
【k8s-1.34.2安装部署】一.系统初始化及k8s集群规划
【k8s-1.34.2安装部署】二.kubernets软件、证书、配置、脚本等文件准备

一.安装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-reload
systemctl enable etcd
systemctl 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的脚本内容如下:

shell 复制代码
#!/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
相关推荐
问简18 小时前
docker 镜像相关
运维·docker·容器
Benszen19 小时前
Docker容器化技术实战指南
运维·docker·容器
Hommy8820 小时前
【开源剪映小助手】Docker 部署
docker·容器·开源·github·aigc
斯普信云原生组21 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
喵了几个咪21 小时前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
工具罗某人1 天前
docker compose部署kafka集群搭建
docker·容器·kafka
❀͜͡傀儡师1 天前
k8s部署的Nexus 3 数据库损坏恢复指南:从删除损坏数据库到完整数据重建
数据库·kubernetes·nexus3
开心码农1号1 天前
k8s中service和ingress的区别和使用
云原生·容器·kubernetes
chushiyunen1 天前
k8s笔记
k8s
张3231 天前
K8s 不部署源代码、不构建应用
kubernetes