部署etcd节点
大约 3 分钟
部署 ETCD 节点
1. 简介
kubernetes需要存储很多东西,像它本身的节点信息,组件信息,还有通过kubernetes运行的pod,deployment,service等等。都需要持久化。etcd
就是它的数据中心。生产环境中为了保证数据中心的高可用和数据的一致性,一般会部署最少三个节点。我们这里以学习为主就只在主节点部署一个实例。
2. 从Github下载二进制文件
下载地址:https://github.com/etcd-io/etcd/releases
我这里下载的版本是 v3.4.10
3. 部署 ETCD
1. 创建工作目录并解压二进制包
mkdir /etc/kubernetes/etcd/{bin,cfg} -p
# 解压缩
tar zxvf etcd-v3.4.10-linux-amd64.tar.gz
# 移动 etcd 二进制文件
mv etcd-v3.4.10-linux-amd64/{etcd,etcdctl} /etc/kubernetes/etcd/bin/
2. 创建etcd配置文件
cat > /etc/kubernetes/etcd/cfg/etcd.conf << EOF
#[Member]
ETCD_NAME="etcd-1"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.10.102:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.10.102:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.10.102:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.10.102:2379"
ETCD_INITIAL_CLUSTER="etcd-1=https://192.168.10.102:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF
字段描述:
- ETCD_NAME:节点名称,集群中唯一
- ETCD_DATA_DIR:存放数据的目录
- ETCD_LISTEN_PEER_URLS:集群通信监听地址
- ETCD_LISTEN_CLIENT_URLS:客户端访问监听地址
- ETCD_INITIAL_ADVERTISE_PEER_URLS:集群通告地址
- ETCD_ADVERTISE_CLIENT_URLS:客户端通告地址
- ETCD_INITIAL_CLUSTER:集群节点地址,多个 etcd 时,参考格式:
节点名称1:ETCD_LISTEN_PEER_URLS,节点名称2:ETCD_LISTEN_PEER_URLS
- ETCD_INITIAL_CLUSTER_TOKEN:集群Token
- ETCD_INITIAL_CLUSTER_STATE:加入集群的当前状态,new是新集群,existing表示加入已有集群
提示
etcd 监听 2379 端口,是为了接收组件如:api-server 的数据,2380 端口是为了接收其他 etcd 的数据
3. 通过systemd管理etcd
vim /lib/systemd/system/etcd.service
# etcd.service 内容如下
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=/etc/kubernetes/etcd/cfg/etcd.conf
ExecStart=/etc/kubernetes/etcd/bin/etcd \
--cert-file=/etc/kubernetes/ca/etcd/etcd.pem \
--key-file=/etc/kubernetes/ca/etcd/etcd-key.pem \
--peer-cert-file=/etc/kubernetes/ca/etcd/etcd.pem \
--peer-key-file=/etc/kubernetes/ca/etcd/etcd-key.pem \
--trusted-ca-file=/etc/kubernetes/ca/ca.pem \
--peer-trusted-ca-file=/etc/kubernetes/ca/ca.pem \
--logger=zap
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
提示
注意:请修改你的证书存放位置
4. 启动并设置开机启动
systemctl daemon-reload
systemctl start etcd
systemctl enable etcd
# 查看日志是否启动异常
journalctl -f -u etcd
5. 部署多个etcd
提示
如果你需要部署多个 etcd 那么将该节点生成的文件拷贝到其他节点,再修改一下配置就可以了
# 拷贝 etcd 二进制文件以及配置
scp -r /etc/kubernetes/etcd/ root@其他节点IP:/etc/kubernetes/
# 拷贝 service 文件
scp -r /lib/systemd/system/etcd.service root@其他节点IP:/lib/systemd/system/
# 拷贝 证书
scp -r /etc/kubernetes/ca/ root@其他节点IP:/etc/kubernetes/
然后在节点分别修改etcd.conf配置文件中的节点名称和当前服务器IP:
vim /etc/kubernetes/etcd/cfg/etcd.conf
#[Member]
ETCD_NAME="etcd-2" # 修改此处,节点2改为etcd-2
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.10.101:2380" # 修改此处为当前服务器IP
ETCD_LISTEN_CLIENT_URLS="https://192.168.10.101:2379" # 修改此处为当前服务器IP
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.10.101:2380" # 修改此处为当前服务器IP
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.10.101:2379" # 修改此处为当前服务器IP
ETCD_INITIAL_CLUSTER="etcd-2=https://192.168.10.101:2380,etcd-1=https://192.168.10.102:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
最后启动etcd并设置开机启动
6. 查看集群状态
ETCDCTL_API=3 /etc/kubernetes/etcd/bin/etcdctl --cacert=/etc/kubernetes/ca/ca.pem --cert=/etc/kubernetes/ca/etcd/etcd.pem --key=/etc/kubernetes/ca/etcd/etcd-key.pem --endpoints="https://192.168.10.102:2379" endpoint health
# 输出该结果代表 etcd 部署成功
> https://192.168.10.102:2379 is healthy: successfully committed proposal: took = 5.838821ms