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


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

45-1 waf绕过 - 文件上传绕过WAF方法

环境准备: 43-5 waf绕过 - 安全狗简介及安装-CSDN博客然后安装dvwa靶场:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客打开dvwa靶场,先将靶场的安全等级调低,然后切换到文件上传 一、符号变异 在PHP中,由于其弱类型特性,有时候仅有一…

图像算法---自动对焦AF

一,CDAF反差对焦原理 CDAF,全称Contrast Detection Auto Focus,即反差式对焦或对比度检测自动对焦,是一种广泛应用于入门级数码相机和相机模块化智能手机上的自动对焦技术。以下是关于CDAF反差对焦的详细介绍: 工作原…

基于Python的实验室管理系统的设计与实现(论文+源码)_kaic

摘 要 随着实验室设备越来越多,实验室及其设备管理工作变得越来越繁重,还存在些管理模式仍旧处于手工管理模式和一些抢占实验室的不文明现象,传统的手工模式已经满足不了日益增长的管理需求,而本系统摒弃传统模式,开启…

Docker 快速入门Ubuntu版(1h速通)

Docker 快速入门Ubuntu版(1h速通) 写在前面,本教程主要参考Docker get started,ChatGPT-4o的回答,以及网络上查找到的其他资料,这里主要是记录了笔者的学习过程,难免会有批漏,还烦请…

手写mybatis-预编译后sql语句

sql表 mybatis数据库中的gxa_user表 /*Navicat Premium Data TransferSource Server : rootSource Server Type : MySQLSource Server Version : 80028Source Host : localhost:3306Source Schema : mybatisTarget Server Type : MySQLTarget…

苹果警告部分 iPhone 用户称他们遭到雇佣间谍软件攻击

苹果警告部分 iPhone 用户称他们遭到“雇佣间谍软件攻击 苹果正在提醒用户注意针对 iPhone 的新一轮已识别雇佣间谍软件攻击。可能的受害者已经收到来自苹果的电子邮件,其中描述了该攻击如何“远程破坏 iPhone”。据路透社报道,印度和其他 91 个国家的受…

前端图片在切换暗黑模式时太亮该怎么办?

通过css中的filter属性来实现,进行图片的色系反转、亮度、对比度调整等 1、invert 反转输入图像,值为 100% 则图像完全反转,值为 0% 则图像无变化 filter: invert(1); 2、blur 给元素应用高斯模糊效果。 filter: blur(5px); 3、brightnes…

港中文斯坦福提出SD加速模型PCM,一步即可生成图像和视频,可直接与SD1.5,SDXL,AnimateLCM结合!

又有新的SD加速模型可以用了,PCM解决了原来LCM模型的各种问题。并且对 AnimateLCM 也做了优化,用PCM直接生成动画也可以保证质量了。 PCM从这三个角度说明了LCM的设计空间是有限的并很好地解决了这些限制。 PCM主要改善了三个LCM原有的问题:…

SpringBoot Redis读写与数据序列化 RedisTemplate 与 StringRedisTemplate 防转字节

介绍 RedisTemplate 对象在底层默认会转成字节,造成了内存的开销很大,这是他底层进行处理的,造成可读性差,如需要转成简单的字符串存储需要进行序列化的配置。 RedisTemplate 配置类 Configuration public class RedisConfig {Beanpublic …

文本数据预处理

1.定义 数据预处理:在数据分析之前,对数据进行初步处理 缺失值填写噪声处理不一致数据修正中文分词等 2. 文本数据预处理相关操作 2.1. 中文分词 安装相关库pip install jiaba2.1.1 相关使用 全模式 一段文本种所有可能出现地词语都扫描出来,一段文…

基于pytorch的车牌识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、导入数据 from torchvision.transforms import transforms from torch.utils.data import DataLoader from torchvision import datase…

微服务第二轮

学习文档 背景 由于每个微服务都有不同的地址或端口,入口不同 请求不同数据时要访问不同的入口,需要维护多个入口地址,麻烦 前端无法调用nacos,无法实时更新服务列表 单体架构时我们只需要完成一次用户登录、身份校验&#xff…

【十大排序算法】选择排序

选择就像是在谱曲,每个决定就是一个音符,只有将它们有序地安排在一起,才能奏响美妙的乐章。 文章目录 一、选择排序的思想二、选择排序的发展历程三、选择排序具象化四、选择排序算法实现五、选择排序的特性推荐阅读 一、选择排序的思想 选…

[STM32]定位器与PWM的LED控制

目录 1. 深入了解STM32定时器原理,掌握脉宽调制pwm生成方法。 (1)STM32定时器原理 原理概述 STM32定时器的常见模式 使用步骤 (2)脉宽调制pwm生成方法。 2. 实验 (1)LED亮灭 代码 测试效果 (2)呼吸灯 代码 测试效果 3.总结 1. 深入了解STM32定时器原…

绿联云NAS一些探索(1):SSH、包管理器探测、安装docker-compose等

绿联云NAS一些探索SSH、包管理器探测、安装docker-compose等 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https:…

git报错解决方法error: remote origin already exists.

有时想添加远程本地仓库和远程公司仓库,但git remote的时候发现关联的是一样的,你再去关联时会报错,这时候你应该清除你想关联的远程仓库,再次连接就可以了 下面这个错误提示是远程源已经存在 现在你可以这样做 1、查看远程库的信…

Jenkins工作流程原理

持续集成:自动部署打包发布代码 Jenkins工作流程 项目已经基于Jenkins实现了持续集成,每当我们push代码时,就会触发项目完成自动编译和打包。而需要运行某个微服务时,我们只需要经过两步: 第一步,访问je…

双网卡配置IP和路由总结

1.在网络适配器属性IPv4中设置默认网关(记网关地址为A),将会在本地路由标中新增一条记录: 网络号子网掩码网关地址0.0.0.00.0.0.0A 2.如果有两个网卡(假设一个连接内网,一个连接互联网)&#…

muse-ui的select下拉框没有出现在底部

这个是muse-ui的官网文档 Muse-UI 如果进不去的,可以试着翻墙用外网看看,这里很奇怪,我前几天进不去,然后翻墙可以进,这两天不翻墙也能正常进去了 说一下问题,就是当我们使用 muse-ui的下拉框的时候&…

碰撞问题和单调栈的结合-735. 小行星碰撞【有小坑】

题目链接及描述 . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/asteroid-collision/description/?envTypestudy-plan…