部署安全的etcd高可用集群

etcd作为Kubernetes集群的主数据库,在安装Kubernetes各服务之前需要首先安装和启动。

1. 下载etcd二进制文件,配置systemd服务

从GitHub官网下载etcd二进制文件,例如etcd-v3.4.13-linux-amd64.tar.gz。

curl -L https://github.com/coreos/etcd/releases/download/v3.4.13/etcd-v3.4.13-linux-amd64.tar.gz -o etcd-v3.4.13-linux-amd64.tar.gz

解压缩后得到etcd和etcdctl文件,将它们复制到/usr/bin目录下。

[root@master ~]# curl -L https://github.com/coreos/etcd/releases/download/v3.2.10/etcd-v3.2.10-linux-amd64.tar.gz -o etcd-v3.2.10-linux-amd64.tar.gz
.........................
[root@master ~]# tar xzvf etcd-v3.2.10-linux-amd64.tar.gz
........
[root@master ~]# ls
anaconda-ks.cfg  etcd-v3.4.13-linux-amd64  etcd-v3.4.13-linux-amd64.tar.gz  original-ks.cfg
[root@master ~]# cd etcd-v3.4.13-linux-amd64
[root@master etcd-v3.4.13-linux-amd64]# ls
Documentation  etcd  etcdctl  README-etcdctl.md  README.md  READMEv2-etcdctl.md
[root@master ~]# cd etcd-v3.4.13-linux-amd64
[root@master etcd-v3.4.13-linux-amd64]# ls
Documentation  etcd  etcdctl  README-etcdctl.md  README.md  READMEv2-etcdctl.md
[root@master etcd-v3.4.13-linux-amd64]# cp etcd /usr/bin
[root@master etcd-v3.4.13-linux-amd64]# cp etcdctl /usr/bin
[root@master ~]# cd /usr/bin
[root@master bin]# ls | grep etcd
etcd
etcdctl
[root@master bin]#

将其部署为一个systemd的服务,创建systemd服务配置文件/usr/lib/systemd/system/etcd.service,内容示例如下:

[root@master system]# cat etcd.service
[Unit]
Description=etcd key-value store
Documentation=https://github.com/etcd-io/etcd
After=network.target

[Service]
EnvironmentFile=/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd
Restart=always

[Install]
WantedBy=multi-user.target
[root@master system]# 

其中,EnvironmentFile指定配置文件的全路径,例如/tc/etcd/etcd.conf,其中的参数以环境变量的格式进行配置。
接下来先对etcd需要的CA证书配置进行说明。对于配置文件/etc/etcd/etcd.conf中的完整配置参数,将在创建完CA证书后统一说明。


2. 创建etcd的CA证书

先创建一个x509 v3配置文件etcd_ssl.cnf,其中subjectAltName参数(alt_names)包括所有etcd主机的IP地址,例如:

[ req ]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[ req_distinguished_name ] [ v3_req ] basicConstraints
= CA:FALSE keyUsage = nonRepudiation, digtalSignature, keyEncipherment subjectAltName = @alt_names [ alt_names ] IP.1 = 192.168.18.3 IP.2 = 192.168.18.4 IP.2 = 192.168.18.5

然后使用openssl命令创建etcd的服务端CA证书,包括etcd_server.key和etcd_server.crt文件,将其保存到/etc/etcd/pki目录下:

1.修改Openssl配置文件CA目录:
cat /etc/pki/tls/openssl.cnf
dir             = /etc/pki/CA

2.生成根证书及私钥:

cd /etc/pki/CA
mkdir private crl certs newcerts #新建证书存放目录(如果已经存在则不用创建)
echo '00' > serial #新建serial文件并写入初始序列号00
touch index.txt #新建index.txt空文件
openssl genrsa -out private/cakey.pem 1024 #生成CA根证书私钥
openssl req -new -x509 -key private/cakey.pem  -out cacert.pem #生成CA根证书

3.生成服务器证书私钥、证书,可用于https服务器等:

openssl genrsa -out private/server.key 1024
openssl req -new -key private/server.key -out crl/server.csr #生成证书请求文件,可提供认证CA签核,或自签名。、、、
openssl ca -in crl/server.csr -out certs/server.crt #自签名证书、、、
Subject:
            countryName               = cn
            stateOrProvinceName       = guangzhou
            organizationName          = ci\08           ci^H
            organizationalUnitName    = chinaunicom
            commonName                = wzw
            emailAddress              = 2412065103@qq.com

3.etcd参数配置说明

对3个etcd节点进行配置。etcd节点的配置方式包括启动参数、环境变量、配置文件等,本例使用环境变量方式将其配置到/etc/etcd/etcd.conf文件中,供systemd服务读取。
3个etcd节点将被部署在192.168.72.133/2/4台主机上,配置文件/etc/etcd/etcd.conf的内容示例如下:

 

posted @ 2021-11-15 23:41  wangSir1  阅读(357)  评论(0编辑  收藏  举报