《Ansible自动化工具篇:ubuntu操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》

news2024/12/23 17:41:28

一、部署背景

由于业务系统的特殊性,我们需要针对不同的客户环境部署二进制版K8S集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了 基于ansible自动化工具一键远程离线部署进制版K8S集群

说明:如果有兴趣,可以从工具下载中获取下载链接,此工具可帮助你快速了解一个自动化部署工具是如何编写的?

二、工具下载

基于Ubutntu系统使用Ansible一键部署K8S1.24.12二进制集群自动化工具


三、工具介绍

1、工具说明

1、当前一键部署工具仅支持 X86_64架构 Ubuntu操作系统
2、支持 单机、一主多从、两主多从、三主多从等四种部署架构和六种部署模式的二进制K8S离线集群,且 证书有效期为99年
3、支持一键部署、启动、停止、检查、集群备份(etcd)、集群恢复(etcd)、集群移除等功能。
4、支持worker节点一键扩容和移除。
5、支持harbor私有镜像仓库。

说明:支持Centos系统正在开发中,同时后面也会开发出支持ARM架构的K8S二进制自动化部署工具,敬请期待!


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集群运维实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/784455.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytest 核心库 pluggy 详解

目录 前言: 代码案例 实例化: 添加到钩子定义中 (add_hookspecs): 注册插件 (register): 传递实现插件的实体类对象 运行插件 pm.hook.myhook(arg11, arg22):本质就是调用对象的call方法 前言: pytest 是一个广泛使用的自动化测试框架&#xff0c…

明星代言的益处:提升品牌价值与销售增长的有力策略

​在当今竞争激烈的商业世界中,企业为了脱颖而出,吸引更多目标消费者的关注,常常需要运用一系列巧妙的市场营销策略。而其中,明星代言无疑是一种备受瞩目的行之有效的手段。通过让明星成为产品或服务的代言人,企业能够…

freeBSD:(虚拟机和实体机)官网下载——安装

freebsdiso镜像获取 获取 FreeBSD | The FreeBSD Project 官网 根据你 计算机型号找对应的镜像,现在大部分都是amd64的 找寻你需要的镜像,我这里选择4g的镜像,点击即可下载 刻录u盘(虚拟机用户可以跳过) 这里我们使…

C# 存在重复元素

217 存在重复元素 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 示例 1: 输入:nums [1,2,3,1] 输出:true 示例 2: 输…

【100天精通python】Day14:python 标准模块,自定义模块

目录 1 python 模块 2 标准模块 2.1 常见的标准模块 2.2 标准模块的导入 3 自定义模块 3.1 创建模块 3.2 导入模块 3.2.1 使用import 语句导入模块 3.2.2 使用from... import 语句导入模块 3.2.3 导入模块的全部定义 3.2.4 导入两个包含同名函数的模块 模块与函数的…

【Docker】Docker持续集成与持续部署(四)

前言: Docker与持续集成/持续部署(CI/CD)的作用是通过容器化技术实现环境一致性、快速构建和隔离性,从而加快软件交付速度、提高部署效率,确保持续集成和持续部署的顺利实施。 持续集成(Continuous Integra…

chrome解决http自动跳转https问题

1.地址栏输入: chrome://net-internals/#hsts 2.找到底部Delete domain security policies一栏,输入想处理的域名,点击delete。 3.再次访问http域名不再自动跳转https了。

1.项目需求-项目实现

1.项目需求-项目实现代码是依次迭代的 慢慢增加。 密码只能输入整数,密码一般用字符串,用户名和密码都用字符串实现 需要头文件 不识别内容 string需要头文件。c头文件里没有.h #include string 是c特有的类型。 总结:string 是c特有的类型…

【冷冻电镜】InSilicoTEM 使用手册

简介 InSilicoTEM是一个用来模拟生成冷冻电镜显微图像的软件,原论文是"Image formation modeling in cryo-electron microscopy"。 该软件基DIPImage和MATLAB开发。 (注:在GitHub上的代码,只适用于DIPImage2.9以及更早…

C# 父类实现的 IEquatable<T> 接口,重写的相等性判断函数都能被子类继承

实验代码 Son s1 new(), s2 new();Console.WriteLine("_ s1 s2"); _ s1 s2; Console.WriteLine();Console.WriteLine("_ s1 ! s2;"); _ s1 ! s2; Console.WriteLine();Console.WriteLine("_ s1.Equals(s2);"); _ s1.Equals(s2); Cons…

华为数通HCIP-BGP基础

AS(自治系统/路由域) 定义:运行相同路由协议,具有相同管理规则的区域(一般为一个企业网); 按照传递路由时是否携带掩码分类: 1、有类路由协议 路由传递时,无需携带掩…

linux下的tomcat

springboot项目端口是8080,部署到linux运行之后,为什么能检测到tomcat 手动安装tomcat,以下是在 Linux 系统上安装 Tomcat 的步骤: 下载 Tomcat 安装包。您可以从 Tomcat 官方网站(https://tomcat.apache.org/ ↗&…

Bagging方法6大面试热点问题

Q1:为什么Bagging算法的效果比单个评估器更好? 该问题其实是在考察Bagging方法降低模型泛化误差的基本原理。 泛化误差是模型在未知数据集上的误差,更低的泛化误差是所有机器学习/深度学习建模的根本目标。在机器学习当中,泛化误差…

python获取图片坐标系中的图形,将其展示到新的坐标系中,并存储到excel中

python获取图片坐标系中的图形,将其展示到新的坐标系中,并存储到excel中 1.原始图片 2.重新定义转换的图片 3.代码展示 import cv2 import numpy as np import matplotlib.pyplot as plt import pandas as pddef get_curve_vertices(lines):vertices…

【文末送书】Python高并发编程:探索异步IO和多线程并发

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。搜…

RISC-V汇编指令

写在最前面:这一篇是UC Berkeley的CS61C的笔记,根据我自己的理解进行学习记录,其中贴的一些图片来自于课程PPT。 了解汇编之前,我们需要先了解为什么需要汇编?以下是我的理解: 机器执行的命令都是些二进制…

六边形架构和分层架构的区别?

六边形架构和分层架构是什么? 六边形架构(Hexagonal Architecture)和分层架构(Layered Architecture)是两种常见的软件架构模式。六边形架构强调将核心业务逻辑与外部依赖解耦,通过接口与外部世界进行通信。…

hcip mgre与rip实验

要求: 1.toop搭建 2.IP地址规划 R1g 0/0/1 192.168.1.1 24 s 4/0/0 188.0.0.2 24 t:10.0.0.1 24R2 s 4/0/0 188.0.0.1 24 s 4/0/1 188.0.1.1 24 s 3/0/0 188.0.2.1 24 loop0 8.8.8.8 24 t:10.0.0.2 24 R3g…

本地 IDC 中的 K8s 集群如何以 Serverless 方式使用云上计算资源

作者:庄宇 在前一篇文章《应对突发流量,如何快速为自建 K8s 添加云上弹性能力》中,我们介绍了如何为 IDC 中 K8s 集群添加云上节点,应对业务流量的增长,通过多级弹性调度,灵活使用云上资源,并通…

Python自动化测试框架pytest的详解安装与运行

这篇文章主要为大家介绍了Python自动化测试框架pytest的简介以及安装与运行,有需要的朋友可以借鉴参考下希望能够有所帮助,祝大家多多进步 1. pytest的介绍 pytest是一个非常成熟的全功能的python测试工具,它主要有以下特征: 简…