etcd是一个分布式键值存储系统,用于在分布式系统中存储共享配置和服务发现信息。它是Kubernetes的核心组件之一,因此对于搭建Kubernetes集群而言,etcd的安装是非常重要的一步。
一、安装前的准备
在开始etcd的安装之前,需要做以下准备工作:
- 确定etcd集群的大小和节点数量:etcd集群的大小指的是集群中etcd节点的数量,一般建议至少部署3个节点。如果集群规模较大,可以考虑增加节点数量,以提高可用性和性能。
- 确定etcd节点的IP地址和主机名:每个etcd节点都需要有一个唯一的IP地址和主机名。这些信息将用于配置etcd集群。
- 确定etcd集群的通信端口:etcd集群使用的默认端口是2379和2380,如果需要使用其他端口,需要在配置文件中进行配置。
- 安装etcd二进制文件:etcd可以从官方网站(https://github.com/etcd-io/etcd/releases)下载预编译的二进制文件,也可以通过源代码进行编译。本文将使用预编译的二进制文件进行安装。
二、安装etcd集群
下载etcd二进制文件
从官方网站(https://github.com/etcd-io/etcd/releases)下载适合自己操作系统的etcd二进制文件。本文以Linux为例,下载文件名为etcd-v3.5.0-linux-amd64.tar.gz的压缩包。
解压缩etcd二进制文件
将下载的压缩包解压缩到指定的目录,例如:
代码语言:javascript复制tar xzvf etcd-v3.5.0-linux-amd64.tar.gz -C /usr/local/bin --strip-components=1
这将把etcd和etcdctl二进制文件解压缩到/usr/local/bin目录,并将所有文件的权限设置为755。
创建etcd配置文件
创建etcd配置文件,以etcd-01为例::
代码语言:javascript复制# cat > /etc/etcd/etcd.conf <<EOF
#[Member]
ETCD_NAME="etcd-01"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://172.16.0.10:2380"
ETCD_LISTEN_CLIENT_URLS="https://172.16.0.10:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://172.16.0.10:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://172.16.0.10:2379"
ETCD_INITIAL_CLUSTER="etcd-01=https://172.16.0.10:2380,etcd-02=https://172.16.0.11:2380,etcd-03=https://172.16.0.12:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF
这里定义了一个名为etcd-01的etcd节点,数据目录为/var/lib/etcd/default.etcd,通信端口分别为2379和2380。在Clustering部分中,定义了etcd集群中所有节点的IP地址和通信端口,并指定了集群的初始化参数,如集群名称、集群令牌、集群状态等。需要根据实际情况进行修改。
启动etcd服务
使用systemd启动etcd服务,以etcd-01为例:
代码语言:javascript复制# cat > /etc/systemd/system/etcd.service <<EOF
[Unit]
Description=etcd
Documentation=https://github.com/coreos/etcd
After=network.target
[Service]
User=etcd
Type=notify
ExecStart=/usr/local/bin/etcd --config-file /etc/etcd/etcd.conf
Restart=always
RestartSec=10s
LimitNOFILE=40000
[Install]
WantedBy=multi-user.target
EOF
# systemctl daemon-reload
# systemctl start etcd
# systemctl enable etcd
这里定义了一个名为etcd.service的systemd服务单元,指定了etcd服务的启动命令和配置文件,以及服务的重启和资源限制等参数。需要根据实际情况进行修改。
检查etcd服务状态
检查etcd服务是否正常运行:
代码语言:javascript复制# systemctl status etcd
如果etcd服务正常运行,应该输出类似以下的信息::
代码语言:javascript复制● etcd.service - etcd
Loaded: loaded (/etc/systemd/system/etcd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-04-28 09:00:00 CST; 1 day 2h ago
Main PID: 1234 (etcd)
Tasks: 7
Memory: 8.6M
CGroup: /system.slice/etcd.service
└─1234 /usr/local/bin/etcd --config-file /etc/etcd/etcd.conf
Apr 28 09:00:00 etcd-01 systemd[1]: Started etcd.
Apr 28 09:00:01 etcd-01 etcd[1234]: etcd Version: 3.5.0-alpha.5
Apr 28 09:00:01 etcd-01 etcd[1234]: Git SHA: 47fa455
Apr 28 09:00:01 etcd-01 etcd[1234]: Go Version: go1.17.2
Apr 28 09:00:01 etcd-01 etcd[1234]: Go OS/Arch: linux/amd64
Apr 28 09:00:01 etcd-01 etcd[1234]: listener: setting advertise client URLs to https://172.16.0.10:2379
Apr 28 09:00:01 etcd-01 etcd[1234]: listener: setting advertise peer URLs to https://172.16.0.10:2380
Apr 28 09:00:01 etcd-01 etcd[1234]: embed: serving peer URLs https://172.16.0.10:2380
Apr 28 09:00:01 etcd-01 etcd[1234]: embed: serving client URLs https://172.16.0.10:2379
其中,Active行显示服务状态为active (running),表示服务正在运行;Main PID行显示etcd进程的PID;CGroup行显示etcd服务所属的CGroup;日志中还会输出etcd的版本信息、运行时参数和监听地址等信息。