当前位置: 首页 > 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节点加入得方式都是一样的,我的之前的博文介绍过了,网络配置也是,忘记了可以去看看
希望对大家有帮助

相关文章:

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

kubernetes高可用集群的搭建 前面介绍过了k8s单master节点的安装部署 今天介绍一下k8s高可用集群搭建 环境准备: vip :192.168.121.99 keeplive master01:192.168.121.153 centos7 master02:192.168.121.154 centos7 master03&a…...

【20年扬大真题】编写对数组求逆的递归算法

【20年扬大真题】 编写对数组求逆的递归算法 void swap(int* a, int* b) {int tmp *b;*b *a;*a tmp; } void Ni(int arr[],int left,int right) {if (left > right) {return;}swap(&arr[left], &arr[right]);Ni(arr, left 1, right - 1); } int main() {int ar…...

日志门面slf4j与常用的日志框架Log4j,Logback和Log4j2

slf4j 是众多日志框架接口的集合(俗称日志门面),它不负责具体的日志实现,只在编译时负责寻找合适的日志框架进行绑定,各日志框架通过扩展jar包中的适配器与slf4j建立适配 SLF4J可以和Log4j、Logback、Log4j2、JUL等日志框架配合使用,这里主要…...

使用ssh在本地环境(Windows)连接虚拟机以及其中的docker容器

配置虚拟机防火墙 防火墙的一系列操作需要root权限,默认是没有root密码的,所以首先需要设置root密码: sudo passwd root按提示完成root密码设置 切换到root账户 su root启用22端口并重启防火墙 firewall-cmd --permanent --add-port22/tc…...

没收到Win11 23H2正式版的推送怎么升级到23H2

没收到Win11 23H2正式版的推送怎么升级到23H2?用户反映自己没有收到Win11 23H2正式版的更新推送,又想升级为23H2版本。接下来小编给大家详细介绍不同的升级方法,帮助更多的用户完成Win11 23H2系统的更新,升级后就能体验到Win11 23…...

SpringBoot整合Redis使用基于注解的缓存

环境准备 注解 EnableCaching CacheConfig CacheConfig 提供了一种在类级别共享公共缓存相关设置的机制。 | 参数 | 作用 | | | — | — | — | | cacheNames | 使用在类上的默认缓存名称 | | | keyGenerator | 用于类的默认KeyGenerator的bean名称 | | | cacheManager | 自定…...

STM32:时钟树原理概要

在一般情况下只要在CubeIDE中将RCC下的高速时钟源设置成晶振,随后在时钟配置中把HCLK设置到最大频率(比如STM32F103的最高频率是72MHZ ),CubeIDE就会帮我们自动调节其它参数到合适的值。这样我们芯片就可以全速运行了。 一、时钟信…...

Python量化--诺贝尔奖获得者布莱克-斯科尔斯期权定价公式在日间交易中的应用

“我们不能让你在不了解一点期权定价基础知识的情况下离开麻省理工学院,”Andrew Lo 教授在麻省理工学院的 15.401 金融理论课上对学生们说道。虽然我还不是麻省理工学院的学生,但这句话给了我一个直觉:期权定价一定极其重要。由于像麻省理工学院毕业生这样的精英金融人士都…...

Redis 5 种基本数据类型详解

Redis 共有 5 种基本数据类型:String(字符串)、List(列表)、Set(集合)、Hash(散列)、Zset(有序集合)。 这 5 种数据类型是直接提供给用户使用的&…...

LeetCode8-字符串转换整数(atoi)

目录 1.大神解法2.我的辣鸡解法:3.整数相加的溢出判断(chaGPT代码)4.整数相乘溢出判断(chatGPT代码) 到目前为止比较简单容易理解的一个代码: 参考链接: 🔗:【8. 字符串转换整数 String to Integer (atoi) 【LeetCode 力扣官方题解】-哔哩哔哩】 1.大神解法 累乘和…...

算法分析与设计课后练习22

设W(5,7,10,12,15,18,20)和M35,使用过程SUMOFSUB找出W种使得和数等于M的全部子集并画出所生成的部分状态空间树...

芯片IO口不加电阻会怎样?

芯片IO口不加电阻会怎样? 可能会导致以下几个后果: 1.高电流问题,IO口没有电阻限流,当与外部设备直接连接时,就可能会导致过大的电流流过IO口,这就可能损坏IO口,引起短路或烧坏其它电路组件。像…...

智慧化工园区信息化整体解决方案:PPT全53页,附下载

关键词:智慧化工园区建设方案,智慧化工园区建设规范,智慧化工园区建设指南 一、售智慧化工园区建设背景 随着工业化、信息化和数字化进程的加速,化工园区面临着越来越多的挑战,如安全生产、环境保护、能源消耗等问题…...

深度学习之三(卷积神经网络--Convolutional Neural Networks,CNNs)

概念 卷积神经网络(Convolutional Neural Networks,CNNs)是一种特殊的神经网络结构,专门用于处理具有网格状结构(如图像、音频)的数据。CNN 在计算机视觉领域取得了巨大成功,广泛应用于图像识别、物体检测、图像生成等任务。以下是 CNN 的主要理论概念: 在数学中,卷…...

竞赛选题 目标检测-行人车辆检测流量计数

文章目录 前言1\. 目标检测概况1.1 什么是目标检测?1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 前言 🔥 优质竞赛项目系列,今天要分享的是 行人车辆目标检测计数系统 …...

【链表的说明、方法---顺序表与链表的区别】

文章目录 前言什么是链表链表的结构带头和不带头的区别 链表的实现(方法)遍历链表头插法尾插法任意位置插入一个节点链表中是否包含某个数字删除链表某个节点删除链表中所有关键字key清空链表所有节点 ArrayList 和 LinkedList的区别总结 前言 什么是链…...

彻底解决electron-builder安装问题与npm下载配置问题

electron-builder这个工具每次安装最少要耗费我整整一天的时间。由于只需安装一次即可使用就没去做好笔记,但有时候涉及到更新,或者换了新电脑,这个环境还得重新安装。为了避免下次安装浪费一整天时间,特此做好笔记。 虽然网上找了很多资料但都不详细,现在我们从底层来理解…...

变量命名的规则与规范

变量命名的规则与规范 变量命名的规则不能使用关键字字母须区分大小写由字母、数字、_、$组成,且不能以数字开头 变量命名的规范起名须有一定的意义遵守小驼峰命名法 变量命名的规则 不能使用关键字 在JavaScript中声明变量不能使用JavaScript的常用关键字&#x…...

【开源】基于Vue和SpringBoot的服装店库存管理系统

项目编号: S 052 ,文末获取源码。 \color{red}{项目编号:S052,文末获取源码。} 项目编号:S052,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 服…...

怎样用css画一个圆?

要使用 CSS 画一个圆,可以使用 border-radius 属性为一个元素添加圆角,将 width 和 height 设置为相等的值,从而形成一个圆形。 以下是一个使用 CSS 画圆的简单示例: .circle {width: 100px;height: 100px;background-color: #3…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...