Kubernetes源码安装(安装Etcd)

部署Etcd集群

#创建工作目录
mkdir -p /opt/etcd/{
    
    bin,cfg,ssl} 
#将创建的证书拷贝到ssl下
cp ~/TLS/etcd/ca*pem ~/TLS/etcd/server*pem /opt/etcd/ssl/
#拉取所需要的Etcd包
wget  https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd-v3.4.9-linux-amd64.tar.gz
#解压安装包
tar xvf etcd-v3.4.9-linux-amd64.tar.gz
#将命令etcd etcdctl移动到/opt/etcd/bin目录下
mv etcd-v3.4.9-linux-amd64/{
    
    etcd,etcdctl} /opt/etcd/bin/

修改Etcd配置信息

cat > /opt/etcd/cfg/etcd.conf << EOF
#[Member]
ETCD_NAME="etcd-1"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://172.22.213.49:2380"
ETCD_LISTEN_CLIENT_URLS="https://172.22.213.49:2379"

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://172.22.213.49:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://172.22.213.49:2379"

ETCD_INITIAL_CLUSTER="etcd-1=https://172.22.213.49:2380,etcd-2=https://172.22.213.52:2380,etcd-3=https://172.22.213.53: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_INITIAL_CLUSTER_TOKEN   #集群 Token
ETCD_INITIAL_CLUSTER_STATE    #加入集群的当前状态,new 是新集群,existing 表示加入已有集群

添加到systemd管理

cat > /usr/lib/systemd/system/etcd.service << EOF
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
 
[Service]
Type=notify
EnvironmentFile=/opt/etcd/cfg/etcd.conf
ExecStart=/opt/etcd/bin/etcd \
--cert-file=/opt/etcd/ssl/server.pem \
--key-file=/opt/etcd/ssl/server-key.pem \
--peer-cert-file=/opt/etcd/ssl/server.pem \
--peer-key-file=/opt/etcd/ssl/server-key.pem \
--trusted-ca-file=/opt/etcd/ssl/ca.pem \
--peer-trusted-ca-file=/opt/etcd/ssl/ca.pem \
--logger=zap
Restart=on-failure
LimitNOFILE=65536
 
[Install]
WantedBy=multi-user.target
EOF

将Etcd推送到其他节点

#将master做的配置推送到node1~2
#拷贝etcd目录
scp -r /opt/etcd/ node1:/opt/
#拷贝服务文件
scp /usr/lib/systemd/system/etcd.service node1:/usr/lib/systemd/system/
 
#拷贝etcd目录
scp -r /opt/etcd/ node2:/opt/
#拷贝服务文件
scp /usr/lib/systemd/system/etcd.service node2:/usr/lib/systemd/system/

修改节点的Etcd配置

#其他节点的配置和master的配置一样,注意修改/opt/etcd/cfg/etcd.conf文件中的IP地址,IP地址不同

node1
vim /opt/etcd/cfg/etcd.conf
#[Member]
ETCD_NAME="etcd-2"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://172.22.213.52:2380"
ETCD_LISTEN_CLIENT_URLS="https://172.22.213.52:2379"

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://172.22.213.52:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://172.22.213.52:2379"

ETCD_INITIAL_CLUSTER="etcd-1=https://172.22.213.49:2380,etcd-2=https://172.22.213.52:2380,etcd-3=https://172.22.213.53:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

node2
vim /opt/etcd/cfg/etcd.conf
#[Member]
ETCD_NAME="etcd-3"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://172.22.213.53:2380"
ETCD_LISTEN_CLIENT_URLS="https://172.22.213.53:2379"

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://172.22.213.53:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://172.22.213.53:2379"

ETCD_INITIAL_CLUSTER="etcd-1=https://172.22.213.49:2380,etcd-2=https://172.22.213.52:2380,etcd-3=https://172.22.213.53:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

启动Etcd

#使修改的配置文件生效
systemctl daemon-reload
#启动Etcd并设置开机自启
systemctl start etcd && systemctl enable etcd    #注意三个节点需同时启动

报错:

[root@node1 cfg]# systemctl start etcd
Job for etcd.service failed because a timeout was exceeded. See “systemctl status etcd.service” and “journalctl -xe” for details.

由于未同时启动三个节点导致,所以服务超时

也有可能受Etcd版本不同,V3 和V2,解决方案如下:

 vim /etc/profile
 #在文件末尾添加如下内容
 export ETCDCTL_API=3
 保存并退出
 source /etc/profile
 启动Etcd即可

查看Etcd集群状态

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem  --key=/opt/etcd/ssl/server-key.pem --endpoints="https://172.22.213.49:2379,https://172.22.213.52:2379,https://172.22.213.53:2379" endpoint health

#出现以下结果未集群正常
https://172.22.213.53:2379 is healthy: successfully committed proposal: took = 13.884077ms
https://172.22.213.49:2379 is healthy: successfully committed proposal: took = 13.5873ms
https://172.22.213.52:2379 is healthy: successfully committed proposal: took = 14.504876ms

猜你喜欢

转载自blog.csdn.net/weixin_45641605/article/details/115081860