Kubernetes单节点搭建----etcd数据库的搭建

Kubernetes单节点搭建----etcd数据库的搭建

本次实验是搭建Kubernetes的单个master节点集群。一个master节点需要安装etcd数据库、两个node节点分别都需要安装docker容器引擎、etcd数据库和flannel扁平化网络。集群架构如图所示。
在这里插入图片描述

etcd搭建实验流程

1.创建etcd集群需要先创建相关证书,所以首先需要下载好认证工具即,cfssl工具。

curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl
curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson
curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo

将下载好的认证工具导出至/usr/local/bin目录下面,方便管理和使用。
在这里插入图片描述

2.在主节点上建立一个工作目录,用于编写关于etcd的shell脚本、证书、签名等文件。
生成一个工作目录:

mkdir /root/

在工作目录中生成生成认证证书的工作目录:

mkdir /root/k8s/etcd-cert

etcd-cert.sh,是生成etcd证书的shell脚本。将脚本导入到etcd-cert工作目录中去。

#!/bin/bash
#定义了ca证书的配置文件,其中包含了有效时间10年,认证方式等
cat > ca-config.json <<EOF
{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "www": {
         "expiry": "87600h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ]
      }
    }
  }
}
EOF

#对证书进行签名,使用非对称秘钥验证,写明项目名称,地点等信息。
cat > ca-csr.json <<EOF
{
    "CN": "etcd CA",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ]
}
EOF

#通过命令产生了ca-key.pem和ca.pem
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

#-----------------------

#服务通信的证书,里面需要指明集群内部安装etcd的IP地址。
cat > server-csr.json <<EOF
{
    "CN": "etcd",
    "hosts": [
    "192.168.80.132",
    "192.168.80.134",
    "192.168.80.135"
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "BeiJing",
            "ST": "BeiJing"
        }
    ]
}
EOF

#通过命令生成ETCD的证书。
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server

如果在执行脚本的时候发现权限不够,说明需要在刚才下载的工具中添加可执行权限。
在这里插入图片描述
可以看到刚才生成的服务通信这个证书。
在这里插入图片描述
2.解压etcd的源码包,进行相关配置。
在这里插入图片描述
接着在/opt目录下创建etcd的工作目录,其中包含:cfg配置文件目录、bin命令文件目录和ssl证书目录。

mkdir -p /opt/etcd/{cfg,bin,ssl}

在这里插入图片描述
相关目录创建完毕,将命令和证书复制到etcd的相对应的目录中去。
在这里插入图片描述
ssl中应该包含4个证书。
在这里插入图片描述
现在开始配置etcd的配置文件。
在工作目录中编写etcd.sh脚本文件,其中包含etcd的集群配置和启动脚本配置。

#!/bin/bash
# example: ./etcd.sh etcd01 192.168.1.10 etcd02=https://192.168.1.11:2380,etcd03=https://192.168.1.12:2380

ETCD_NAME=$1
ETCD_IP=$2
ETCD_CLUSTER=$3

WORK_DIR=/opt/etcd
#etcd集群的配置节点ip信息等。
cat <<EOF >$WORK_DIR/cfg/etcd
#[Member]
ETCD_NAME="${ETCD_NAME}"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://${ETCD_IP}:2380"
ETCD_LISTEN_CLIENT_URLS="https://${ETCD_IP}:2379"

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://${ETCD_IP}:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://${ETCD_IP}:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://${ETCD_IP}:2380,${ETCD_CLUSTER}"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF

#为了便于系统管理和启动将启动脚本生成在system中
cat <<EOF >/usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
EnvironmentFile=${WORK_DIR}/cfg/etcd
ExecStart=${WORK_DIR}/bin/etcd \
--name=\${ETCD_NAME} \
--data-dir=\${ETCD_DATA_DIR} \
--listen-peer-urls=\${ETCD_LISTEN_PEER_URLS} \
--listen-client-urls=\${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 \
--advertise-client-urls=\${ETCD_ADVERTISE_CLIENT_URLS} \
--initial-advertise-peer-urls=\${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
--initial-cluster=\${ETCD_INITIAL_CLUSTER} \
--initial-cluster-token=\${ETCD_INITIAL_CLUSTER_TOKEN} \
--initial-cluster-state=new \
--cert-file=${WORK_DIR}/ssl/server.pem \
--key-file=${WORK_DIR}/ssl/server-key.pem \
--peer-cert-file=${WORK_DIR}/ssl/server.pem \
--peer-key-file=${WORK_DIR}/ssl/server-key.pem \
--trusted-ca-file=${WORK_DIR}/ssl/ca.pem \
--peer-trusted-ca-file=${WORK_DIR}/ssl/ca.pem
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable etcd
systemctl restart etcd

运行此脚本:

bash etcd.sh etcd01 192.168.80.132 etcd02=https://192.168.80.134:2380,etcd03=https://192.168.80.135:2380

在这里插入图片描述
将/opt/etcd中的所有内容发送到node节点中去。

scp -r /opt/etcd/ root@192.168.80.134:/opt/
scp -r /opt/etcd/ root@192.168.80.135:/opt/

复制到node节点中需要修改其中的配置文件。

#[Member]
#修改节点名称
ETCD_NAME="etcd02"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
#监听地址等
ETCD_LISTEN_PEER_URLS="https://192.168.80.134:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.80.134:2379"

#[Clustering]
#这里的地址也需要修改为本机的IP地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.80.134:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.80.134:2379"
#集群IP地址不需要修改
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.80.132:2380,etcd02=https://192.168.80.134:2380,etcd03=https://192.168.80.135:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

复制master节点中的启动脚本到各个node节点中去。

 scp /lib/systemd/system/etcd.service root@192.168.80.134:/lib/systemd/system/
 scp /lib/systemd/system/etcd.service root@192.168.80.135:/lib/systemd/system/

在这里插入图片描述
在node节点中开启etcd数据库,在master重新执行etcd.sh脚本。

node:
systemctl start etcd.service

node节点的etcd正在运行
在这里插入图片描述

matser:
bash etcd.sh etcd01 192.168.80.132 etcd02=https://192.168.80.134:2380,etcd03=https://192.168.80.135:2380

查看集群的健康状态:

/opt/etcd/bin/etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://192.168.80.132:2379,https://192.168.80.134:2379,https://192.168.80.135:2379" cluster-health
**注意这条命令一定要在证书的目录下执行,否则在指定证书时要写绝对路径。**

在这里插入图片描述
这样Kubernetes的单master集群中的etcd部署完毕!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值