《Ansible自动化工具篇:Centos操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》
一、部署背景
由于业务系统的特殊性,我们需要针对不同的客户环境部署二进制版K8S集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了 基于ansible自动化工具一键远程离线部署进制版K8S集群。
说明:如果有兴趣,可以从工具下载中获取下载链接,此工具可帮助你快速了解一个自动化部署工具是如何编写的?
二、工具下载
基于Centos系统使用Ansible一键部署K8S1.24.12二进制集群自动化工具
三、工具介绍
1、工具说明
1、当前一键部署工具仅支持 X86_64架构的 Centos操作系统。
2、支持 单机、一主多从、两主多从、三主多从等四种部署架构和六种部署模式的二进制K8S离线集群,且 证书有效期为99年。
3、支持一键部署、启动、停止、检查、集群备份(etcd)、集群恢复(etcd)、集群移除等功能。
4、支持worker节点一键扩容和移除。
5、支持harbor私有镜像仓库。
2、架构介绍
| 名称 | 单master | 多master | harbor独立部署 | etcd独立部署 | 模式 | 说明 |
|---|---|---|---|---|---|---|
| node1 | 是 | - | 是 | 否(单机) | 单机模式 | 仅只需要2台服务器 |
| node2 | 是 | - | 是 | 否(单机) | 一主多从集群模式一 | 至少需要3台服务器 |
| node3 | 是 | - | 是 | 是(单机) | 一主多从集群模式二 | 至少需要4台服务器 |
| node4 | - | 是 | 是 | 是(集群) | 两主多从高可用模式 | 至少需要9台服务器 |
| node5 | - | 是 | 是 | 否(集群) | 三主多从高可用模式一 | 至少需要7台服务器 |
| node6 | - | 是 | 是 | 是(集群) | 三主多从高可用模式二 | 至少需要10台服务器 |
说明:harbor独立部署是指额外使用1台服务器部署harbor镜像仓库。etcd独立部署是指部署在非master节点主机上。etcd非独立部署是指部署在master节点上。
3、工具说明
目录结构如下所示:
drwxr-xr-x 3 root root 4096 Jul 24 17:20 ansible/
drwxr-xr-x 3 root root 4096 Jul 24 17:41 cluster/
drwxr-xr-x 8 root root 4096 Jul 21 15:05 example/
drwxr-xr-x 11 root root 4096 Jul 21 14:53 images/
-rwxr-xr-x 1 root root 30659 Jul 21 14:53 op.sh*
drwxr-xr-x 8 root root 4096 Jul 21 14:53 playbooks/
-rwxr-xr-x 1 root root 25639 Jul 25 10:28 README.txt*
drwxr-xr-x 17 root root 4096 Jul 21 14:53 roles/
目录说明如下所示:
#1、ansible目录:存放ansible工具rpm包目录,可一键安装ansible
#2、cluster目录:存放hosts文件和config.yml文件目录,主要配置服务器信息及K8S二进制集群配置信息
#3、example目录:存放hosts文件和config.yml模板文件
#4、images目录:存放K8S二进制集群镜像文件及二进制文件
#5、op.sh:主控脚本
#6、playbooks:K8S二进制集群部署的剧本文件
#7、README.txt:帮助文档
#8、roles目录:K8S二进制集群部署的角色文件
说明:详细的操作,请参考README.txt文件。
四、部署步骤
说明:由于篇幅有限,这里以node6模式为例,像大家介绍K8S二进制高可用集群部署步骤!

1、生成hosts文件和config.yml文件

2、编辑hosts文件

3、编辑config.yml文件
root@k8s-master-101:/opt/kubernetes-tools# vim cluster/node6/config.yml
# --------------------------------------------------------------------------------------------------- #
# 宿主机最大磁盘空间分区下目录,比如说"/"分区下空间最大,就在"/"分区下创建一个data目录,可根据实际情况修改
MAX_SPACE_DIR: "/data"# 部署架构类型: three-master-cluster-out-etcd表示三主多从集群模式二,默认不修改
CLUSTER_TYPE: "three-master-cluster-out-etcd"# kubernetes工作目录,主要用来存放离线镜像及其它部署相关文件,默认不修改
KUBE_WORK_DIR: "{{ MAX_SPACE_DIR }}/pkgs/kube-tools"# Binaries Directory,默认不修改
BIN_DIR: "/opt/kube/bin"
# --------------------------------------------------------------------------------------------------- #
# Secure port for apiservers,端口不冲突情况下,默认不修改
SECURE_PORT: "6443"# [containerd]基础容器镜像,默认不修改
SANDBOX_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7"# [coredns]基础容器镜像,默认不修改
COREDNS_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.6"# [containerd]容器持久化存储目录,默认不修改
CONTAINERD_STORAGE_DIR: "{{ MAX_SPACE_DIR }}/basic-data/containerd"# K8S Service CIDR, not overlap with node(host) networking,可根据实际情况修改
SERVICE_CIDR: "10.96.0.0/16"# Cluster CIDR (Pod CIDR), not overlap with node(host) networking,可根据实际情况修改
CLUSTER_CIDR: "10.48.0.0/16"# NodePort Range,可根据实际情况修改
NODE_PORT_RANGE: "30000-32767"# Cluster DNS Domain,默认不修改
CLUSTER_DNS_DOMAIN: "cluster.local"# CA and other components cert/key Directory,默认不修改
CA_DIR: "/etc/kubernetes/pki"# node节点最大pod数,默认不修改
MAX_PODS: 110# Kubelet 根目录,默认不修改
KUBELET_ROOT_DIR: "/var/lib/kubelet"# Kube-proxy 根目录,默认不修改
KUBE_PROXY_ROOT_DIR: "/var/lib/kube-proxy"# [calico] 隧道模式可选项有: [Always, Never],Always表示IPIP模式,Never表示开启BGP模式,],默认不修改
CALICO_IPV4POOL_IPIP: "Never"# 默认的IP自动检测方法是first-found,calico会从部署节点路由中获取到达目的ip或者域名的源ip],默认不修改
IP_AUTODETECTION_METHOD: "can-reach={{ groups['kube_master'][0] }}"# [calico]设置calico 网络backend模式可选项有:[brid, vxlan],默认不修改
CALICO_NETWORKING_BACKEND: "brid"# etcd 数据目录,默认不修改
ETCD_DATA_DIR: "/var/lib/etcd"
# --------------------------------------------------------------------------------------------------- #
# harbor变量
# [docker]容器存储目录,默认不修改
DOCKER_STORAGE_DIR: "{{ MAX_SPACE_DIR }}/basic-data/docker"# harbor主机域名地址,可根据实际情况修改
HARBOR_DOMAIN: "my.harbor.com"# harbor http端口,端口不冲突情况下,默认不修改
HARBOR_HTTP_PORT: 9000# harbor https端口,端口不冲突情况下,默认不修改
HARBOR_TLS_PORT: 8443# harbor仓库地址,默认不修改
HARBOR_REGISTRY: "{{HARBOR_DOMAIN}}:{{HARBOR_TLS_PORT}}"# harbor web平台管理用户admin密码,可根据实际情况修改
HARBOR_ADMIN_PASSWORD: "NEoCN0YjdGr"# [harbor]数据存储目录,默认不修改
HARBOR_DATA_DIR: "{{ MAX_SPACE_DIR }}/basic-data/harbor"
# --------------------------------------------------------------------------------------------------- #
4、查看部署帮助信息

5、执行部署操作

部署结果,如下图所示:

harbor主机手动执行,如下图所示:

K8S集群状态,如下图所示:

总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:企业级K8s集群运维实战
相关文章:
《Ansible自动化工具篇:Centos操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》
一、部署背景 由于业务系统的特殊性,我们需要针对不同的客户环境部署二进制版K8S集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了 基于a…...
Java实现十大经典排序算法之快速排序
0 算法简介 快速排序是一种高效率排序算法,它是对冒泡排序的一种改进,它也是一种不稳定排序算法。快速排序的核心是比较、交换和递归。 在待排序数组中指定一个基准元素pivot(一般选取数组首元素),使得数组排序之后基…...
【0803作业】创建两个线程:其中一个线程拷贝图片的前半部分,另一个线程拷贝后半部分(4种方法)
方法一:使用pthread_create、pthread_exit、pthread_join函数【两个线程不共用同一份资源】 先在主函数创建并清空拷贝的目标文件,再创建两个线程,在两个线程内部同时打开要读取的文件以及要拷贝的目标文件(两个线程不共用同一份资…...
php运算符的短路特性
php运算符的短路特性 1、逻辑运算符:逻辑与(&&)和逻辑或(||),存在着短路特性 PHP中有以下两个运算符具有短路的特性,他们是逻辑运算符的逻辑与(&&)和逻辑或(||&am…...
C语言假期作业 DAY 13
一、选择题 1、如果 x2014 ,下面函数的返回值是( ) int fun(unsigned int x) { int n 0; while(x 1) { n; x x | (x 1); } return n; } A: 20 B: 21 C: 23 D 25 答案解析 正确答案:C 这个作用是对整型中0的个数进行统计&…...
以产品经理的角度去讲解原型图---会议OA项目
目录 一.前言 二.原型图 2.1 原型图是什么 3.1 原型图的作用 三.演示讲解 3.1 项目背景 3.2 项目介绍 3.2.1 会议管理(会议的发起,通知) 3.2.2 投票管理(会议的流程重大决策记录) 3.2.3 会议室管理 3.2.4 系统管…...
C++ 外部变量和外部函数
1.外部变量 如果一个变量除了在定义它的源文件中可以使用外,还能被其他文件使用,那么就称这个变量为外部变量。命名空间作用域中定义的变量,默认情况下都是外部变量,但在其他文件中如果需要使用这一变量,需要用extern…...
C# Onnx Paddle模型 OCR识别服务
效果 项目 可运行程序exe下载 Demo(完整源码)下载...
MCUXpresso for VS Code -- 基于VSCode开发RT1176
MCUXpresso for VS Code 是nxp推出插件,旗下MCX LPC, Kinetis和i.MX rt等MCU,都能在VS Code平台进行嵌入式开发。功能框图如下: 前期准备: 软件环境: windows(实际可以跨系统,linux和mac没有测试) VS Code ninja CMa…...
MySQL的使用——【初识MySQL】第二节
MySQL的使用——【初识MySQL】第二节 文章目录 MySQL环境变量的配置(如使用Navicat可忽略)使用命令行连接MySQL(如使用Navicat可忽略)步骤注意 NavicatNavicat的下载Navicat的使用连接MySQL新建表 总结总结 MySQL环境变量的配置&a…...
MySQL最终弹-并发(脏读,不可重复读,幻读及区别),JDBC的使用和安装,最全万字
一、💛并发基本概念 并发的基本意思: 什么是并发呢?简单的理解就是同一时间执行 服务器同一时刻,给多个客户端提供服务~~,这两个客户端都可以给服务器提交事务。 如果提交两个事务,改…...
⌈C++⌋从无到有了解并掌握C++面向对象三大特性——封装、继承、多态
前置知识:类和对象 参考书籍:《C Primer 第五版》 目录 什么是面向过程?什么是面向对象? 一、封装 1、封装的含义以及如何实现封装 1.1 访问限定符(访问说明符) 1.2 什么是封装? 2、封装的优点…...
Element的el-select下拉框多选添加全选功能
先看效果图 全选: 没有选中时: 选中部分: 作者项目使用的是vue3写法,如果是vue2的自己转换一下 html代码: js代码: 拓展 另一种方法,如果不想使用勾选框,可以试试下面的方…...
python调用pytorch的clip模型时报错
使用python调用pytorch中的clip模型时报错:AttributeError: partially initialized module ‘clip’ has no attribute ‘load’ (most likely due to a circular import) 目录 现象解决方案一、查看项目中是否有为clip名的文件二、查看clip是否安装成功 现象 clip…...
MySQL 数据库 binLog 日志的使用
一、概念与作用 binlog(二进制日志)是MySQL数据库中的一种日志类型。它记录了数据库中的所有更改操作,例如插入、更新、删除操作。binlog以二进制形式存储,因此可以更高效地进行读取和解析。 binlog通常用于以下几个方面&#x…...
Apache Storm入门介绍之三分钟看懂Apache Storm
文章目录 0.前言1. 什么是 Apache Storm?1.1. Nimbus1.2. Zookeeper1.3. Supervisor1.4. Worker1.5 集群模式下各组件职责 2. 核心概念2.1基本架构和任务模型2.2 工作流程 3. 源码地址3.1. 代码结构3.1. 核心模块介绍 4. Storm入门实例0.创建java工程并引入依赖1. 创…...
RF手机天线仿真介绍(三):调谐开关分析
目录 简介调谐开关RON、COFF的影响分析不同位置的调谐器件coff影响分析不同位置的调谐器件Ron影响分析Coff引起谐振的解决示例 调谐开关VPEAK分析调谐开关Vpeak示例 简介 孔径调谐能调节天线的电长度,可将其谐振点切换到所需支持的工作频段。天线孔径调谐器通过改变…...
Ubuntu20.04 + QT5.14.2 + VTK8.2.0 + PCL 1.10 环境配置
目录 Ubuntu20.04 QT5.14.2 VTK8.2.0 PCL 1.10 环境配置一、VTK 编译和安装1、库依赖:2、下载资源:[下载VTK8.2.0](https://www.vtk.org/files/release/8.2/VTK-8.2.0.tar.gz)3、编译:4、安装5、qtcreator 配置编译的libQVTKWidgetPlugin.…...
GPT Prompt编写的艺术:如何提高AI模型的表现力
随着AI技术的迅速发展,人工智能模型变得越来越强大,能够协助我们完成各种任务。然而,如何更好地利用AI的能力仍然存在很大的探索空间。在与AI进行交互的过程中,我们主要依赖于Prompt,不管是直接与大模型交互࿰…...
Ubuntu18.04 安装opencv 4.8.0教程(亲测可用)
1. 安装准备 安装前需要下载一些必须的依赖项。 不同版本opencv依赖会有不同,具体见官网opencv安装 sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
