《Kubernetes部署篇:基于Kylin V10+ARM64架构CPU+containerd一键离线部署容器版K8S1.26.15高可用集群》

总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:企业级K8s集群运维实战


一、部署背景

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

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


二、工具下载

基于Kylin V10+ARM64架构CPU+containerd一键离线部署容器版K8S1.26.15高可用集群工具


三、工具介绍

实现功能如下:

1、当前一键部署工具仅支持 ARM64架构 Kylin Linux Advanced Server V10操作系统。
2、支持 单机、一主多从、三主多从等部署架构 K8S 1.26.15容器版(containerd)离线集群,且 证书有效期为99年
3、支持一键部署、集群检查、集群移除等功能。
4、支持一主多从、三主多从部署架构的worker节点 一键扩容和移除。

说明:如果想要当前此工具支持其它操作系统,只需要修改basic-env/init_env.sh脚本,根据当当前操作系统修改成符合当前操作系统的命令。其它的containerd、kubeadm、kubectl、kubelet、nginx都是采用二进制安装方式,是通用的。


四、工具使用

说明:由于篇幅有限,这里以三主多从架构为例,像大家介绍K8S1.26.15高可用集群部署步骤!

4.1、部署前

1、更新libseccomp(部署前)

说明:以下操作所有K8S集群主机都需执行。

方法一:

[root@ecs-c391-0003 kubernete-tools]# rpm -qa | grep libseccomp
libseccomp-2.4.1-3.ky10.aarch64
[root@ecs-c391-0003 kubernete-tools]# rpm -e `rpm -qa | grep libseccomp` --nodeps
[root@ecs-c391-0003 kubernete-tools]# cp libseccomp.so.2 /usr/lib64/

部署包包含libseccomp.so.2文件,你也可在安装containerd容器引擎中手动编译安装,如下图所示:
在这里插入图片描述

方法二:

rpm -e `rpm -qa | grep libseccomp` --nodeps
yum install gperf -y
wget https://github.com/seccomp/libseccomp/releases/download/v2.5.4/libseccomp-2.5.4.tar.gz
tar axf libseccomp-2.5.4.tar.gz && cd libseccomp-2.5.4
./configure && make && make install
ln -s /usr/local/lib/libseccomp.so.2 /usr/lib64/libseccomp.so.2

总结: 经过多次试验,安装k8s1.26.15版本时,如果libseccomp版本为2.4.1,则会报错unable to retrieve OCI runtime error。


2、查看帮助命令

如下图所示:
在这里插入图片描述

部署命令可参考如下:

a、单机部署

 ./kubernetes_tools.sh deploy single-node

b、一主多从部署

# 1、master节点部署
./kubernetes_tools.sh deploy master# 2、worker节点部署
./kubernetes_tools.sh deploy node --join-as-worker

c、三主多从部署

# 1、master节点部署
./kubernetes_tools.sh deploy master
./kubernetes_tools.sh deploy node --join-as-master
./kubernetes_tools.sh deploy node --join-as-master# 2、worker节点部署
./kubernetes_tools.sh deploy node --join-as-worker

4.2、部署中

2、编辑变量文件

[root@ecs-c391-0003 kubernete-tools]# cp cluster.conf.tpl cluster.conf
[root@ecs-c391-0003 kubernete-tools]# vim cluster.conf

如下图所示:

# 适用模式:支持一主多从集群模式和三主多从集群模式
#   1.一主多从: API_SERVER_HOST_01、API_SERVER_HOST_02、API_SERVER_HOST_03 填写相同的IP地址
#   2.三主多从: API_SERVER_HOST_01、API_SERVER_HOST_02、API_SERVER_HOST_03 填写不同的IP地址
#   3.安装顺序为:API_SERVER_HOST_01节点 > API_SERVER_HOST_02节点 > API_SERVER_HOST_03节点
# 三台API SERVER主机IP地址
export API_SERVER_HOST_01="192.168.1.156"
export API_SERVER_HOST_02="192.168.1.171"
export API_SERVER_HOST_03="192.168.1.238"
# Nginx代理IP地址和代理端口,端口不冲突情况下,建议不修改
export API_SERVER_PROXY_HOST="${API_SERVER_HOST_01}"
export API_SERVER_PROXY_PORT="8443"
# 建议填写为当前磁盘最大存储空间目录,如果系统盘空间最大,建议填写为/data,如果挂在盘空间最大,建议填写为挂载目录
export BASE_DIR="/data"
# containerd数据目录,默认不修改
export CONTAINERD_STORAGE_DIR="${BASE_DIR}/basic-data/containerd"
# kubernetes version,默认不修改
export KUBERNETES_VERSION="v1.26.15"
# 当前机器的节点名称,一般为 xxx-cluster-master-01、xx-cluster-node-01
# 部署过程中,此参数会作为主机名,只能由小写字母、数字、.和-组成,且只能以小写字母/数字开头或结尾
export NODE_NAME="k8s-master-156"
# 镜像仓库地址,默认不修改
export IMAGE_REPOSITORY="registry.cn-hangzhou.aliyuncs.com/google_containers"
# 集群Pod网段,可根据实际情况修改
export POD_NETWORK_CIDR="10.48.0.0/16"
# 集群Service网段,可根据实际情况修改
export SERVICE_CIDR="10.96.0.0/16"
# kubernetes node port range,默认不修改
export SERVICE_NODE_POD_RANGE="30000-36000"

3、部署 第一个 master节点

[root@ecs-c391-0003 kubernete-tools]# ./kubernetes_tools.sh deploy master

4、第一个master节点部署完成后的部署包分别拷贝到其它master节点和worker节点。

[root@k8s-master-156 pkgs]# scp -r kubernete-tools/ root@172.18.1.171:/data/pkgs
[root@k8s-master-156 pkgs]# scp -r kubernete-tools/ root@172.18.1.238:/data/pkgs
[root@k8s-master-156 pkgs]# scp -r kubernete-tools/ root@172.18.1.66:/data/pkgs

5、部署第二个master节点

说明:第二个节点的部署只需要修改当前节点的名称,也就是主机名。

# 1、编辑cluster.conf文件
[root@ecs-c391-0001 kubernete-tools]# vim cluster.conf 
# 当前机器的节点名称,一般为 xxx-cluster-master-01、xx-cluster-node-01
# 部署过程中,此参数会作为主机名,只能由小写字母、数字、.和-组成,且只能以小写字母/数字开头或结尾
export NODE_NAME="k8s-master-171"# 2、以master角色加入kubernetes集群
[root@ecs-c391-0001 kubernete-tools]# ./kubernetes_tools.sh deploy node --join-as-master

6、部署 第三个 master节点

说明:第三个节点的部署只需要修改当前节点的名称,也就是主机名。

# 1、编辑cluster.conf文件
[root@ecs-c391-0004 kubernete-tools]# vim cluster.conf
# 当前机器的节点名称,一般为 xxx-cluster-master-01、xx-cluster-node-01
# 部署过程中,此参数会作为主机名,只能由小写字母、数字、.和-组成,且只能以小写字母/数字开头或结尾
export NODE_NAME="k8s-master-238" # 2、以master角色加入kubernetes集群
[root@ecs-c391-0004 kubernete-tools]# ./kubernetes_tools.sh deploy node --join-as-master

7、部署 worker节点

说明:依次类推,其它节点的部署只需要修改当前节点的名称,也就是主机名。

# 1、编辑cluster.conf文件
[root@ecs-c391-0002 kubernete-tools]# vim cluster.conf 
# 当前机器的节点名称,一般为 xxx-cluster-master-01、xx-cluster-node-01
# 部署过程中,此参数会作为主机名,只能由小写字母、数字、.和-组成,且只能以小写字母/数字开头或结尾
export NODE_NAME="k8s-worker-66"# 2、以worker角色加入kubernetes集群
[root@ecs-c391-0002 kubernete-tools]# ./kubernetes_tools.sh deploy node --join-as-worker

8、重启k8s主机

说明:集群部署完后,无论是master节点还是worker节点均需重启。

reboot

4.2、部署后

1、检查集群状态

[root@k8s-master-156 kubernete-tools]# ./kubernetes_tools.sh check

如下图所示:
在这里插入图片描述


2、检查证书有效时间

[root@k8s-master-156 kubernete-tools]# kubeadm certs  check-expiration

如下图所示:
在这里插入图片描述


3、集群DNS测试

[root@k8s-master-156 kubernete-tools]# cd test/busybox/
[root@k8s-master-156 busybox]# ./test.sh 

如下图所示:
在这里插入图片描述


4、集群功能测试

[root@k8s-master-156 kubernete-tools]# cd test/nginx/
[root@k8s-master-156 nginx]# kubectl apply -f nginx.yaml 

如下图所示:
在这里插入图片描述

在浏览器上访问Nginx,如下所示:
在这里插入图片描述


总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:企业级K8s集群运维实战


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

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

相关文章

备份和恢复realme智能手机:综合指南

realme自2018年成立至今,一直秉持着“敢于超越”的品牌精神,专注于为全球年轻用户提供性能卓越、设计新颖的高品质手机。对于如何备份和恢复realme手机,本文将介绍多种不同的方法。 第1部分:使用Coolmuster Android Backup Mana…

用 OpenCV 实现图像中水平线检测与校正

前言 在本文中,我们将探讨如何使用 Python 和 OpenCV 库来检测图像中的水平线,并对图像进行旋转校正以使这些线条水平。这种技术可广泛应用于文档扫描、建筑摄影校正以及机器视觉中的各种场景。 环境准备 首先,确保您的环境中安装了 OpenC…

【RAG提升技巧】查询改写HyDE

简介 提高 RAG 推理能力的一个好方法是添加查询理解层 ——在实际查询向量存储之前添加查询转换。以下是四种不同的查询转换: 路由:保留初始查询,同时查明其所属的适当工具子集。然后,将这些工具指定为合适的选项。查询重写&…

随身WIFI修改MAC(bssid)并接收短信

将SIM卡插入随身WiFi卡槽 将随身WIFI插入电脑 打开 http://ufi.icewifi.com ,输入设备IMEI (或直接扫描设备包装盒上的二维码) 点击“确认” 登录到设备主页(网址可收藏保存) 点击“WIFI配置”按钮,输入想…

C#——枚举类型详情

枚举类型 枚举类型(也可以称为“枚举器”)由一组具有独立标识符(名称)的整数类型常量构成,在 C# 中枚举类型不仅可以在类或结构体的内部声明,也可以在类或结构体的外部声明,默认情况下枚举类型…

【Python报错】已解决AttributeError: Nonetype Object Has NoAttribute Group

解决Python报错:AttributeError: ‘list’ object has no attribute ‘get’ 在Python中,AttributeError通常表示你试图访问的对象没有你请求的属性或方法。如果你遇到了AttributeError: list object has no attribute get的错误,这通常意味着…

【NoSQL数据库】Redis——哨兵模式

Redis——哨兵模式 Redis哨兵 Redis——哨兵模式1.什么是哨兵机制(Redis Sentinel)1.1 哨兵的作用 2.哨兵的运行机制3.故障处理redis常见问题汇总1、redis缓存击穿是什么?如何解决?2、redis缓存穿透是什么?如何解决&am…

如何查询公网IP?

在互联网中,每个设备都有一个唯一的公网IP地址,用于标识设备在全球范围内的位置。查询公网IP是一个常见的需求,无论是用于远程访问、网络配置还是其他目的,了解自己的公网IP地址都是很有必要的。本文将介绍几种常见的方法来查询公…

HQChart使用教程100-自定义Y轴分段背景色

HQChart使用教程100-自定义Y轴分段背景色 效果图步骤1. 注册Y轴自定义刻度创建事件2. 配置Y轴背景色eventdataobj示例 交流QQ群HQChart代码地址 效果图 步骤 1. 注册Y轴自定义刻度创建事件 事件IDSCHART_EVENT_ID.ON_CREATE_CUSTOM_Y_COORDINATE, 如何注册事件详见教程 HQCh…

代码审计(1):CVE-2022-4957分析及复现

0x00漏洞描述: ѕрееdtеѕt iѕ а vеrу liɡhtԝеiɡht nеtԝоrk ѕрееd tеѕtinɡ tооl imрlеmеntеd in Jаvаѕсriрt. Thеrе iѕ а Crоѕѕ-ѕitе Sсriрtinɡ vulnеrаbilitу in librеѕроndеd ѕрееdtеѕt…

[word] word2019中制表符的妙用 #媒体#笔记#知识分享

word2019中制表符的妙用 word2019表格功能是非常强大的,很多朋友都认为以前的制表符已经没有什么用途了,其实不然,在一切特殊的场合,word2019制表符还是非常有用的,下面就为大家介绍word2019中制表符的妙用。 步骤1、…

每日复盘-20240606

今日关注: 这几天市场环境不好,一直空仓。 排名标准: ------沪深A股 排名--------代码--------- 名称 六日涨幅最大: ------1--------301176--------- 逸豪新材 五日涨幅最大: ------1--------301176--------- 逸豪新材 四日涨幅最大: ------1--------…

信息系统项目管理师0146:输入(9项目范围管理—9.3规划范围管理—9.3.1输入)

点击查看专栏目录 文章目录 9.3 规划范围管理9.3.1 输入9.3 规划范围管理 规划范围管理是为了记录如何定义、确认和控制项目范围及产品范围,而创建范围管理计划的过程。本过程的主要作用是在整个项目期间对如何管理范围提供指南和方向。本过程仅开展一次或仅在项目的预定义点开…

Quartz持久化

1、为什么需要ouartz持久化 Quartz持久化即将定时任务保存在介质中,持久化目的是保证任务在发生异常后也不会丢失Quartz默认将定时任务存在内存(RAM]obstore),优点是数据读取速度块,缺点是一旦异常发生,任务 数据就没有了Quartz还…

Objective-C之通过协议提供匿名对象

概述 通过协议提供匿名对象的设计模式,遵循了面向对象设计的多项重要原则: 接口隔离原则:通过定义细粒度的协议来避免实现庞大的接口。依赖倒置原则:高层模块依赖于抽象协议,而不是具体实现。里氏替换原则&#xff1…

台式机安装Windows 11和Ubuntu 22双系统引导问题

一、基本情况 1.1、硬件情况 电脑有2个NVMe固态硬盘,1个SATA固态硬盘,1个机械硬盘。其中一个NVMe固态硬盘是Windows系统盘,另一个NVMe固态为Windows软件和文件盘,SATA固态硬盘为Ubuntu专用,机械硬盘为数据备份盘。 …

Bandizip 专业版正版激活码 - 超好用文件解压缩工具

要说新电脑必装的软件,一定少不了解压缩工具。面对各式各样的压缩包,总要有一个速度快、稳定安全、功能多、支持格式广的工具才行。 好多用户推荐,用过都说好的 Win 端解压缩工具:Bandizip 值得你一试! 无论是解压速度…

Redis Key过期监听配置

默认情况下在Windows系统中双击redis-server.exe用的是内置的配置文件 如果希望用这两个配置文件 redis.windows.conf:这是用于在Windows上运行Redis服务器的标准配置文件。可以使用这个文件通过命令行启动Redis服务器。redis.windows-service.conf:这是…

ESD防护SP3232E真+3.0V至+5.5V RS-232收发器

特征 采用3.0V至5.5V电源,符合真正的EIA/TIA-232-F标准 满载时最低 120Kbps 数据速率 1μA 低功耗关断,接收器处于活动状态 (SP3222E) 可与低至 2.7V 电源的 RS-232 互操作 增强的ESD规格: 15kV人体模型 15kV IEC1000…

java:一个简单的WebFlux的例子

【pom.xml】 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId><version>2.3.12.RELEASE</version> </dependency> <dependency><groupId>org.spr…