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

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
global
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    stats socket /var/lib/haproxy/stats

defaults
    mode                    tcp
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend    kube-api
   bind     :16443
   mode     tcp
   maxconn  50000
   default_backend  kube-master

backend  kube-master
    balance roundrobin
    server  master1  192.168.121.153:6443  weight 1 check inter 5s rise 2 fall 3
    server  master2  192.168.121.154:6443  weight 1 check inter 5s rise 2 fall 3
    server  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  server153
   vrrp_mcast_group4  224.5.5.5
   script_user  root
   enable_script_security
}

vrrp_script chklive {
    script  /etc/keepalived/chkhaproxy.sh
    interval 1
    weight  -3
    timeout  5
}

vrrp_instance VI_1 {
    nopreempt
    state     BACKUP
    interface ens33
    priority  100
    virtual_router_id 51

    advert_int 3
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.121.99
    }

    track_script {
        chklive
    }
}

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

vim /etc/keepalived/chkhaproxy.sh 
#! /bin/bash

if ! netstat  -nlpt | grep -w "16443" &> /dev/null
then
    systemctl  stop keepalived
fi

exit 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/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo 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.kler.cn/news/136282.html

相关文章:

  • 博客搭建之路:hexo增加搜索功能
  • 读《认知觉醒》:浅谈费曼技巧
  • bluez hid host介绍,连接键盘/鼠标/手柄不是梦,安排
  • 383. 赎金信 C#实现
  • 植物健康,Spring Boot来助力
  • 聚类分析算法——DBSCAN(密度聚类)算法详解
  • 原型模式-C++实现
  • 《崩坏:星穹铁道》1.5仙舟罗浮-绥园全宝箱攻略
  • 【Linux】软连接和硬链接:创建、管理和解除链接的操作
  • Flutter 中数据存储的四种方式
  • 机器学习笔记 - Ocr识别中的CTC算法原理概述
  • JVM:内存模型、内存分配机制、内存分配冲突、JVM垃圾标记算法、JVM1.8增加元数据区缘由
  • python中sklearn库在数据预处理中的详细用法,及5个常用的Scikit-learn(通常简称为 sklearn)程序代码示例
  • 机器学习第8天:SVM分类
  • 创新工具 | 教你6步用故事板设计用户体验事半功倍
  • 【计算机网络笔记】路由算法之链路状态路由算法
  • 集合的自反关系和对称关系
  • Wireshark 截取指定端口海量包分析
  • 【Spring Boot】如何集成Redis
  • 【心得】基于flask的SSTI个人笔记
  • Oracle 数据库中 查询时如何使用日期(时间)作为查询条件
  • 使用Python的turtle模块绘制玫瑰花图案(含详细Python代码与注释)
  • C++二分查找算法:132模式枚举3简洁版
  • IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Maven依赖管理,版本号管理,继承和聚合
  • 软件测试/测试开发/人工智能丨基于Spark的分布式造数工具:加速大规模测试数据构建
  • Wireshark抓包:理解TCP三次握手和四次挥手过程