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

《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多masterharbor独立部署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,不管是直接与大模型交互&#xff0…...

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中…...

浅谈不同二分算法的查找情况

二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况&#xf…...

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 官方安…...