当前位置: 首页 > news >正文

CentOS7二进制安装包方式部署K8S集群之ETCD集群部署

目录

1、集群各节点创建etcd相关目录

(1)、K8s-controller节点

(2)、K8s-node01节点

(3)、K8s-node02节点

2、创建etcd集群服务证书和私钥

(1)、创建etcd集群服务证书签名请求文件

(2)、签发etcd-server证书文件和私钥文件

(4)、分发etcd证书文件至etcd集群各节点

1)分发到K8s-controller节点

2)分发到K8s-node01节点

3)分发到K8s-node02节点

3、下载etcd安装文件

(1)、下载etcd安装文件

(2)、分发etcd安装文件

1)分发到K8s-node01节点

2)分发到K8s-node02节点

4、部署集群各节点etcd服务

(1)、K8s-controller节点

1)解压etcd安装文件

2)创建etcd服务配置文件

3)创建etcd.service文件

(2)、K8s-node01节点

1)解压etcd安装文件

2)创建etcd服务配置文件

3)创建etcd.service文件

(3)、K8s-node02节点

1)解压etcd安装文件

2)创建etcd服务配置文件

3)创建etcd.service文件

5、启动集群各节点etcd服务

(1)、启动K8s-controller节点etcd服务

1)设置开机启动etcd服务

2)启动etcd服务

(2)、启动K8s-node01节点etcd服务

1)设置开机启动etcd服务

2)启动etcd服务

(3)、启动K8s-node02节点etcd服务

1)设置开机启动etcd服务

2)启动etcd服务

6、验证etcd集群状态

(1)、查看etcd集群健康状态

(2)、查看etcd集群LEADER节点


 更多精彩博文详见:

《Linux系统应用运维》专栏总目录(持续更新)

《CentOS二进制安装包方式部署K8S集群之系统初始化》

《CentOS7二进制安装包方式部署K8S集群之CA根证书生成》

《CentOS7二进制安装包方式部署K8S集群之ETCD集群部署》

        本文主要介绍了在CentOS 7系统下,使用二进制安装包方式部署K8S集群中etcd集群部署的相关内容。本次Kubernetes集群使用分布式键值存储系统etcd进行数据存储,其中etcd采取三节点集群方式部署。为了节约服务器资源,etcd集群节点复用Kubernetes集群节点。

etcd集群节点规划如下:

主机名称IP部署组件
K8s-controller192.168.110.150etcd-01
K8s-node01192.168.110.151etcd-02
K8s-node02192.168.110.152etcd-03

1、集群各节点创建etcd相关目录

此处集群各节点分别创建如下目录:

  • /K8s/etcd/bin:该目录下为etcd服务相关的可执行文件。
  • /K8s/etcd/data:该目录为etcd服务的数据文件目录。
  • /K8s/etcd/ssl:该目录下为etcd服务相关的证书文件。

(1)、K8s-controller节点

[root@K8s-controller ~]# mkdir -p /K8s/etcd/{bin,data,ssl}
[root@K8s-controller ~]# ll /K8s/etcd/

(2)、K8s-node01节点

[root@K8s-node01 ~]# mkdir -p /K8s/etcd/{bin,data,ssl}
[root@K8s-node01 ~]# ll /K8s/etcd/

(3)、K8s-node02节点

[root@K8s-node02 ~]# mkdir -p /K8s/etcd/{bin,data,ssl}
[root@K8s-node02 ~]# ll /K8s/etcd/

2、创建etcd集群服务证书和私钥

(1)、创建etcd集群服务证书签名请求文件

  • 创建etcd集群服务证书文件存放目录

[root@K8s-controller ~]# mkdir -pv /K8s/cfssl/cert_file/etcd

  • 创建etcd集群服务证书签名请求文件etcd-csr.json

[root@K8s-controller ~]# cat > /K8s/cfssl/cert_file/etcd/etcd-server-csr.json <<EOF
{
    "CN": "etcd-server",
    "hosts": [
        "192.168.110.150",
        "192.168.110.151",
        "192.168.110.152"
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Nanning",
            "ST": "Guangxi",
            "O": "k8s",
            "OU": "lbj"
        }
    ]
}
EOF

hosts字段是etcd集群节点IP地址。

(2)、签发etcd-server证书文件和私钥文件

        使用etcd集群CA根证书、CA根证书私钥、CA根证书配置文件、etcd-server证书签名请求json文件共同签发etcd-server证书文件和私钥文件。此处会生成三个文件,分别是证书etcd-server.pem、证书私钥etcd-server-key.pem、证书签名请求etcd-server.csr(用于交叉签名或重新签名)。

[root@K8s-controller ~]# cd /K8s/cfssl/cert_file/etcd/

[root@K8s-controller etcd]# cfssl gencert -ca=/K8s/cfssl/cert_file/etcd-ca.pem -ca-key=/K8s/cfssl/cert_file/etcd-ca-key.pem -config=/K8s/cfssl/cert_file/etcd-ca-config.json -profile=etcd /K8s/cfssl/cert_file/etcd/etcd-server-csr.json | cfssljson -bare etcd-server

(4)、分发etcd证书文件至etcd集群各节点

此处分发etcd集群CA根证书文件etcd-ca.pem、etcd集群服务证书文件etcd-server.pem、etcd私钥文件etcd-server-key.pem。

1)分发到K8s-controller节点

[root@K8s-controller ~]# cp /K8s/cfssl/cert_file/etcd/etcd-server.pem /K8s/cfssl/cert_file/etcd/etcd-server-key.pem /K8s/cfssl/cert_file/etcd-ca.pem /K8s/etcd/ssl/
[root@K8s-controller ~]# ll /K8s/etcd/ssl/

2)分发到K8s-node01节点

  • K8s-controller节点分发

[root@K8s-controller ~]# scp -P 22 /K8s/cfssl/cert_file/etcd/etcd-server.pem /K8s/cfssl/cert_file/etcd/etcd-server-key.pem /K8s/cfssl/cert_file/etcd-ca.pem root@192.168.110.151:/K8s/etcd/ssl/

  • K8s-node01节点查看

[root@K8s-node01 ~]# ll /K8s/etcd/ssl/

3)分发到K8s-node02节点

  • K8s-controller节点分发

[root@K8s-controller ~]# scp -P 22 /K8s/cfssl/cert_file/etcd/etcd-server.pem /K8s/cfssl/cert_file/etcd/etcd-server-key.pem /K8s/cfssl/cert_file/etcd-ca.pem root@192.168.110.152:/K8s/etcd/ssl/

  • K8s-node02节点查看

[root@K8s-node02 ~]# ll /K8s/etcd/ssl/

3、下载etcd安装文件

(1)、下载etcd安装文件

此处部署的是v3.4.18-linux-amd64版本,可根据实际环境选择相应的版本。

[root@K8s-controller ~]# cd /K8s/etcd/
[root@K8s-controller etcd]# wget https://github.com/etcd-io/etcd/releases/download/v3.4.18/etcd-v3.4.18-linux-amd64.tar.gz

(2)、分发etcd安装文件

1)分发到K8s-node01节点

[root@K8s-controller ~]# scp -P 22 /K8s/etcd/etcd-v3.4.18-linux-amd64.tar.gz root@192.168.110.151:/K8s/etcd/

[root@K8s-node01 ~]# ll /K8s/etcd/

2)分发到K8s-node02节点

[root@K8s-controller ~]# scp -P 22 /K8s/etcd/etcd-v3.4.18-linux-amd64.tar.gz root@192.168.110.152:/K8s/etcd/

[root@K8s-node02 ~]# ll /K8s/etcd/

4、部署集群各节点etcd服务

(1)、K8s-controller节点

1)解压etcd安装文件
  • 解压etcd安装文件

[root@K8s-controller ~]# cd /K8s/etcd/

[root@K8s-controller etcd]# tar -xzvf etcd-v3.4.18-linux-amd64.tar.gz

  • 复制解压后的可执行文件到etcd的bin目录

[root@K8s-controller etcd]# cp /K8s/etcd/etcd-v3.4.18-linux-amd64/{etcd,etcdctl} /K8s/etcd/bin/

[root@K8s-controller etcd]# ll /K8s/etcd/bin/

  • 创建etcdctl可执行文件软链接

[root@K8s-controller etcd]# ln -s /K8s/etcd/bin/etcdctl /usr/bin/etcdctl

[root@K8s-controller etcd]# ll /usr/bin/etcdctl

2)创建etcd服务配置文件

此处创建etcd服务配置文件/K8s/etcd/etcd.conf

[root@K8s-controller ~]# cat > /K8s/etcd/etcd.conf << EOF
#[member]
# ETCD_NAME:节点名称,集群中唯一,此处指集群节点01
ETCD_NAME="etcd-01"
# ETCD_DATA_DIR:当前集群节点的数据目录
ETCD_DATA_DIR="/K8s/etcd/data"
# ETCD_LISTEN_PEER_URLS:集群通信的监听地址
ETCD_LISTEN_PEER_URLS="https://192.168.110.150:2380"
# ETCD_LISTEN_CLIENT_URLS:客户端访问的监听地址
ETCD_LISTEN_CLIENT_URLS="https://192.168.110.150:2379,http://127.0.0.1:2379"

#[cluster]
# ETCD_INITIAL_ADVERTISE_PEER_URLS:集群的通告地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.110.150:2380"
# ETCD_ADVERTISE_CLIENT_URLS:客户端的通告地址
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.110.150:2379"
# ETCD_INITIAL_CLUSTER:集群的节点地址
ETCD_INITIAL_CLUSTER="etcd-01=https://192.168.110.150:2380,etcd-02=https://192.168.110.151:2380,etcd-03=https://192.168.110.152:2380"
# ETCD_INITIAL_CLUSTER_TOKEN:集群Token
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
# ETCD_INITIAL_CLUSTER_STATE:即将加入的集群的当前状态,new是新建的集群,existing表示加入已存在的集群。
ETCD_INITIAL_CLUSTER_STATE="new"
EOF
 

3)创建etcd.service文件

创建etcd.service文件,通过systemd来管理etcd服务。

[root@K8s-controller ~]# cat > /usr/lib/systemd/system/etcd.service << EOF

[Unit]
Description=etcd server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
EnvironmentFile=/K8s/etcd/etcd.confExecStart=/K8s/etcd/bin/etcd --cert-file=/K8s/etcd/ssl/etcd-server.pem --key-file=/K8s/etcd/ssl/etcd-server-key.pem --peer-cert-file=/K8s/etcd/ssl/etcd-server.pem --peer-key-file=/K8s/etcd/ssl/etcd-server-key.pem --trusted-ca-file=/K8s/etcd/ssl/etcd-ca.pem --peer-trusted-ca-file=/K8s/etcd/ssl/etcd-ca.pem --logger=zap
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

EOF

(2)、K8s-node01节点

1)解压etcd安装文件

  • 解压etcd安装文件

[root@K8s-node01 ~]# cd /K8s/etcd/

[root@K8s-node01 etcd]# tar -xzvf etcd-v3.4.18-linux-amd64.tar.gz

  • 复制解压后的可执行文件到etcd的bin目录

[root@K8s-node01 etcd]# cp /K8s/etcd/etcd-v3.4.18-linux-amd64/{etcd,etcdctl} /K8s/etcd/bin/
[root@K8s-node01 etcd]# ll /K8s/etcd/bin/

  • 创建etcdctl可执行文件软链接

[root@K8s-node01 etcd]# ln -s /K8s/etcd/bin/etcdctl /usr/bin/etcdctl
[root@K8s-node01 etcd]# ll /usr/bin/etcdctl

2)创建etcd服务配置文件

此处创建etcd服务配置文件/K8s/etcd/etcd.conf

[root@K8s-node01 ~]# cat > /K8s/etcd/etcd.conf << EOF
#[member]
# ETCD_NAME:节点名称,集群中唯一,此处指集群节点01
ETCD_NAME="etcd-02"
# ETCD_DATA_DIR:当前集群节点的数据目录
ETCD_DATA_DIR="/K8s/etcd/data"
# ETCD_LISTEN_PEER_URLS:集群通信的监听地址
ETCD_LISTEN_PEER_URLS="https://192.168.110.151:2380"
# ETCD_LISTEN_CLIENT_URLS:客户端访问的监听地址
ETCD_LISTEN_CLIENT_URLS="https://192.168.110.151:2379,http://127.0.0.1:2379"

#[cluster]
# ETCD_INITIAL_ADVERTISE_PEER_URLS:集群的通告地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.110.151:2380"
# ETCD_ADVERTISE_CLIENT_URLS:客户端的通告地址
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.110.151:2379"
# ETCD_INITIAL_CLUSTER:集群的节点地址
ETCD_INITIAL_CLUSTER="etcd-01=https://192.168.110.150:2380,etcd-02=https://192.168.110.151:2380,etcd-03=https://192.168.110.152:2380"
# ETCD_INITIAL_CLUSTER_TOKEN:集群Token
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
# ETCD_INITIAL_CLUSTER_STATE:即将加入的集群的当前状态,new是新建的集群,existing表示加入已存在的集群。
ETCD_INITIAL_CLUSTER_STATE="new"
EOF

3)创建etcd.service文件

创建etcd.service文件,通过systemd来管理etcd服务。

[root@K8s-node01 ~]# cat > /usr/lib/systemd/system/etcd.service << EOF

[Unit]
Description=etcd server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
EnvironmentFile=/K8s/etcd/etcd.conf
ExecStart=/K8s/etcd/bin/etcd --cert-file=/K8s/etcd/ssl/etcd-server.pem --key-file=/K8s/etcd/ssl/etcd-server-key.pem --peer-cert-file=/K8s/etcd/ssl/etcd-server.pem --peer-key-file=/K8s/etcd/ssl/etcd-server-key.pem --trusted-ca-file=/K8s/etcd/ssl/etcd-ca.pem --peer-trusted-ca-file=/K8s/etcd/ssl/etcd-ca.pem --logger=zap
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

EOF

(3)、K8s-node02节点

1)解压etcd安装文件

  • 解压etcd安装文件

[root@K8s-node02 ~]# cd /K8s/etcd/

[root@K8s-node02 etcd]# tar -xzvf etcd-v3.4.18-linux-amd64.tar.gz

  • 复制解压后的可执行文件到etcd的bin目录

[root@K8s-node02 etcd]# cp /K8s/etcd/etcd-v3.4.18-linux-amd64/{etcd,etcdctl} /K8s/etcd/bin/
[root@K8s-node02 etcd]# ll /K8s/etcd/bin/

  • 创建etcdctl可执行文件软链接

[root@K8s-node02 etcd]# ln -s /K8s/etcd/bin/etcdctl /usr/bin/etcdctl
[root@K8s-node02 etcd]# ll /usr/bin/etcdctl

2)创建etcd服务配置文件

此处创建etcd服务配置文件/K8s/etcd/etcd.conf

[root@K8s-node02 ~]# cat > /K8s/etcd/etcd.conf << EOF
#[member]
# ETCD_NAME:节点名称,集群中唯一,此处指集群节点01
ETCD_NAME="etcd-03"
# ETCD_DATA_DIR:当前集群节点的数据目录
ETCD_DATA_DIR="/K8s/etcd/data"
# ETCD_LISTEN_PEER_URLS:集群通信的监听地址
ETCD_LISTEN_PEER_URLS="https://192.168.110.152:2380"
# ETCD_LISTEN_CLIENT_URLS:客户端访问的监听地址
ETCD_LISTEN_CLIENT_URLS="https://192.168.110.152:2379,http://127.0.0.1:2379"

#[cluster]
# ETCD_INITIAL_ADVERTISE_PEER_URLS:集群的通告地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.110.152:2380"
# ETCD_ADVERTISE_CLIENT_URLS:客户端的通告地址
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.110.152:2379"
# ETCD_INITIAL_CLUSTER:集群的节点地址
ETCD_INITIAL_CLUSTER="etcd-01=https://192.168.110.150:2380,etcd-02=https://192.168.110.151:2380,etcd-03=https://192.168.110.152:2380"
# ETCD_INITIAL_CLUSTER_TOKEN:集群Token
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
# ETCD_INITIAL_CLUSTER_STATE:即将加入的集群的当前状态,new是新建的集群,existing表示加入已存在的集群。
ETCD_INITIAL_CLUSTER_STATE="new"
EOF

3)创建etcd.service文件

创建etcd.service文件,通过systemd来管理etcd服务。

[root@K8s-node02 ~]# cat > /usr/lib/systemd/system/etcd.service << EOF

[Unit]
Description=etcd server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
EnvironmentFile=/K8s/etcd/etcd.conf
ExecStart=/K8s/etcd/bin/etcd --cert-file=/K8s/etcd/ssl/etcd-server.pem --key-file=/K8s/etcd/ssl/etcd-server-key.pem --peer-cert-file=/K8s/etcd/ssl/etcd-server.pem --peer-key-file=/K8s/etcd/ssl/etcd-server-key.pem --trusted-ca-file=/K8s/etcd/ssl/etcd-ca.pem --peer-trusted-ca-file=/K8s/etcd/ssl/etcd-ca.pem --logger=zap
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

EOF

5、启动集群各节点etcd服务

        此处需要注意的是,至少同时启动两个集群节点,否则会有集群节点连接失败的信息,导致集群启动失败。

        当集群无法正常启动时,可以使用命令“journalctl -xeu etcd.service”或者命令“journalctl -u etcd.service”查看启动失败的原因。

(1)、启动K8s-controller节点etcd服务

1)设置开机启动etcd服务

[root@K8s-controller ~]# systemctl enable etcd

2)启动etcd服务

[root@K8s-controller ~]# systemctl start etcd.service
[root@K8s-controller ~]# systemctl status etcd.service

[root@K8s-controller ~]# netstat -tnlp

(2)、启动K8s-node01节点etcd服务

1)设置开机启动etcd服务

[root@K8s-node01 ~]# systemctl enable etcd

2)启动etcd服务

[root@K8s-node01 ~]# systemctl start etcd.service
[root@K8s-node01 ~]# systemctl status etcd.service

[root@K8s-node01 ~]# netstat -tnlp

(3)、启动K8s-node02节点etcd服务

1)设置开机启动etcd服务

[root@K8s-node02 ~]# systemctl enable etcd

2)启动etcd服务

[root@K8s-node02 ~]# systemctl start etcd.service
[root@K8s-node02 ~]# systemctl status etcd.service

[root@K8s-node02 data]# netstat -tnlp

6、验证etcd集群状态

(1)、查看etcd集群健康状态

[root@K8s-controller ~]# ETCDCTL_API=3 etcdctl --cacert=/K8s/etcd/ssl/etcd-ca.pem --cert=/K8s/etcd/ssl/etcd-server.pem --key=/K8s/etcd/ssl/etcd-server-key.pem --endpoints="https://192.168.110.150:2379,https://192.168.110.151:2379,https://192.168.110.152:2379" endpoint health

由上可见,etcd三个集群节点状态均为健康。

(2)、查看etcd集群LEADER节点

[root@K8s-controller ~]# ETCDCTL_API=3 etcdctl -w table --cacert=/K8s/etcd/ssl/etcd-ca.pem --cert=/K8s/etcd/ssl/etcd-server.pem --key=/K8s/etcd/ssl/etcd-server-key.pem --endpoints="https://192.168.110.150:2379,https://192.168.110.151:2379,https://192.168.110.152:2379" endpoint status

由上可见,192.168.110.151节点(K8s-controller)为LEADER节点

http://www.dtcms.com/a/430964.html

相关文章:

  • Python常用三方模块——Pillow
  • 友情下载网站外贸cms建站
  • 976. 三角形的最大周长
  • 该怎么跟程序员谈做网站自己怎么免费做网站
  • 基于岗位需求的康体项目策划与设计实训室规划
  • 大理做网站哪家好大概多少钱
  • Nest 中使用Swagger自动化API文档生成
  • 融合:迈向 “一台计算机” 的终极架构
  • ai手诊面诊抖音快手微信小程序看广告流量主开源
  • 网页设计制作手机网站网站做了301怎么查看跳转前网站
  • 安卓基础组件018--第三方Image库
  • 25.60 秒计时器,仅使用 HTML 和 CSS | CSS SVG 动画
  • 网站推广工作计划乌市网络营销公司
  • 微信小程序入门学习教程,从入门到精通,微信小程序常用API(下)——知识点详解 + 案例实战(5)
  • iptables vs nftables
  • 5.网站滚动动画效果 | CSS 与 JavaScript
  • 国家精品课程建设工作网站优设网logo设计
  • 注册网站费用互动网页设计是什么
  • 千年游戏智慧:传承的密码
  • 云平台网站建设网站建设销售专业话术
  • 嵌入式八股文-ARM
  • 《CRM性能突围:从4秒卡顿到毫秒级响 应的全链路实战拆解》
  • 函数性质:命题中的抽象问题与具体构造
  • LDPC 码的密度进化(二)
  • python读取文件的常用操作
  • 怎样通过阿里巴巴网站开发客户上海搜索seo
  • Python基础训练
  • OSPF Full 状态 概念及题目
  • algorithm: DFS 示例及pseduocode及visited 5/999
  • 机器学习——聚类kmeans算法详解