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

k8s的高可用集群搭建,详细过程实战版

kubernetes高可用集群的搭建

前面介绍过了k8s单master节点的安装部署
今天介绍一下k8s高可用集群搭建

环境准备:
vip :192.168.121.99 keeplive
master01:192.168.121.153 centos7
master02:192.168.121.154 centos7
master03:192.168.121.155 centos7

机器环境先准备三台干净的主机,跟着我前面介绍的k8s部署做前面k8s部署的文章做
我的前一篇文章已经介绍的很详细了,所以我这里就不介绍前期的环境配置了
跟着做到如下位置
在这里插入图片描述
下面这个也要安装

yum install kubectl-1.26.3

然后前期的准备工作就差不多了
下面就是的k8s高可用集群和单机部署的区别
首先下载代理和高可用的工具

yum  install -y  haproxy   keepalived

然后编写haproxy的配置文件,记得修改自己的主机名
每个节点都一样的配置

vim /etc/haproxy/haproxy.cfg
globallog         127.0.0.1 local2chroot      /var/lib/haproxypidfile     /var/run/haproxy.pidmaxconn     4000user        haproxygroup       haproxydaemonstats socket /var/lib/haproxy/statsdefaultsmode                    tcplog                     globaloption                  httplogoption                  dontlognulloption http-server-closeoption forwardfor       except 127.0.0.0/8option                  redispatchretries                 3timeout http-request    10stimeout queue           1mtimeout connect         10stimeout client          1mtimeout server          1mtimeout http-keep-alive 10stimeout check           10smaxconn                 3000frontend    kube-apibind     :16443mode     tcpmaxconn  50000default_backend  kube-masterbackend  kube-masterbalance roundrobinserver  master1  192.168.121.153:6443  weight 1 check inter 5s rise 2 fall 3server  master2  192.168.121.154:6443  weight 1 check inter 5s rise 2 fall 3server  master3  192.168.121.155:6443  weight 1 check inter 5s rise 2 fall 3

然后到keepalived的配置

[root@node101 ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {router_id  server153vrrp_mcast_group4  224.5.5.5script_user  rootenable_script_security
}vrrp_script chklive {script  /etc/keepalived/chkhaproxy.shinterval 1weight  -3timeout  5
}vrrp_instance VI_1 {nopreemptstate     BACKUPinterface ens33priority  100virtual_router_id 51advert_int 3authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.121.99}track_script {chklive}
}

这里要记得修改两个地方,就是主机和虚拟VIP
在这里插入图片描述
然后就编写脚本监控haproxy的存活来实现vip的故障切换

vim /etc/keepalived/chkhaproxy.sh 
#! /bin/bashif ! netstat  -nlpt | grep -w "16443" &> /dev/null
thensystemctl  stop keepalived
fiexit 0

然后记得赋予脚本执行权限

chmod +x /etc/keepalived/chkhaproxy.sh 

然后配置文件就配置好了
接下来启动haproxy和keepalived

systemctl   enable  --now  haproxy
systemctl   enable  --now  keepalived

然后就查看启动情况

systemctl status haproxy keepalived

都启动以后,看vip在三台机子中的某一台就可以了

然后就开始初始化集群,
随便在哪一台机子上都行,只在一台机子上操作就可以了

kubeadm  init  --apiserver-advertise-address=192.168.121.153  --kubernetes-version=v1.26.3  --image-repository  registry.aliyuncs.com/google_containers  --cri-socket unix:///var/run/cri-dockerd.sock  --service-cidr=10.1.0.0/16 --pod-network-cidr=10.2.0.0/16 --token-ttl=0 --control-plane-endpoint "192.168.121.99:16443"  --upload-certs

和之前单节点集群的初始化有一点不同而已,原理都是差不多的
在这里插入图片描述
初始化完成以后就是这个样子的,然后我们去把另外两台主机也加进来

kubeadm join 192.168.121.99:16443 --token 99wnxp.kulhlbpbzes315zl --discovery-token-ca-cert-hash sha256:037bfd86aa3f0f7dd011e49a4d0c167195116f44ee3f56bfa165ce569fa80df5 --control-plane --certificate-key cdf7e38d13711c37c032732843639f313ade8b1b041d63f4665679f8eef1dd82 --cri-socket unix:///var/run/cri-dockerd.sock

有几台master节点就加几台,都是一样的操作,当然也是得规划好的,不然vip分不到
然后每个节点都执行下面得命令将环境变量设置一下

  mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config

然后随便在一台master节点都可以查询节点情况

[root@server153 ~]# kubectl get nodes
NAME        STATUS     ROLES           AGE     VERSION
server153   NotReady   control-plane   11m     v1.26.3
server154   NotReady   control-plane   5m55s   v1.26.3
server155   NotReady   control-plane   2m25s   v1.26.3

这样我们得k8s高可用集群就搭建好了
node节点加入得方式都是一样的,我的之前的博文介绍过了,网络配置也是,忘记了可以去看看
希望对大家有帮助

http://www.lryc.cn/news/238253.html

相关文章:

  • 【20年扬大真题】编写对数组求逆的递归算法
  • 日志门面slf4j与常用的日志框架Log4j,Logback和Log4j2
  • 使用ssh在本地环境(Windows)连接虚拟机以及其中的docker容器
  • 没收到Win11 23H2正式版的推送怎么升级到23H2
  • SpringBoot整合Redis使用基于注解的缓存
  • STM32:时钟树原理概要
  • Python量化--诺贝尔奖获得者布莱克-斯科尔斯期权定价公式在日间交易中的应用
  • Redis 5 种基本数据类型详解
  • LeetCode8-字符串转换整数(atoi)
  • 算法分析与设计课后练习22
  • 芯片IO口不加电阻会怎样?
  • 智慧化工园区信息化整体解决方案:PPT全53页,附下载
  • 深度学习之三(卷积神经网络--Convolutional Neural Networks,CNNs)
  • 竞赛选题 目标检测-行人车辆检测流量计数
  • 【链表的说明、方法---顺序表与链表的区别】
  • 彻底解决electron-builder安装问题与npm下载配置问题
  • 变量命名的规则与规范
  • 【开源】基于Vue和SpringBoot的服装店库存管理系统
  • 怎样用css画一个圆?
  • Minikube Mac安装使用
  • 人工智能-循环神经网络通过时间反向传播
  • Delphi 取消与设置CDS本地排序
  • 智能门禁刷脸照片格式gif、bmp,png转换,转换base64
  • 听GPT 讲Rust源代码--src/librustdoc
  • hosts 配置本地映射不生效
  • Linux难学?大神告诉你,Linux到底该怎么自学!
  • GAMES101—Lec 05~06:光栅化
  • R语言——taxize(第三部分)
  • 用于神经网络的FLOP和Params计算工具
  • CUDA核函数,如何设置grid和block即不超过大小又能够遍历整个volume