1.包下载

官网:https://etcd.io/docs/

下载地址: wget  https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz

2.解压

tar -xzvf  etcd-v3.5.0-linux-amd64.tar.gz

cd etcd-v3.5.0-linux-amd64 ;cp etcd /usr/bin ; cp etcdctl /usr/bin

 

 3.创建证书(alt_names地址写三台etcd对应的ip地址,三台都有权限。这样不用创建三次证书了。分发公用)

[root@mycloud1-001 pki]# cat etcd_ssl.cnf 
[ req ]
req_extensions = v3_req
distinguished_name = req_distinguished_name

[ req_distinguished_name ]

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[ alt_names ]
IP.1 = 192.168.1.2
IP.2 = 192.168.1.6
IP.3 = 192.168.1.7
server端使用:
openssl genrsa -out etcd_server.key 2048
openssl req -new -key etcd_server.key -config etcd_ssl.cnf -subj "/CN=etcd-server" -out etcd_server.csr
openssl x509 -req -in etcd_server.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -days 36500 -extensions v3_req -extfile etcd_ssl.cnf -out etcd_server.crt
etcd客户端连接:
生成私钥和证书签名申请文件
openssl genrsa -out etcd_client.key 2048
openssl req -new -key etcd_client.key -config etcd_ssl.cnf -subj "/CN=etcd-client" -out etcd_client.csr
使用CA的私钥对申请文件进行签名
openssl x509 -req -in etcd_client.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -days 36500 -extensions v3_req -extfile etcd_ssl.cnf -out etcd_client.crt

4.编辑配置文档

mkdir /etc/etcd/
cat /etc/etcd/etcd.conf
ETCD_ARGS="--name=kubenode1 \
  --cert-file=/etc/kubernetes/pki/etcd_server.crt \
  --key-file=/etc/kubernetes/pki/etcd_server.key \
  --peer-cert-file=/etc/kubernetes/pki/etcd_server.crt \
  --peer-key-file=/etc/kubernetes/pki/etcd_server.key \
  --trusted-ca-file=/etc/kubernetes/pki/ca.crt \
  --peer-trusted-ca-file=/etc/kubernetes/pki/ca.crt \
  --initial-advertise-peer-urls=https://192.168.1.6:2380 \
  --listen-peer-urls=https://192.168.1.6:2380 \
  --listen-client-urls=https://192.168.1.6:2379,http://127.0.0.1:2379 \
  --advertise-client-urls=https://192.168.1.6:2379 \
  --initial-cluster-token=etcd-cluster-1 \
  --initial-cluster=kubenode1=https://192.168.1.6:2380,kubenode2=https://192.168.1.2:2380 \   #正常需要三台,由于环境条件有限,用两台测试下,后面部署其他的delete了一台,两台会存在选举问题
  --initial-cluster-state=new \
  --data-dir=/var/lib/etcd"

5.配置etcd的systemd unit文件

cat /usr/lib/systemd/system/etcd.service 
[Unit]
Description=etcd service
Documentation=https://github.com/etcd-io/etcd
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd $ETCD_ARGS
Restart=always

[Install]
WantedBy=multi-user.target

6.启动服务。第一台启动会卡顿,需要其他节点也start后,才能启动了。或者单台etcd启动,需要参数:--force-new-cluster

systemctl daemon-reload 

systemctl start etcd

7.验证

etcdctl --cacert=/etc/kubernetes/pki/ca.crt --cert=/etc/kubernetes/pki/etcd_server.crt --key=/etc/kubernetes/pki/etcd_server.key --endpoints=https://192.168.1.6:2379 member list

 etcdctl --cacert=/etc/kubernetes/pki/ca.crt --cert=/etc/kubernetes/pki/etcd_server.crt --key=/etc/kubernetes/pki/etcd_server.key --endpoints=https://192.168.1.6:2379 endpoint health