【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
相关推荐
阿郎_20112 小时前
window10的wsl安装配置ubuntu22.04和docker
运维·windows·ubuntu·docker·容器
小汐睡着了2 小时前
Docker镜像源-error
运维·docker·容器
野猪佩挤2 小时前
k8s+Flink断点续传(MySQL同步Starrocks)
sqlserver·flink·kubernetes
VermiliEiz2 小时前
二进制文件方式部署k8s(3)
云原生·容器·kubernetes·containerd
❀͜͡傀儡师2 小时前
docker部署 DBSyncer数据同步中间件
docker·中间件·容器
企鹅侠客13 小时前
使用k8s集群调度GPU
云原生·容器·kubernetes
❀͜͡傀儡师14 小时前
docker一键部署网页版Win11系统
运维·docker·容器
zcz160712782115 小时前
k8s重新部署的配置过程
云原生·容器·kubernetes
IsPrisoner16 小时前
从 Docker 到 Kubernetes:一次“工程视角”的 K8s 核心概念深度梳理
docker·容器·kubernetes