部署到3台主机的etcd集群,ip 10.4.7.10 =>etcd-10 10.4.7.11 =>etcd-11 10.4.7.12 =>etcd-12
使用部署到10.4.7.10 为例
下载到 /opt/目录下
https://github.com/etcd-io/etcd/releases/download/
解压
tar -zxvf etcd-v3.3.18-linux-amd64.tar.gz
#创建软连接
ln -s etcd-v3.3.18-linux-amd64 etcd
cd /opt/etcd/ && mkdir certs
cfssl 简要说明
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
sudo cp cfssl_linux-amd64 /usr/local/bin/cfssl
sudo cp cfssljson_linux-amd64 /usr/local/bin/cfssljson
sudo cp cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
cd /usr/local/bin/
chmod +x cfssl
chmod +x cfssljson
chmod +x cfssl-certinfo
初始化
mkdir ~/cfssl
cd ~/cfssl
cfssl print-defaults config > ca-config.json
cfssl print-defaults csr > ca-csr.json
ca-config.json:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile;
signing:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE;
server auth:服务端证书;表示client可以用该 CA 对server提供的证书进行验证;server 由服务器使用,并由客户端验证服务器身份
client auth:客户端证书;表示server可以用该CA对client提供的证书进行验证;client用于通过服务器验证客户端。
peer 对等证书;就是server auth、client auth都有的。成员之间共用,供它们彼此之间通信使用
#“O”:Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group);
颁发者信息 CN - 一般名词,O - 组织 , OU组织单位,
CN: Common Name,浏览器使用该字段验证网站是否合法,一般写的是域名。非常重要。浏览器使用该字段验证网站是否合法
C: Country, 国家
L: Locality,地区,城市
O: Organization Name,组织名称,公司名称
OU: Organization Unit Name,组织单位名称,公司部门
ST: State,州,省
#如果 hosts 字段不为空则需要指定授权使用该证书的 IP 或域名列表,由于该证书后续被 etcd 集群和 kubernetes master 集群使用,所以上面分别指定了 etcd 集群、kubernetes master 集群的主机 IP 和 kubernetes 服务的服务 IP(一般是 kue-apiserver 指定的 service-cluster-ip-range 网段的第一个IP,如 10.254.0.1。
#对等证书 生成kubernetes的证书和私钥。使用CA认证中心的私钥和证书签名生成机构的证书和私钥。
创建 ca证书 vim /opt/etcd/certs/ca-csr.json
{
"CN": "k8s CA",
"key": {
"algo": "rsa",
"size"