目录
GitHub地址:https://github.com/Idiomroot/cluster-etcd.git
节点信息:
etcd01 172.16.3.83
etcd02 172.16.3.90
etcd03 172.16.3.197
一、etcd01节点生成etcd的证书
[root@172-16-3-83 k8s]# mkdir /data/ssl/etcd
[root@172-16-3-83 k8s]# cd /data/ssl/etcd
[root@172-16-3-83 k8s]# vi etcd.sh
# etcd
# cat ca-config.json
cat > ca-config.json <<EOF
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"www": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
EOF
# cat ca-csr.json
cat > ca-csr.json <<EOF
{
"CN": "etcd CA",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Beijing",
"ST": "Beijing"
}
]
}
EOF
# cat server-csr.json
cat > server-csr.json <<EOF
{
"CN": "etcd",
"hosts": [
"172.16.3.83",
"172.16.3.90",
"172.16.3.197"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing"
}
]
}
EOF
[root@172-16-3-83 etcd]# sh etcd.sh
[root@172-16-3-83 etcd]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
[root@172-16-3-83 etcd]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server
二、三个etcd节点安装etcd
mkdir /data/src/ &&cd /data/src/
wget https://github.com/etcd-io/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz
mkdir /etc/etcd/
tar xf etcd-v3.3.10-linux-amd64.tar.gz
mv etcd-v3.3.10-linux-amd64/{etcd,etcdctl} /usr/bin/
vi /etc/etcd/etcd
# 3台机器 ETCD_NAME 名字不一样 本机IP不一样
#[Member]
ETCD_NAME="etcd01"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://172.16.3.83:2380"
ETCD_LISTEN_CLIENT_URLS="https://172.16.3.83:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://172.16.3.83:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://172.16.3.83:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://172.16.3.83:2380,etcd02=https://172.16.3.90:2380,etcd03=https://172.16.3.197:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
注意
* 蓝色标注的需要修改
* 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_INITIAL_CLUSTER_TOKEN 集群Token
* ETCD_INITIAL_CLUSTER_STATE 加入集群的当前状态,new是新集群,existing表示加入已有集群
vi /usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile= /etc/etcd/etcd
ExecStart=/usr/bin/etcd \
--name=${ETCD_NAME} \
--data-dir=${ETCD_DATA_DIR} \
--listen-peer-urls=${ETCD_LISTEN_PEER_URLS} \
--listen-client-urls=${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 \
--advertise-client-urls=${ETCD_ADVERTISE_CLIENT_URLS} \
--initial-advertise-peer-urls=${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
--initial-cluster=${ETCD_INITIAL_CLUSTER} \
--initial-cluster-token=${ETCD_INITIAL_CLUSTER_TOKEN} \
--initial-cluster-state=new \
--cert-file=/data/ssl/etcd/server.pem \
--key-file=/data/ssl/etcd/server-key.pem \
--peer-cert-file/data/ssl/etcd/server.pem \
--peer-key-file=/data/ssl/etcd/server-key.pem \
--trusted-ca-file=/data/ssl/etcd/ca.pem \
--peer-trusted-ca-file=/data/ssl/etcd/ssl/ca.pem
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
设置etcd的api版本
[root@172-16-3-83 ]# export ETCDCTL_API=2
三、etcd01拷贝证书到其他节点
[root@172-16-3-83 ]#scp /data/ssl/etcd/ca*pem [email protected]:/data/ssl/etcd/
[root@172-16-3-83 ]#scp /data/ssl/etcd/ca*pem [email protected]:/data/ssl/etcd/
[root@172-16-3-83 ]#scp /data/ssl/etcd/server*pem [email protected]:/data/ssl/etcd/
[root@172-16-3-83 ]#scp /data/ssl/etcd/server*pem [email protected]:/data/ssl/etcd/
四、开启集群etcd
systemctl enable etcd
systemctl start etcd
etcd01查看etcd是否健康
[root@172-16-3-83 ]# etcdctl --ca-file=/data/ssl/etcd/ca.pem --cert-file=/data/ssl/etcd/server.pem --key-file=/data/ssl/etcd/server-key.pem --endpoints="https://172.16.3.83:2379,https://172.16.3.90:2379,https://172.16.3.197:2379" cluster-health
member 435d25f5aa61f16b is healthy: got healthy result from https://172.16.3.90:2379
member 470dcdf2c4c2804f is healthy: got healthy result from https://172.16.3.197:2379
member aafdd75d7f990b4e is healthy: got healthy result from https://172.16.3.83:2379
cluster is healthy
注意,节点迁移的步骤
1)停止待迁移节点上的etc进程;
2)将数据目录打包复制到新的节点;
3)更新该节点对应集群中peer url,让其指向新的节点;
4)使用相同的配置,在新的节点上启动etcd进程