K8S高可用集群部署

准备环境

软件环境:

软件

版本

操作系统

CentOS7.8_x64 (mini)

Docker

20-ce

Kubernetes

1.25

服务器整体规划:

角色

IP

其他单装组件

k8s-master1

192.168.1.71

docker,etcd,nginx,keepalived

k8s-master2

192.168.1.72

docker,etcd,nginx,keepalived

k8s-node1

192.168.1.73

docker,etcd

负载均衡器对外IP

192.168.1.88 (VIP)

架构图:

K8S高可用集群部署_linux_02

nbsp;    Nginx是一个主流Web服务和反向代理服务器,这里用四层实现对apiserver实现负载均衡。

nbsp;    Keepalived是一个主流高可用软件,基于VIP绑定实现服务器双机热备,在上述拓扑中,Keepalived主要根据Nginx运行状态判断是否需要故障转移(偏移VIP),例如当Nginx主节点挂掉,VIP会自动绑定在Nginx备节点,从而保证VIP一直可用,实现Nginx高可用。

注:为了节省机器,这里与K8s master节点机器复用。也可以独立于k8s集群之外部署,只要nginx与apiserver能通信就行。

安装软件包(主/备)

keepalived配置文件(Nginx Master)

nbsp;    vrrp_script:指定检查nginx工作状态脚本(根据nginx状态判断是否故障转移)

nbsp;    virtual_ipaddress:虚拟IP(VIP)

准备上述配置文件中检查nginx运行状态的脚本:

注:keepalived根据脚本返回状态码(0为工作正常,非0不正常)判断是否故障转移。

启动并设置开机启动

查看keepalived工作状态

Nginx+Keepalived高可用测试

闭主节点Nginx,测试VIP是否漂移到备节点服务器。

在Nginx Master执行 pkill nginx 在Nginx Backup,ip addr命令查看已成功绑定VIP。

部署Etcd集群

如果你在学习中遇到问题或者文档有误可联系阿良~ 微信: k8init

Etcd 是一个分布式键值存储系统,Kubernetes使用Etcd进行数据存储,kubeadm搭建默认情况下只启动一个Etcd Pod,存在单点故障,生产环境强烈不建议,所以我们这里使用3台服务器组建集群,可容忍1台机器故障,当然,你也可以使用5台组建集群,可容忍2台机器故障。

节点名称

IP

etcd-1

192.168.1.71

etcd-2

192.168.1.72

etcd-3

192.168.1.73

注:为了节省机器,这里与K8s节点机器复用。也可以独立于k8s集群之外部署,只要apiserver能连接到就行。

准备cfssl证书生成工具

fssl是一个开源的证书管理工具,使用json文件生成证书,相比openssl更方便使用。

找任意一台服务器操作,这里用Master节点。

生成Etcd证书

自签证书颁发机构(CA)

创建工作目录:

自签CA:

生成证书:

会生成ca.pem和ca-key.pem文件。

使用自签CA签发Etcd HTTPS证书

创建证书申请文件:

注:上述文件hosts字段中IP为所有etcd节点的集群内部通信IP,一个都不能少!为了方便后期扩容可以多写几个预留的IP。

生成证书:

从Github下载二进制文件

下载地址:https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd-v3.4.9-linux-amd64.tar.gz

部署Etcd

 创建工作目录并解压二进制包

创建etcd配置文件

nbsp;    ETCD_NAME:节点名称,集群中唯一

nbsp;    ETCD_DATA_DIR:数据目录

nbsp;    ETCD_LISTEN_PEER_URLS:集群通信监听地址

nbsp;    ETCD_LISTEN_CLIENT_URLS:客户端访问监听地址

nbsp;    ETCD_INITIAL_ADVERTISEPEERURLS:集群通告地址

nbsp;    ETCD_ADVERTISE_CLIENT_URLS:客户端通告地址

nbsp;    ETCD_INITIAL_CLUSTER:集群节点地址

nbsp;    ETCD_INITIAL_CLUSTER_TOKEN:集群Token

nbsp;    ETCD_INITIAL_CLUSTER_STATE:加入集群的当前状态,new是新集群,existing表示加入已有集群

systemd管理etcd

拷贝刚才生成的证书

把刚才生成的证书拷贝到配置文件中的路径:

启动并设置开机启动

来源:弓长三虎

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年11月4日
下一篇 2022年11月4日

相关推荐