返回

零基础 Kubernetes 二进制搭建——部署 etcd 集群

见解分享

摘要:

作为 Kubernetes(K8S)集群的数据库,etcd 扮演着至关重要的角色。为了确保集群的稳定运行,我们首先需要部署一个高可用的 etcd 集群。本文将详细介绍如何在三台虚拟机上部署 etcd 集群,为 K8S 组件提供可靠的服务基础。

前提条件

  • 三台具有相同操作系统的虚拟机
  • 对 Linux 系统基本命令的熟悉
  • 稳定的网络连接

部署 etcd 集群

步骤 1:创建 etcd 数据目录

在每台虚拟机上创建 etcd 数据目录:

mkdir /etc/etcd
mkdir /var/lib/etcd

步骤 2:下载 etcd 二进制文件

下载最新版本的 etcd 二进制文件:

wget https://github.com/etcd-io/etcd/releases/download/v3.5.4/etcd-v3.5.4-linux-amd64.tar.gz

步骤 3:解压二进制文件

解压下载的二进制文件:

tar -xvf etcd-v3.5.4-linux-amd64.tar.gz

步骤 4:创建 systemd 单元文件

在每台虚拟机上创建 systemd 单元文件:

sudo vim /etc/systemd/system/etcd.service

并添加以下内容:

[Unit]
Description=etcd - a distributed reliable key-value store
Documentation=https://github.com/etcd-io/etcd
After=network.target

[Service]
Type=notify
User=root
WorkingDirectory=/etc/etcd
ExecStart=/usr/local/bin/etcd \
    --name etcd-${HOSTNAME} \
    --data-dir /var/lib/etcd \
    --advertise-client-urls https://${HOSTNAME}:2379 \
    --listen-client-urls https://0.0.0.0:2379,https://0.0.0.0:4001 \
    --listen-peer-urls https://${HOSTNAME}:2380 \
    --initial-advertise-peer-urls https://${HOSTNAME}:2380 \
    --initial-cluster-token etcd-cluster \
    --initial-cluster etcd-${HOSTNAME}=https://${HOSTNAME}:2380,etcd-1=https://k8s-1:2380,etcd-2=https://k8s-2:2380
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

步骤 5:配置证书和密钥

(可选) 生成自签名证书和密钥

如果您希望启用 HTTPS 连接,需要生成自签名证书和密钥:

openssl req -x509 -newkey rsa:4096 -keyout /etc/etcd/etcd.key -out /etc/etcd/etcd.crt -days 3650 -nodes

使用外部证书和密钥

如果您已经拥有证书和密钥,请将其复制到 /etc/etcd/ 目录中。

步骤 6:启动 etcd 服务

在每台虚拟机上启动 etcd 服务:

sudo systemctl start etcd
sudo systemctl enable etcd

步骤 7:验证 etcd 集群

使用以下命令验证 etcd 集群:

etcdctl --endpoints=https://k8s-1:2379,https://k8s-2:2379,https://k8s-3:2379 member list

输出应显示三个 etcd 成员,状态为 "started"。

结论

通过按照上述步骤,您已经成功部署了一个高可用的 etcd 集群。它将为您的 K8S 集群提供一个可靠且稳定的数据库基础。后续,您可以继续部署 K8S 组件,为您的应用程序提供一个高效且可扩展的容器编排平台。