使用KubeKey快速部署k8s v1.31.8集群
实战环境涉及软件版本信息:
使用kubekey部署k8s
1. 操作系统基础配置
设置主机名、DNS解析、时钟同步、防火墙关闭、ssh免密登录等等系统基本设置
dnf install -y curl socat conntrack ebtables ipset ipvsadm
2. 安装部署 K8s
2.1 下载 KubeKey
###地址
https://github.com/kubesphere/kubekey#下载最新版的 KubeKey
export KKZONE=cn ####国内用户先执行此配置mkdir ~/kubekey
cd ~/kubekey
curl -sfL https://get-kk.kubesphere.io | sh -
查看 KubeKey 支持的 Kubernetes 版本列表
./kk version --show-supported-k8s
...
v1.30.10
v1.30.11
v1.30.12
v1.31.0
v1.31.1
v1.31.2
v1.31.3
v1.31.4
v1.31.5
v1.31.6
v1.31.7
v1.31.8
v1.32.0
v1.32.1
v1.32.2
v1.32.3
v1.32.4
v1.33.0
生成配置文件
./kk create config -f k8s-v1318.yaml --with-kubernetes v1.31.8
2.2 创建 K8s 集群部署配置文件
修改配置文件
采用 3 个节点同时作为 control-plane、etcd 和 worker 节点。
编辑配置文件 k8s-v1288.yaml,主要修改 kind: Cluster 小节的相关配置
修改 kind: Cluster 小节中 hosts 和 roleGroups 等信息,修改说明如下。
hosts:指定节点的 IP、ssh 用户、ssh 密码、ssh 端口
roleGroups:指定 3 个 etcd、control-plane 节点,复用相同的机器作为 3 个 worker 节点
internalLoadbalancer:启用内置的 HAProxy 负载均衡器
domain:可自定义域名
clusterName:可使用默认值 cluster.local
autoRenewCerts:该参数可以实现证书到期自动续期,默认为 true
containerManager:使用 containerd
部署完成需要大约 10-20 分钟左右,会在终端上看到类似于下面的输出。
安装的时候最好走代理,因为大部分包在国外,不走代理慢到哭,首先要让服务器走代理
cat << 'EOF' > /etc/profile.d/proxy.sh
export HTTP_PROXY="http://ip"
export HTTPS_PROXY="http://ip"
export NO_PROXY="127.0.0.1,localhost,ip,10.233.0.0/18,10.233.64.0/18"
EOF
source /etc/profile.d/proxy.sh
#####cat k8s-v1318.yaml
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:name: sample
spec:# ----------------- 节点列表 -----------------hosts:- name: k8s-masteraddress: ipinternalAddress: ipuser: rootpassword: "pass"- name: k8s-node1address: ipinternalAddress: ipuser: rootpassword: "pass"- name: k8s-node2address: ipinternalAddress: ipuser: rootpassword: "pass"roleGroups:etcd:- k8s-mastercontrol-plane:- k8s-masterworker:- k8s-node1- k8s-node2# --------------- ControlPlaneEndpoint ---------------controlPlaneEndpoint:## - 如果前面已经有独立的 LoadBalancer,请指定 internalLoadbalancer 地址# internalLoadbalancer: haproxydomain: 主ip # 虚拟 IP 或 DNSaddress: "主ip" # 也可以写为负载均衡虚拟 IP port: 6443# ------------------- 代理设置 ----------------------# 下面三行会让 KubeKey 在下载二进制文件、拉镜像时都走代理proxies:httpProxy: "http://ip"httpsProxy: "http://ip"noProxy: "127.0.0.1,localhost,ip,10.233.0.0/18,10.233.64.0/18"# ------------------ Kubernetes 配置 ------------------kubernetes:version: v1.31.8clusterName: cluster.localautoRenewCerts: truecontainerManager: containerd ####想用docker设置此项为docker# ------------------- ETCD 配置 ----------------------etcd:type: kubekey# ------------------- 网络插件 ----------------------network:plugin: calicokubePodsCIDR: 10.233.64.0/18kubeServiceCIDR: 10.233.0.0/18multusCNI:enabled: false# ------------------- 镜像仓库 ----------------------registry:# 如果你想使用私有 Registry,可以在下面填写privateRegistry: ""namespaceOverride: ""registryMirrors: []insecureRegistries: []# ------------------ 插件或组件 ---------------------addons: []
执行安装,安装时长看网速
./kk create cluster -f k8s-v1318.yaml
3. 验证 K8s 集群
3.1 验证集群状态
查看集群节点信息
kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
default nginx-77657886dc-bhr94 1/1 Running 0 15h
default nginx-77657886dc-cxkmn 1/1 Running 0 15h
kube-system calico-kube-controllers-75c587cc8d-tlz4x 1/1 Running 1 (15h ago) 18h
kube-system calico-node-47j2l 1/1 Running 1 (15h ago) 18h
kube-system calico-node-cf47t 1/1 Running 1 (15h ago) 18h
kube-system calico-node-wcfpc 1/1 Running 1 (15h ago) 18h
kube-system coredns-54b855dcd7-gvvmt 1/1 Running 1 (15h ago) 18h
kube-system coredns-54b855dcd7-lj6jv 1/1 Running 1 (15h ago) 18h
kube-system kube-apiserver-k8s-master 1/1 Running 1 (15h ago) 18h
kube-system kube-controller-manager-k8s-master 1/1 Running 1 (15h ago) 18h
kube-system kube-proxy-7m4c5 1/1 Running 1 (15h ago) 18h
kube-system kube-proxy-8d4hq 1/1 Running 1 (15h ago) 18h
kube-system kube-proxy-lq7bb 1/1 Running 1 (15h ago) 18h
kube-system kube-scheduler-k8s-master 1/1 Running 1 (15h ago) 18h
kube-system metrics-server-76bf575666-sfnpg 1/1 Running 1 (15h ago) 18h
kube-system nodelocaldns-mkrzd 1/1 Running 1 (15h ago) 18h
kube-system nodelocaldns-n6bqx 1/1 Running 1 (15h ago) 18h
kube-system nodelocaldns-rhg9n 1/1 Running 1 (15h ago) 18h
kuboard metrics-scraper-5c688489ff-cbfzk 1/1 Running 1 (15h ago) 18hkubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane 18h v1.31.8
k8s-node1 Ready worker 18h v1.31.8
k8s-node2 Ready worker 18h v1.31.8
4. 部署测试资源
###部署NGINX
kubectl create deployment nginx --image=nginx:alpine --replicas=2
###暴露port
kubectl create service nodeport nginx --tcp=80:80
####查看地址
kubectl get deployment -o wide
kubectl get pods -o wide
5.验证服务
验证直接访问 Pod
root@k8s-master:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-77657886dc-bhr94 1/1 Running 0 15h 10.233.81.4 k8s-node1
nginx-77657886dc-cxkmn 1/1 Running 0 15h 10.233.76.4 k8s-node2 root@k8s-master:~# curl -I http://10.233.81.4
HTTP/1.1 200 OK
Server: nginx/1.27.5
Date: Fri, 23 May 2025 01:31:11 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Wed, 16 Apr 2025 12:55:34 GMT
Connection: keep-alive
ETag: "67ffa8c6-267"
Accept-Ranges: bytesroot@k8s-master:~# curl -I http://10.233.76.4
HTTP/1.1 200 OK
Server: nginx/1.27.5
Date: Fri, 23 May 2025 01:31:21 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Wed, 16 Apr 2025 12:55:34 GMT
Connection: keep-alive
ETag: "67ffa8c6-267"
Accept-Ranges: bytes
6.docker安装kuboard作为安装管理界面,默认用户名密码:admin、Kuboard123
docker run -itd --restart=unless-stopped --name=kuboard -p 31000:80/tcp -p 10081:10081/tcp -e KUBOARD_ENDPOINT="http://本机ip:80:80" -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" -v /root/kuboard-data:/data eipwork/kuboard:v3.5.2.7
相关文章:

使用KubeKey快速部署k8s v1.31.8集群
实战环境涉及软件版本信息: 使用kubekey部署k8s 1. 操作系统基础配置 设置主机名、DNS解析、时钟同步、防火墙关闭、ssh免密登录等等系统基本设置 dnf install -y curl socat conntrack ebtables ipset ipvsadm 2. 安装部署 K8s 2.1 下载 KubeKey ###地址 https…...
FreeSWITCH 纯内网配置
纯内网,且同一个网段,Fs 可简化配置,要点是: 1. 不需要事先配置 directory,任意号码都可以注册,且无挑战 2. 呼叫无挑战 不需要考虑那么多安全问题 配置如下: 1. 全局变量 <X-PRE-PROCESS cmd"…...

leetcode hot100:十四、解题思路大全:真·大全!
因为某大厂的算法没有撕出来,怒而整理该贴。部分题目有python版本的AC代码。本贴耗时4天呜呜呜 1.哈希 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下…...

kali的简化安装
首先点击kali的官网 https://www.kali.org/get-kali/#kali-platforms 点击虚拟机版本 下载VMware版本的压缩包 解压后 点击 后缀名为 .vmx的文件 原始账号密码为 kali kali 这样安装 就不需要我们再去配置镜像 等等复杂操作了...
交换机的连接方式堆叠和级联
以下是交换机的堆叠和级联各自的优缺点总结,帮助快速对比选择: 一、堆叠(Stacking) 优点 高性能 堆叠链路带宽高(如10G/40G/100G),成员间数据通过背板直连,无带宽瓶颈。支…...

Vortex GPGPU的github流程跑通与功能模块波形探索(三)
文章目录 前言一、./build/ci下的文件结构二、基于驱动进行仿真过程牵扯的文件2.1 blackbox.sh文件2.2 demo文件2.3 额外牵扯到的ramulator2.3.1 ramulator简单介绍2.3.2 ramulator使用方法2.3.3 ramulator的输出2.3.4 ramulator的复现2.3.4.1 调试与验证(第 4.1 节…...
React深度解析:Hooks体系与Redux Toolkit现代状态管理实践
前言 React作为当今最流行的前端框架之一,其生态体系不断演进,为开发者提供了更高效、更优雅的解决方案。本文将深入探讨React的两大核心主题:Hooks体系(特别是useState和useEffect)以及Redux Toolkit现代状态管理方案…...

实用蓝牙耳机哪款好?先做好使用场景分析!
市面上的蓝牙耳机款式繁多,618到来之际,消费者如何选择适合自己的蓝牙耳机?实用蓝牙耳机哪款好?关键在于做好使用场景分析!今天,就带大家结合不同的使用场景,分享三款倍思音频的精品蓝牙耳机。 …...
Rules and Monetization
The system creates rules that allow them to monetize. The system doesn’t just enforce rules — it creates them strategically to monetize control. 🔧 How It Works: Invent a rule (e.g., “You need a permit to sell food.”)Claim it’s for safety …...

防火墙NAT地址组NAT策略安全策略
本文仅供学习交流,所涉及的知识技术产权归属华为技术有限公司所有!!! 本文仅供学习交流,所涉及的知识技术产权归属华为技术有限公司所有!!! 本文仅供学习交流,所涉及的…...
python开发环境管理和包管理
在 Python 开发中,环境管理 和 包管理 是两个非常重要的概念。它们帮助开发者: 这里写目录标题 一、什么是 Python 环境管理?二、什么是 Python 包管理?三、常见文件说明(用于包管理和环境配置)四、典型流程…...

Windows 使用 WSL 安装 Ubuntu
一,前言 Windows 上轻松跑 Linux 又不想用笨重的VMware 和VirtualBox ,怎么办? 开源项目 Windows Subsystem for Linux (WSL)。它解决了许多开发者在 Windows 和 Linux 间切换的痛点,实现在 Windows 上无缝跑 Linux 工具和命令。…...
.jsx文件和.tsx文件有什么区别
.tsx 和 .jsx 是两种用于 React 开发的 JavaScript 文件扩展名,它们的主要区别在于对 TypeScript 的支持以及使用场景。以下是详细对比: 定义 .jsx:是 JavaScript XML 的缩写,用于在 JavaScript 中编写类似 XML 的 JSX 语法&…...

第九天的尝试
目录 一、每日一言 二、练习题 三、效果展示 四、下次题目 五、总结 一、每日一言 创造美好的代价是努力,失望以及毅力,首先是痛苦,然后才是欢乐。 时间是快的,看怎么利用,安排好一切事情,才能从容面对…...
每日算法 -【Swift 算法】寻找字符串中最长回文子串(三种经典解法全解析)
🧩 最长回文子串问题:三种经典解法全解析(含代码注释) 本文将系统讲解“最长回文子串”问题的三种常见解法:中心扩展法、动态规划、马拉车算法(Manacher’s Algorithm),并进行对比与…...
《Cesium全生态解析:从入门到精通的3D地理空间开发指南》
在WebGL、GIS和三维可视化技术高速发展的今天,Cesium 已经从一个开源地图引擎成长为全球开发者构建数字地球的核心工具。从地球到火星,从网页到游戏引擎,Cesium以其跨平台、高精度和无限扩展性,重新定义了我们对空间数据的交互方式…...
pytorch LSTM 结构详解
最近项目用到了LSTM ,但是对LSTM 的输入输出不是很理解,对此,我详细查找了lstm 的资料 import torch.nn as nnclass LSTMModel(nn.Module):def __init__(self, input_size1, hidden_size50, num_layers2):super(LSTMModel, self).__init__()…...

流程自动化引擎:重塑企业数字神经回路
在数字经济高速发展的今天,企业运营的核心逻辑正在经历一场静默的革命。流程自动化引擎作为这场变革的中枢神经系统,通过智能化的技术手段重构企业的业务逻辑与决策链路,将原本离散的“数字神经元”编织成高效协同的神经网络。这种技术不仅打…...

nginx web服务日志分析
特点: 实时分析:支持实时分析 Nginx 日志,无需预先存储大量日志数据,能即时反馈网站的访问情况。轻量级高效:资源占用少,运行速度快,适合处理高流量网站的日志分析。多种输出格式:除…...

VSCode+EIDE通过KeilC51编译,使VSCode+EIDE“支持”C和ASM混编
在使用Keil C51时,要让Keil C51支持混编则需要在混编的.c文件上右键选择Options for File *(ALTF7),打开选项界面后,在 Properties 页 勾上 Generate Assembler SRC File 和 Assemble SRC File ,如下图所示: 这样设置后…...
5.23本日总结
一、英语 复习list5list25 二、数学 写14讲部分课后题,学习15讲部分 三、408 写计网5.3题目,学习计组第一章 四、总结 二重积分的题目也涉及了一元函数积分相关知识,该部分遗忘较多,后续需要再复习。 五、明日计划 英语&…...

游戏引擎学习第298天:改进排序键 - 第1部分
关于向玩家展示多个房间层所需的两种 Z 值 我们在前一天基本完成了为渲染系统引入分层 Z 值的工作,但还没有完全完成所有细节。我们开始引入图形渲染中的分层概念,即在 Z 轴方向上拥有多个独立图层,每个图层内部再使用一个单独的 Z 值来实现…...

Mysql篇-优化
Mysql篇主要是纯理论的面试问题与技巧。 主要从以下进行开展: 索引相关问题: 1、Mysql如何定位慢查询? Mysql慢查询:某个业务查询数据响应时间过长或者与预期响应时间相差大。 表象:页面加载过慢、接口压测响应时间…...
Java 集合框架核心知识点全解析:从入门到高频面试题(含 JDK 源码剖析)
一、Java 集合框架体系架构 Java 集合框架分为两大分支: Collection接口:存储单个元素,包括: List:有序、可重复(如ArrayList、LinkedList)Set:无序、唯一(如HashSet、…...

一文详解生成式 AI:李宏毅《生成式 AI 导论》学习笔记
生成式 AI 是怎么回事 人工智能(Artificial Intelligence) “智能”是一个广泛而复杂的概念,其定义和应用范围随着技术、科学和社会的发展不断演变。在当前的语境下,“智能”通常与人工智能(AI)相关联&am…...

什么是物联网 (IoT):2024 年物联网概述
物联网(IoT)是一个有望彻底改变我们生活、工作以及与环境互动方式的概念。如今,越来越多的新兴企业和老牌企业都在利用物联网的力量创造创新产品与服务。正因为这一转变,互联互通已成为我们生活中不可或缺的一部分,科技…...

8级-数组
前情回顾:在7级的时候,我们学习了如何定义、使用函数 目录 概念 什么是数组? 一维数组 声明 初始化 访问元素 计算数组长度 二维数组 声明 初始化 访问元素 思考 一维数组在内存中如何存储? 二维数组在内存中如何存储&…...

大模型 Agent 就是文字艺术吗?
最近在技术圈里有一个很有趣的争论:大模型 Agent 是不是就是各种 Prompt 的堆叠?像 Manus 这样看起来很智能的 Agent,本质上是不是就是用巧妙的 Prompt 约束大模型生成更好的输出?换句话说,这是不是一门文字艺术&#…...

YOLOv8检测头代码详解(示例展示数据变换过程)
本文旨在通过实例数据,详细解读YOLOv8检测头的网络结构及其代码实现。首先将从检测头的网络架构开始讲解,涵盖代码与网络结构图的对比分析。关键在于深入探讨检测头的输出结果,因为这些输出将直接用于损失函数的计算。由于在不同阶段…...

JUC并发编程1
什么是juc 在java的java.util.concurrent包下的工具。 锁 传统的synchronize public class SealTicket {int total 50;public synchronized void seal() {if (total > 0) {System.out.println(Thread.currentThread().getName() "卖出第" (total--) "张…...