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

2023-11-18

一、部署背景

由于业务系统的特殊性,我们需要针对不同的客户环境部署二进制版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集群运维实战

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • jmeter+maven

    1 创建maven Project jmeter test 2 文件 1 src test目录下创建jmeter文件 2 src test jmeter目录下创建xx项目名文件 3 xxx jmx 脚本文件及依赖文件 放在src test
  • ajax post微信接口,微信小程序的ajax数据请求wx.request介绍

    微信小程序的ajax数据请求wx request介绍 微信小程序的ajax数据请求 很多同学找不到api在哪个位置 这里单独把小程序的ajax请求给列出来 微信小程序的请求就是wx request这个api wx request 一些对象参
  • 语音增强技术

    我的书 淘宝购买链接 当当购买链接 京东购买链接 在人机交互的场景中 麦克风采集到的人声不可避免的混杂外界噪声 可以通过信号处理的方法在处理前将其去除 以获得 纯净 的语音信号 这一过程称为降噪或者语音增强 从麦克风数量上分为单麦克降噪 多
  • C++程序员视角下的Rust语言

    自上世纪80年代初问世以来 C 就是一门非常重要的系统级编程语言 到目前为止 仍然在很多注重性能 实时性 偏硬件等领域发挥着重要的作用 C 和C一样 可以通过指针直接操作内存 这给了程序员的编程提供了相当大的自由度 但指针就是一把双刃剑 给
  • Spring控制反转和依赖注入的好处

    要了解控制反转 Inversion of Control 我觉得有必要先了解软件设计的一个重要思想 依赖倒置原则 Dependency Inversion Principle 什么是依赖倒置原则 假设我们设计一辆汽车 先设计轮子 然后根据轮
  • Leetcode刷题316. 去除重复字母

    给你一个字符串 s 请你去除字符串中重复的字母 使得每个字母只出现一次 需保证 返回结果的字典序最小 要求不能打乱其他字符的相对位置 注意 该题与 1081 https leetcode cn com problems smallest s
  • 1144. 递减元素使数组呈锯齿状

    1144 递减元素使数组呈锯齿状 题目描述 给你一个整数数组 nums 每次 操作 会从中选择一个元素并 将该元素的值减少 1 如果符合下列情况之一 则数组 A 就是 锯齿数组 每个偶数索引对应的元素都大于相邻的元素 即 A 0 gt A
  • 巧用Maya轴心操作技巧,让工作事半功倍!

    Maya 是一款专业的三维软件 可以用于创建规模宏大的世界 复杂的角色和炫酷的特效 Maya的用户遍布动画行业 影视特效 广告和片头 平面设计行业 用户数量十分庞大 本文分享了maya轴心操作的小技巧 让设计师工作事半功倍 一起来看看吧 一
  • EOFError: end of file reached

    logstash config email have error 2018 06 13T18 26 21 299 ERROR logstash outputs email Something happen while delivering
  • C/C++语言中字符串多行书写方法

    在C C 语言中 可能我们要书写的一个字符串太长了 放在一行上影响代码的可读性 这时我们就需要多行书写了 字符串多行书写有两种方法 在字符串换行处加一个反斜杠 下一行前不能有空格或者Tab键 使用双引号 程序示例 01 02 Introdu
  • Python求解,汉诺塔问题(附原代码和注释)

    def hanoi n a b c if n 1 print a gt c 最终目标是把A处移到C处 else hanoi n 1 a c b 把A处上层的n 1个移动到B处 此时A处即为A处 B处即为目标终点C hanoi 1 a b c
  • 性能测试工具 Locust

    目录 1 Locust的特点 2 脚本编写 class HttpLocust Locust class TaskSet 发出 HTTP 请求 使用 HTTP client 手动控制请求是成功还是失败 3 脚本增强 关联 参数化 检查点 断言
  • Android HAL 层框架分析(一)

    作为一个搞android驱动或者说搞底层的人 我觉得对于hal那是必须要掌握的 而且必须达到一定深度 于是我总结了一下 将整个自己的分析思路写下来 主要是看android源代码 根据源代码得到的思路 看源代码比看什么著作书籍都管用 andr
  • 封装

    1 生活中封装 快递 外卖 电脑机箱 2 java中封装 隐藏类内部的细节 对外部提供一些访问细节的方法 3 封装例子 方法 类 属性 4 封装好处 提高代码复用性 提高代码安全性 提高代码易用性 5 实现步骤 1 隐藏内部细节 属性 2
  • 网站服务器地址url怎么查看,怎么查看服务器访问外部的url地址

    怎么查看服务器访问外部的url地址 内容精选 换一换 在云服务器上搭建网站后 部分客户通过本地网络访问网站时出现偶发性无法访问的情况 确认客户使用的本地网络 若客户的本地网络是NAT网络 本地主机通过NAT功能使用公网IP地址访问弹性云服务
  • Python的列表和元组

    Python 列表 list 1 序列介绍 序列是Python中最基本的数据结构 序列中的每个元素都分配一个数字 它的位置 或索引 第一个索引是0 第二个索引是1 依此类推 Python有6个序列的内置类型 但最常见的是列表和元组 序列都可
  • pitaya框架中etcd实现服务发现源码注释

    package cluster import context encoding json fmt strings sync time github com coreos etcd clientv3 github com coreos etc
  • StaggeredGridLayoutManager与GridLayoutManager小细节注意点

    一 StaggeredGridLayoutManager 1 当我们的设置为VERTICAL时 很容易发现当上一行的高度排放相等时它一行排放的先后顺序是从左到右 2 当我们的设置为HORIZONTAL时 它总是从上到下排放的 3 当我们的设
  • opencv的安装、配置及所遇问题(Ubuntu16.04 + OpenCV3.4.2 + Python3.6)

    安装opencv对好多首次安装的开发者来说都是一场勇气和运气的较量 同样也是我在安装Ubuntu下安装过的众多软件包中最为波折的一款 在此记录安装过程中出现的各种error 幸运女神眷顾的安装顺序 1 安装ubuntu下的依赖项 sudo
  • 《Ansible自动化工具篇:Centos操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》

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