关注分享主机优惠活动
国内外VPS云服务器

kubeadm部署k8s1.9高可用集群--2搭建etcd集群(搭建k8sdocker集群)

摘要:构建集群简介安装的集群默认是单机容器,并且通信没有加密和验证,因此您必须更改此设置。 因此,首先要部署三节点集群、二进制部署、守护进程、生成证书。

构建etcd集群简介

集群由kubeadm安装,默认的etcd是一个独立的容器化etcd。 与 k8s etcd 的通信未通过 SSL 加密和验证,必须进行修改。
所以,首先需要部署一个3节点的etcd集群,二进制部署,systemd守护进程,并生成CA证书。

ETCD集群详细信息

kuberntes系统使用etcd来存储所有数据。 此外,calico 网络还使用 etcd 集群。 本文档提供了部署高可用的 3 节点 etcd 集群的步骤,每个集群都有一个名称。 对于 etcd-host1etcd-host2etcd-host3

etcd[ k4 ]host1:172.16.120.151

etcd-host2:172.16.120.152

etcd-host3:172.16.120.153

本文档中使用变量定义如下。

$ export NODE_NAME=etcd-host1 # 当前部署的机器名称(随意定义,只要能区分不同机器即可) $ export NODE_IP=172.16.   120.151 # 当前部署的机器的 IP$ $ export NODE_IPS="172.16.120.151 172.16.120.152 172.16.120.153" # 集群中所有机器的 etcd IP$ # 用于集群间通信的 etcd IP 和端口 $ export ETCD_NODES= etcd[k4 ] 主机1=https://172.16.120.151:2380,etcd-host2=https://172.16.120.152:2380,etcd-host3=https://172.16.120.153:2380$

本系列默认使用root用户操作

创建 CA 证书和密钥

本文档使用 CloudFlare 的 PKI 工具集 cfssl 生成证书颁发机构 (CA) 证书和密钥文件。 CA 是自签名证书。 用于签署稍后创建的其他 TLS 证书。

安装cfssl

如果您不想在部署主机上安装cfssl工具,可以在其他主机上执行此步骤。 生成后,将证书复制到部署etcd的主机上。 能。 本教程采用该方法,在测试机上进行如下操作:

$ wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64$ chmod +x cfssl_linux-amd64$ mv cfssl_linux-amd64 /usr/local/bin /cfssl$ wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64$ chmod +x cfssljson_linux-amd64$ mv cfssljson_linux-amd64 /usr/local/bin/cfssljson$ wget https ://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64$ chmod +x cfssl-certinfo_linux-amd64$ mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo$

为 ETCD 生成 TLS 密钥和证书

为了确保通信安全客户端( etcdctl )需要用于etcd集群与etcd集群之间通信的TLS加密。 在本部分中,您将创建 etcd TLS 加密所需的证书和私钥。

创建CA配置文件:

$ cat > ca-config.json <<EOF{ "signing": { "default": { "expiry": "8760h " }, "profiles": { "kubernetes": { "usages": [ "signing", "key encipherment", "server auth", "client auth" ], "expiry": "8760h" } } }}EOF 

ca-config.json:您可以定义多个具有不同有效期、使用场景和其他参数的配置文件。 然后在签署证书时使用特定的配置文件。

签名:表示该证书可以用来签署其他证书。 CA=TRUE 用于生成的 ca.pem 证书。

服务器认证:表示客户端可以使用此CA来验证服务器提供的证书。

客户端验证:表示服务器可以使用此CA来验证客户端提供的证书。 用于验证的证书;

创建 CA 证书图书签名请求:

$ cat > ca-csr.json <<EOF{ "CN": "kubernetes", "key": { "algo": "rsa", "size":第2048章}EOF

"CN": Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名(username)。 浏览器使用此字段来验证网站是否合法。

“O”:组织,kube-apiserver 作为一个组从证书中提取该字段。 请求用户所属的位置。

生成CA证书和私钥。

$ cfssl gencert -initca ca-csr.json | cfssljson -bare ca$ ls ca*ca-config.json csr ca-csr.json ca。 -key.pem ca.pem$

etcd 创建证书签名请求:

$ cat > etcd-csr.json < <EOF{ "CN": "etcd ", "hosts": [ "127.0.0.1", "${NODE_IP}" ], "key": { "algo": "rsa", "size": 2048 }, "name": [ { " C" :“CN”、“ST”:"BeiJing", "L": "BeiJing", "O": "k8s", "OU": "System" } ]}EOF

hosts字段包含您有权使用的etcd节点指定IP。 证书;

生成etcd证书和私钥:

$ cfssl gencert -ca=ca.pem -ca-key=ca[ k4]key. pem -config=ca-config.json -profile=kubernetes etcd-csr.json | cfssljson -bare etcd$ ls etcd*etcd.csr etcd-csr. ]钥匙。    pem etcd.pem ca-config.json ca.csr ca-csr.json ca-key.pem ca.pem$ rm etcd.csr etcd-csr.json

将生成的etcd.pem、etcd-key.pem、ca.pem文件复制到目标主机的/etc/etcd/ssl中。

下载二进制文件

前往https://github.com/coreos/etcd/releases页面下载最新版本的二进制文件下载文件:

$ wget https://github.com/coreos/etcd/releases/download/v3.2.11/etcd-v3.2.11-linux-amd64 .tar。 gz $ tar -xvf etcd-v3.2.11-linux-amd64.tar.gz$ mv 等d-v3.2.11-linux-amd64/etcd* /usr/local/bin$

为etcd创建systemd单元文件

$ mkdir - p /var/lib/etcd # 必须先创建工作 $ cat > etcd.service <<EOF[Unit]Description=Etcd ServerAfter=network.targetAfter=network-online.targetWants=network[ k4]online .targetDocumentation = https://github.com/coreos[Service]Type=notifyWorkingDirectory=/var/lib/etcd/ExecStart=/usr/local/bin/etcd --名称=${NODE_NAME} -[ k4]cert-file=/etc/etcd/ssl/etcd.pem --key-file=/etc/etcd/ssl/etcd-key.pem [ k4][ k4]对等 -cert-file=/etc/etcd/ssl/etcd.pem --peer-key-file=/etc/etcd/ssl/etcd-key .pem --可信-ca-文件=/etc/etcd/ssl/ca.pem --对等-可信-ca-文件=/etc/etcd / ssl/ca.pem --初始-广告-peer-urls=https://${NODE_IP}:2380 --监听-对等-urls=https://${NODE_IP}:2380 --监听-客户端-urls=https:// /${NODE_IP}:2379,http://127.0.0.1:2379 --广告-客户端-urls=https://${NODE_IP}:2379 --初始- 集群 - 令牌 = etcd - 集群 - 0 - - 初始 - 集群 = ${ETCD_NODES} - - 初始 - 集群 - 状态 =新 --data-dir=/var/lib/etcdRestart=on-failureRestartSec=5LimitNOFILE=65536[Install]WantedBy=multi-user.targetEOF

规范etcd的工作和数据是/var/lib/etcd。 该必须在启动服务之前创建。

为了保证通信安全,必须指定etcd的公钥和私钥(cert-file和key-file)。 对等通信公钥和私钥以及 CA 证书(peer-cert-file、peer-key-file、peer-trusted-ca-file)、客户端 CA 证书( Trusted-ca-file);

--initial-cluster -state 值为 newetcd 服务时间

$ mv etcd.service /etc/systemd/system/$ systemctl daemon-reload$ systemctl 启用etcd$ systemctl start etcd$ systemctl status etcd$

验证服务

部署etcd集群后,在任意etcd集群节点上运行以下命令:

$ etcdctl --endpoints=https://172.16.120.151:第2379章] key -file=/etc/etcd/ssl/etcd-key.pem cluster-health

预期结果:

成员 71df888fdf6f0bb9 正常:成功结果https://172.16.120.153:2379 会员73b5207bc2491164 正常:https://172.16.120.151:2379 会员7a4ddb7c77253f4b 正常:https://172.1 6.120.152 成功结果来自:2379

如果三个etcd输出均正常,则说明集群服务正常(忽略警告信息)。

未经允许不得转载:主机频道 » kubeadm部署k8s1.9高可用集群--2搭建etcd集群(搭建k8sdocker集群)

评论 抢沙发

评论前必须登录!