ubuntu kubeasz 部署高可用k8s 集群
ubuntu kubeasz 部署高可用k8s 集群
- 测试环境
- 主机列表
- 软件清单
- kubeasz 部署高可用 kubernetes
- 配置源
- 配置host文件
- 安装 ansible 并进行 ssh 免密登录:
- 下载 kubeasz 项⽬及组件
- 部署集群
- 部署各组件
- 开始安装
- 修改 config 配置文件
- 增加 master 节点
- 增加 kube_node 节点
- 登录dashboard
- 查看dashboard容器运行在那个节点及端口了
- 通过浏览器访问dashboard
- 生成Token登录
- 安装持久化存储CSI解决方案-LongHorn
测试环境
kubeasz与K8S版本对比
主机列表
软件清单
操作系统: Ubuntu server 25.04
k8s版本 1.32.3
calico 3.28.3
kubeasz 3.6.6
etcd v3.5.20
kubeasz 部署高可用 kubernetes
部署节点基本配置
此处部署节点是:192.168.8.19,部署节点的功能如下:
1从互联⽹下载安装资源
2可选将部分镜像修改tag后上传到公司内部镜像仓库服务器
3对master进⾏初始化
4对node进⾏初始化
5后期集群维护,包括:添加及删除master节点;添加就删除node节点;etcd数据备份及恢复
配置源
1,配置本地光盘源
将系统光盘挂载到光驱, mount到/mnt下
mount /dev/cdrom /mnt
echo "edeb file:///mnt plucky main restricted" >/etc/apt/sources.list.d/cdrom.list
2,配置ali源
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
cat > /etc/apt/sources.list.d/ubuntu.sources << EOF
Types: deb
URIs: http://mirrors.aliyun.com/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
EOF
配置host文件
root@uasz1:~# cat /etc/hosts
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.8.13 umaster1.meng.com umaster1
192.168.8.14 umaster2.meng.com umaster2
192.168.8.15 umaster3.meng.com umaster3
192.168.8.16 uworker1.meng.com uworker1
192.168.8.17 uworker2.meng.com uworker2
192.168.8.18 uworker3.meng.com uworker3
192.168.8.19 uasz1.meng.com uasz1
安装 ansible 并进行 ssh 免密登录:
apt 安装 ansieble,并将部署节点的公钥拷贝至 master、node、etcd 节点,部署节点能免密登录其他主机
注: 在部署节点执行
root@uasz1:~# apt update && apt install ansible -y
root@uasz1:~# ssh-keygen # 生成密钥对,一路回车即可
root@uasz1:~# apt install sshpass -y # 如果已经安装不需要执行
#!/bin/bash
#目标主机列表
IP="
192.168.8.13
192.168.8.14
192.168.8.15
192.168.8.16
192.168.8.17
192.168.8.18
"
REMOTE_PORT="22"
REMOTE_USER="root"
REMOTE_PASS="root"
for REMOTE_HOST in ${IP};doREMOTE_CMD="echo ${REMOTE_HOST} is successfully!"ssh-keyscan -p "${REMOTE_PORT}" "${REMOTE_HOST}" >> ~/.ssh/known_hosts #在本地添加远程主机的公钥信息,避免交互式应答sshpass -p "${REMOTE_PASS}" ssh-copy-id "${REMOTE_USER}@${REMOTE_HOST}"if [ $? -eq 0 ];thenecho ${REMOTE_HOST} 免秘钥配置完成!ssh ${REMOTE_HOST} ln -sv /usr/bin/python3 /usr/bin/pythonelseecho "免密钥配置失败!"fi
done
# 验证免密登录
ssh 192.168.3.100
下载 kubeasz 项⽬及组件
root@uasz1:mkdir -p /data/kubeasz
root@uasz1:cd /data/kubeasz
root@uasz1:/data/kubeasz# wget https://github.com/easzlab/kubeasz/releases/download/3.6.6/ezdown
root@uasz1:/data/kubeasz# chmod +x ezdown
#下载kubeasz代码、二进制、默认容器镜像,会运行一个redistry镜像仓库,将下载的镜像push到仓库
root@uasz1:/data/kubeasz# ./ezdown -D
root@uasz1:/data/kubeasz# ll /etc/kubeasz/ #kubeasz所有文件和配置路径
total 148
drwxrwxr-x 13 root root 4096 May 19 21:47 ./
drwxr-xr-x 112 root root 4096 May 19 22:24 ../
-rw-rw-r-- 1 root root 20304 Mar 23 20:24 ansible.cfg
drwxr-xr-x 5 root root 4096 May 19 21:14 bin/
drwxr-xr-x 3 root root 4096 May 19 21:47 clusters/
drwxrwxr-x 8 root root 4096 Mar 23 20:30 docs/
drwxr-xr-x 3 root root 4096 May 19 21:27 down/
drwxrwxr-x 2 root root 4096 Mar 23 20:30 example/
-rwxrwxr-x 1 root root 25868 Mar 23 20:24 ezctl*
-rwxrwxr-x 1 root root 32772 Mar 23 20:24 ezdown*
drwxrwxr-x 4 root root 4096 Mar 23 20:30 .github/
-rw-rw-r-- 1 root root 301 Mar 23 20:24 .gitignore
drwxrwxr-x 10 root root 4096 Mar 23 20:30 manifests/
drwxrwxr-x 2 root root 4096 Mar 23 20:30 pics/
drwxrwxr-x 2 root root 4096 Mar 23 20:30 playbooks/
-rw-rw-r-- 1 root root 6404 Mar 23 20:24 README.md
drwxrwxr-x 22 root root 4096 Mar 23 20:30 roles/
drwxrwxr-x 2 root root 4096 Mar 23 20:30 tools/
部署集群
root@uasz1:/data/kubeasz# cd /etc/kubeasz/
root@uasz1:/etc/kubeasz# ./ezctl new k8s-cluster01 # 新建管理集群
2025-05-19 21:47:03 [ezctl:145] DEBUG generate custom cluster files in /etc/kubeasz/clusters/k8s-cluster01 #集群使用相关配置路径
2025-05-19 21:47:04 [ezctl:151] DEBUG set versions
2025-05-19 21:47:04 [ezctl:179] DEBUG cluster k8s-cluster01: files successfully created.
2025-05-19 21:47:04 [ezctl:180] INFO next steps 1: to config '/etc/kubeasz/clusters/k8s-cluster01/hosts'
2025-05-19 21:47:04 [ezctl:181] INFO next steps 2: to config '/etc/kubeasz/clusters/k8s-cluster01/config.yml'
配置用于集群管理的 ansible hosts 文件
root@uasz1:/etc/kubeasz/clusters/k8s-cluster01# cat hosts
# 'etcd' cluster should have odd member(s) (1,3,5,...)
[etcd]
192.168.8.13
192.168.8.14
192.168.8.15# master node(s), set unique 'k8s_nodename' for each node
# CAUTION: 'k8s_nodename' must consist of lower case alphanumeric characters, '-' or '.',
# and must start and end with an alphanumeric character
[kube_master]
192.168.8.13 k8s_nodename='umaster1'
192.168.8.14 k8s_nodename='umaster2'
192.168.8.15 k8s_nodename='umaster3'# work node(s), set unique 'k8s_nodename' for each node
# CAUTION: 'k8s_nodename' must consist of lower case alphanumeric characters, '-' or '.',
# and must start and end with an alphanumeric character
[kube_node]
192.168.8.16 k8s_nodename='uworker1'
192.168.8.17 k8s_nodename='uworker2'
192.168.8.18 k8s_nodename='uworker3'# [optional] harbor server, a private docker registry
# 'NEW_INSTALL': 'true' to install a harbor server; 'false' to integrate with existed one
[harbor]
#192.168.1.8 NEW_INSTALL=false# [optional] loadbalance for accessing k8s from outside
[ex_lb]
#192.168.1.6 LB_ROLE=backup EX_APISERVER_VIP=192.168.1.250 EX_APISERVER_PORT=8443
#192.168.1.7 LB_ROLE=master EX_APISERVER_VIP=192.168.1.250 EX_APISERVER_PORT=8443# [optional] ntp server for the cluster
[chrony]
#192.168.1.1[all:vars]
# --------- Main Variables ---------------
# Secure port for apiservers
SECURE_PORT="6443"# Cluster container-runtime supported: docker, containerd
# if k8s version >= 1.24, docker is not supported
CONTAINER_RUNTIME="containerd"# Network plugins supported: calico, flannel, kube-router, cilium, kube-ovn
CLUSTER_NETWORK="calico"# Service proxy mode of kube-proxy: 'iptables' or 'ipvs'
PROXY_MODE="ipvs"# K8S Service CIDR, not overlap with node(host) networking
SERVICE_CIDR="10.68.0.0/16"# Cluster CIDR (Pod CIDR), not overlap with node(host) networking
CLUSTER_CIDR="172.20.0.0/16"# NodePort Range
NODE_PORT_RANGE="30000-32767"# Cluster DNS Domain
CLUSTER_DNS_DOMAIN="cluster.local"# -------- Additional Variables (don't change the default value right now) ---
# Binaries Directory
bin_dir="/opt/kube/bin"# Deploy Directory (kubeasz workspace)
base_dir="/etc/kubeasz"# Directory for a specific cluster
cluster_dir="{{ base_dir }}/clusters/k8s-cluster01"# CA and other components cert/key Directory
ca_dir="/etc/kubernetes/ssl"# Default 'k8s_nodename' is empty
k8s_nodename=''# Default python interpreter
ansible_python_interpreter=/usr/bin/python
config.yml 是用于配置 K8S 集群的具体配置
root@uasz1:/etc/kubeasz/clusters/k8s-cluster01# cat config.yml
############################
# prepare
############################
# 可选离线安装系统软件包 (offline|online)
INSTALL_SOURCE: "online"# 可选进行系统安全加固 github.com/dev-sec/ansible-collection-hardening
# (deprecated) 未更新上游项目,未验证最新k8s集群安装,不建议启用
OS_HARDEN: false############################
# role:deploy
############################
# default: ca will expire in 100 years
# default: certs issued by the ca will expire in 50 years
CA_EXPIRY: "876000h"
CERT_EXPIRY: "876000h"# force to recreate CA and other certs, not suggested to set 'true'
CHANGE_CA: false# kubeconfig 配置参数
CLUSTER_NAME: "cluster1"
CONTEXT_NAME: "context-{{ CLUSTER_NAME }}"# k8s version
K8S_VER: "1.32.3"# set unique 'k8s_nodename' for each node, if not set(default:'') ip add will be used
# CAUTION: 'k8s_nodename' must consist of lower case alphanumeric characters, '-' or '.',
# and must start and end with an alphanumeric character (e.g. 'example.com'),
# regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'
K8S_NODENAME: "{%- if k8s_nodename != '' -%} \{{ k8s_nodename|replace('_', '-')|lower }} \{%- else -%} \k8s-{{ inventory_hostname|replace('.', '-') }} \{%- endif -%}"# use 'K8S_NODENAME' to set hostname
ENABLE_SETTING_HOSTNAME: true############################
# role:etcd
############################
# 设置不同的wal目录,可以避免磁盘io竞争,提高性能
ETCD_DATA_DIR: "/var/lib/etcd"
ETCD_WAL_DIR: ""############################
# role:runtime [containerd,docker]
############################
# [.]启用拉取加速镜像仓库
ENABLE_MIRROR_REGISTRY: true# [.]添加信任的私有仓库
# 必须按照如下示例格式,协议头'http://'和'https://'不能省略
INSECURE_REG:- "http://easzlab.io.local:5000"
# - "https://reg.your
相关文章:

ubuntu kubeasz 部署高可用k8s 集群
ubuntu kubeasz 部署高可用k8s 集群 测试环境主机列表软件清单kubeasz 部署高可用 kubernetes配置源配置host文件安装 ansible 并进行 ssh 免密登录:下载 kubeasz 项⽬及组件部署集群部署各组件开始安装修改 config 配置文件增加 master 节点增加 kube_node 节点登录dashboard…...

芯驰科技与安波福联合举办技术研讨会,深化智能汽车领域合作交流
5月15日,芯驰科技与全球移动出行技术解决方案供应商安波福(Aptiv)在上海联合举办以“芯智融合,共赢未来”为主题的技术研讨会。会上,双方聚焦智能座舱与智能车控的发展趋势,展开深入交流与探讨,…...
PaddleClas 车辆属性模型vehicle_attribute_model转onnx并部署
下载paddlepaddle3.0.0 下载paddleclas 2.6.0 实验: 运行前输入: export FLAGS_enable_pir_api0 import paddleclas model paddleclas.PaddleClas(model_name"vehicle_attribute") result model.predict(input_data"/home/Pad…...

【论文#目标检测】End-to-End Object Detection with Transformers
目录 摘要1.引言2.相关工作2.1 集合预测2.2 Transformer和并行解码2.3 目标检测 3.DETR模型3.1 目标检测集合预测损失3.2 DETR架构 4.实验4.1 与Faster R-CNN的比较4.2 消融研究4.3 分析4.4 DETR用于全景分割 5.结论6.致谢 Author: Nicolas Carion, Francisco Massa, Gabriel S…...
C++:迭代器
迭代器的本质:对象。 迭代器与指针类似,通过迭代器可以指向容器中的某个元素,还可以对元素进行操作。 迭代器统一规范了遍历方式。不同的数据结构可以用统一的方式去遍历。 接下来是一个自定义迭代器的代码示例。 #include<iostream&g…...
MongoDB数据库深度解析:架构、特性与应用场景
在现代应用程序开发中,数据存储技术的选择至关重要。在众多的数据库管理系统中,MongoDB以其灵活性和强大的功能迅速崛起,成为NoSQL数据库中的佼佼者。本文将深入解析MongoDB的架构、核心特性、性能优化及其在实际应用中的最佳实践,…...
【强化学习】深度强化学习 - Deep Q-Network(DQN)算法
文章目录 摘要一、DQN核心原理1. Q-learning回顾2. 用深度网络逼近Q函数3. 经验回放(Experience Replay)4. 目标网络(Target Network)5. 损失函数6. ε-贪心策略(ε-greedy) 二、算法流程与伪代码三、典型实…...
git 修改一个老commit,再把修改应用到所有后续的 commit
找到你想修改的 commit 的哈希值(前7位即可)。 git rebase -i <commit-hash>^找到你想修改的 commit 行 将行首的 pick 改为 edit 保存并退出编辑器 进行想要的修改 git add <修改的文件> git commit --amendgit rebase --continue如果…...
docker compose 启动指定的 service
使用 Docker Compose 启动指定服务 要在 Docker Compose 中启动特定的服务而不是所有服务,可以使用以下命令: docker compose up [服务名] 基本用法 启动单个服务: docker compose up service_name 启动多个指定服务: docker …...

Elasticsearch 深入分析三种分页查询【Elasticsearch 深度分页】
前言: 在前面的 Elasticsearch 系列文章中,分享了 Elasticsearch 的各种查询,分页查询也分享过,本篇将再次对 Elasticsearch 分页查询进行专题分析,“深度分页” 这个名词对于我们来说是一个非常常见的业务场景&#…...

DAY29 超大力王爱学Python
知识点回顾 类的装饰器装饰器思想的进一步理解:外部修改、动态类方法的定义:内部定义和外部定义 作业:复习类和函数的知识点,写下自己过去29天的学习心得,如对函数和类的理解,对python这门工具的理解等&…...

Ubuntu 远程桌面配置指南
概述: 本文主要介绍在Ubuntu 22.04中通过VNC实现远程连接的方法。首先需安装图形化界面和VNC工具x11vnc,设置开机启动服务;然后在Windows客户端用VNC Viewer通过局域网IP和端口5900连接。 总结: 一、VNC配置与安装 安装图形化界面 在Ubuntu 22.04中需先安装: sudo apt …...
【Python装饰器深度解析】从语法糖到元编程实战
目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选型对比🛠️ 二、实战演示⚙️ 环境配置要求💻 核心代码实现案例1:基础计时装饰器案…...

推扫式高光谱相机VIX-N230重磅发布——开启精准成像新时代
随着各行业对高光谱成像技术需求的持续增长,市场对于高分辨率、高灵敏度以及快速成像的高光谱相机的需求愈发迫切。中达瑞和凭借多年的行业经验和技术积累,敏锐捕捉到这一市场趋势,正式推出全新一代推扫式可见光近红外高光谱相机——VIX-N230…...

Parsec解决PnP连接失败的问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、准备环境二、DMZ三、端口映射1.Parsec设置固定端口2.路由器设置端口转发3.重启被控端Parsec四、多少一句1.有光猫管理员账号2.没有光猫管理员账号总结 前言…...
面试题:详细分析Arraylist 与 LinkedList 的异同
相同点 都是List接口的实现类: ArrayList和LinkedList都实现了Java集合框架中的List接口,因此它们都提供了对列表元素的操作方法。 都继承了Collection接口: 由于List接口继承了Collection接口,所以ArrayList和LinkedList也都继承…...

软件I2C
软件I2C 注意: SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出。需通过上拉电阻接电源VCC。 软件I2C说明 说明,有的单片机没有硬件I2C的功能,或者因为电路设计…...
通过实例讲解螺旋模型
目录 一、螺旋模型的核心概念 二、螺旋模型在电子商城系统开发中的应用示例 第 1 次螺旋:项目启动与风险初探...

Brooks Polycold快速循环水蒸气冷冻泵客户使用手含电路图,适用于真空室应用
Brooks Polycold快速循环水蒸气冷冻泵客户使用手含电路图,适用于真空室应用...
winfrom中创建webapi
参照一下两篇 Winform窗体利用WebApi接口实现ModbusTCP数据服务_winform webapi-CSDN博客 C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte - 冰封的心 - 博客园...
unity XCharts插件生成曲线图在UICanvas中
【推荐100个unity插件之22】基于UGUI的功能强大的简单易用的Unity数据可视化图表插件——XCharts3.0插件的使用_unity xcharts-CSDN博客...
Pichome 开源网盘程序index.php 文件读取漏洞(CVE-2025-1743)
免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。使用者应确保其行为符合相关法律法规,并取得目标系统的明确授权。 对于因不当使用本文信息而造成的任何直…...

关于在Unity项目中使用Post Processing插件打包到web端出现的问题
关于在Unity项目中使用Post Processing插件打包到web端出现的问题 解决方法:是不激活摄像机上的Post Processing有关组件,拉低场景中的Directional Light平行光的强度进行web端打包。 (烘焙灯光时是可以激活。) web端支持这个Pos…...

Prompt Tuning:高效微调大模型的新利器
Prompt Tuning(提示调优)是什么 Prompt Tuning(提示调优) 是大模型参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)的重要技术之一,其核心思想是通过优化 连续的提示向量(而非整个模型参数)来适配特定任务。以下是关于 Prompt Tuning 的详细解析: 一、核心概念…...
OpenCV 第6课 图像处理之几何变换(重映射)
1. 概述 简单来说,重映射就是把一副图像内的像素点按照规则映射到到另外一幅图像内的对应位置上去,形成一张新的图像。 因为原图像与目标图像的像素坐标不是一一对应的。一般情况下,我们通过重映射来表达每个像素的位置(x,y),像这样: g(x,y)=f(h(x,y)) 在这里g()是目标图…...

C++初阶-vector的底层
目录 1.序言 2.std::sort(了解) 3.vector的底层 3.1讲解 3.2构造函数 3.3push_back函数 3.4begin()和end()函数 3.5capacity()和size()函数和max_size函数 3.5.1size()函数 为什么这样写? 底层原理 3.5.2max_size()函数 为什么这…...
获取文件夹下所有文件的名称
一、为什么写这个程序 因为我要做一个类似于目录树的结构,需要把文件夹下的所有名字全部导出了。 二、Python和vscode的安装 先安装Python在安装vscode Python安装 vscode的安装 三、源码 import os# 定义要扫描的文件夹列表(使用原始字符串避免转义…...

C语言指针深入详解(五):回调函数、qsort函数
目录 一、回调函数 1、使用回调函数改造前 2、使用回到函数改造后 二、qsort使用举例 1、使用qsort函数排序整型数据 2、使用qsort排序结构数据 三、qsort函数模拟实现 结语 🔥个人主页:艾莉丝努力练剑 🍓专栏传送门:《…...

数据结构进阶:AVL树与红黑树
目录 前言 AVL树 定义 结构 插入 AVL树插入的大致过程 更新平衡因子 旋转 右单旋 左单旋 左右双旋 右左双旋 实现 红黑树 定义 性质 结构 插入 实现 总结 前言 在学习了二叉搜索树之后,我们了解到其有个致命缺陷——当树的形状呈现出一边倒…...
容器化-K8s-镜像仓库使用和应用
一、K8s 镜像仓库使用 1、启动镜像仓库 cd/usr/local/harbor ./install.sh2、配置镜像仓库地址 在 master 节点和 slaver 节点上,需要配置 Docker 的镜像仓库地址,以便能够访问本地的镜像仓库。编辑 Docker 的配置文件 vi /etc/docker/daemon.json(如果不存在则创建),添…...