KubeKey一键安装部署k8s集群和KubeSphere详细教程

news2025/2/24 5:13:03

目录

一、KubeKey简介

二、k8s集群+KubeSphere安装

集群规划

硬件要求

Kubernetes支持版本

操作系统要求

SSH免密登录

配置集群时钟

所有节点安装依赖

安装docker

DNS要求

存储要求

下载 KubeKey

验证KubeKey

配置集群文件

安装集群

验证命令

登录页面


一、KubeKey简介

KubeKey是一个开源轻量级工具,采用go语言开发,用于部署Kubernetes集群。它提供了一种灵活、快速、方便的方式来安装Kubernetes和KubeSphere,具有以下特点:

  1. 安装可选,仅安装 Kubernetes或同时安装 Kubernetes 和 KubeSphere。
  2. 支持在线和离线安装,方便用户在离线环境下快速部署集群。
  3. 安装简单高效,相比Ansible方式安装依赖更少,使用Kubeadm 在节点上并行安装 K8s 集群,提升了安装效率节省了安装时间。
  4. 涵盖多种部署方式,从 all-in-one 扩展到多节点集群包括 HA 集群。

官方地址:KubeKey

Github地址:GitHub - kubesphere/kubekey: Install Kubernetes/K3s only, both Kubernetes/K3s and KubeSphere, and related cloud-native add-ons, it supports all-in-one, multi-node, and HA 🔥 ⎈ 🐳

二、k8s集群+KubeSphere安装

集群规划

主机 IP主机名角色
192.168.5.10node1control plane, etcd
192.168.5.11node2worker
192.168.5.12node3worker

硬件要求

系统最低要求(每个节点)
Ubuntu 16.04,18.04,20.04CPU:2 核,内存:4 G,硬盘:20 G
Debian Buster,StretchCPU:2 核,内存:4 G,硬盘:20 G
CentOS 7.xCPU:2 核,内存:4 G,硬盘:20 G
Red Hat Enterprise Linux 7CPU:2 核,内存:4 G,硬盘:20 G
SUSE Linux Enterprise Server 15 /openSUSE Leap 15.2CPU:2 核,内存:4 G,硬盘:20 G

Kubernetes支持版本

  • v1.19:   v1.19.15
  • v1.20:   v1.20.10
  • v1.21:   v1.21.14
  • v1.22:   v1.22.15
  • v1.23:   v1.23.10 (default)
  • v1.24:   v1.24.7
  • v1.25:   v1.25.3

操作系统要求

笔者操作系统为CentOS Linux release 7.9.2009 x86_64,环境配置如下:

SSH免密登录

SSH配置免密登录,可以访问所有节点,具体配置可参考我的另一篇博客K8S简介和安装部署详细教程-CSDN博客

配置集群时钟

所有节点保证时间同步, 具体配置可参考我的另一篇博客K8S简介和安装部署详细教程-CSDN博客

所有节点安装依赖

yum install curl openssl socat conntrack ebtables ipset ipvsadm bash-completion -y

安装docker

docker可以自己安装,也可以通过 KubeKey 安装, 自行安装可参考我的另一篇博客在Centos系统中安装、体验和卸载Docker_# executing docker install script, commit: e5543d4-CSDN博客

DNS要求

确保/etc/resolv.conf中的DNS地址可用,测试DNS解析功能如下:

# 如果DNS配置正确,会返回www.baidu.com的IP地址信息
[root@node1 ~]# nslookup www.baidu.com
Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
Name:   www.baidu.com
Address: 180.101.49.44
Name:   www.baidu.com
Address: 180.101.51.73
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 240e:e9:6002:1ac:0:ff:b07e:36c5
Name:   www.a.shifen.com
Address: 240e:e9:6002:1fd:0:ff:b0e1:fe69

存储要求

KubeKey 支持安装不同的存储插件和存储类型,如果KubeKey 未指定默认存储类型,则将默认安装 OpenEBS,使用节点HostPost创建本地持久卷,比较适合开发和测试环境,对于生产,请使用 NFS/Ceph/GlusterFS作为持久化存储,安装配置NFS服务可移步博客:CentOS系统安装NFS-CSDN博客

下载 KubeKey

在任一节点下载最新版KubeKey,当前最新版为v3.1.7

[root@node1 ~]# export KKZONE=cn  # 设置下载区域为中国,加速下载
[root@node1 ~]# curl -sfL https://get-kk.kubesphere.io | sh -

Downloading kubekey v3.1.7 from https://kubernetes.pek3b.qingstor.com/kubekey/releases/download/v3.1.7/kubekey-v3.1.7-linux-amd64.tar.gz ...


Kubekey v3.1.7 Download Complete!

[root@node1 ~]# chmod +x kk #添加可执行权限

验证KubeKey

[root@node1 ~]# ./kk version
kk version: &version.Info{Major:"3", Minor:"1", GitVersion:"v3.1.7", GitCommit:"da475c670813fc8a4dd3b1312aaa36e96ff01a1f", GitTreeState:"clean", BuildDate:"2024-10-30T09:41:20Z", GoVersion:"go1.19.2", Compiler:"gc", Platform:"linux/amd64"}

配置集群文件

使用 KubeKey 生成默认的集群配置文件,可指定k8s版本,不填选当前默认版本,不添加标志 --with-kubesphere,则不会部署 KubeSphere,添加了标志不指定 KubeSphere 版本,则会安装最新版本的 KubeSphere。

# 同时安装KubeSphere
[root@node1 ~]# ./kk create config --with-kubesphere
Generate KubeKey config file successfully

编辑config-sample.yaml配置文件,配置节点信息和集群参数。


apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: node1, address: 192.168.5.10, internalAddress: 192.168.5.10, user: root, password: "xxx"}
  - {name: node2, address: 192.168.5.11, internalAddress: 192.168.5.11, user: root, password: "xxx"}
  - {name: node3, address: 192.168.5.12, internalAddress: 192.168.5.12, user: root, password: "xxx"}
  roleGroups:
    etcd:
    - node1
    control-plane: 
    - node1
    worker:
    - node2
    - node3
...
  addons:
  - name: nfs-client
    namespace: kube-system
    sources: 
      chart: 
        name: nfs-client-provisioner
        repo: https://charts.kubesphere.io/main
        values:
        - storageClass.defaultClass=true
        - nfs.server=192.168.5.10
        - nfs.path=/data/nfs

安装集群

使用配置文件创建集群,默认安装k8s版本为v1.23.17,安装过程中出现是否继续安装输入yes,安装过程如下:

[root@node1 ~]# export KKZONE=cn
[root@node1 ~]# ./kk create cluster -f config-sample.yaml


 _   __      _          _   __           
| | / /     | |        | | / /           
| |/ / _   _| |__   ___| |/ /  ___ _   _ 
|    \| | | | '_ \ / _ \    \ / _ \ | | |
| |\  \ |_| | |_) |  __/ |\  \  __/ |_| |
\_| \_/\__,_|_.__/ \___\_| \_/\___|\__, |
                                    __/ |
                                   |___/

17:57:28 CST [GreetingsModule] Greetings
17:57:28 CST message: [node3]
Greetings, KubeKey!
17:57:28 CST message: [node2]
Greetings, KubeKey!
17:57:28 CST message: [node1]
Greetings, KubeKey!
17:57:28 CST success: [node3]
17:57:28 CST success: [node2]
17:57:28 CST success: [node1]
17:57:28 CST [NodePreCheckModule] A pre-check on nodes
17:57:29 CST success: [node2]
17:57:29 CST success: [node1]
17:57:29 CST success: [node3]
17:57:29 CST [ConfirmModule] Display confirmation form
+-------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
| name  | sudo | curl | openssl | ebtables | socat | ipset | ipvsadm | conntrack | chrony | docker | containerd | nfs client | ceph client | glusterfs client | time         |
+-------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
| node1 | y    | y    | y       | y        | y     | y     | y       | y         | y      | 26.1.4 | 1.6.33     | y          |             |                  | CST 17:57:29 |
| node2 | y    | y    | y       | y        | y     | y     | y       | y         | y      | 26.1.4 | 1.6.33     | y          |             |                  | CST 17:57:29 |
| node3 | y    | y    | y       | y        | y     | y     | y       | y         | y      | 26.1.4 | 1.6.33     | y          |             |                  | CST 17:57:29 |
+-------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+

This is a simple check of your environment.
Before installation, ensure that your machines meet all requirements specified at
https://github.com/kubesphere/kubekey#requirements-and-recommendations

Install k8s with default version:  v1.23.17
Continue this installation? [yes/no]: yes

安装时间大概20分钟左右,console最后会打印如下内容表示安装k8s+KubeSphere成功。

21:46:03 CST success: [node1]
#####################################################
###              Welcome to KubeSphere!           ###
#####################################################

Console: http://192.168.5.10:30880
Account: admin
Password: P@88w0rd
NOTES:
  1. After you log into the console, please check the
     monitoring status of service components in
     "Cluster Management". If any service is not
     ready, please wait patiently until all components 
     are up and running.
  2. Please change the default password after login.

#####################################################
https://kubesphere.io             2025-02-23 21:58:22
#####################################################

验证命令

执行以下命令也可以看到安装结果

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

登录页面

浏览器打开http://192.168.5.10:30880,输入用户名和密码

Account: admin
Password: P@88w0rd

初次登录需要修改密码

 登录后界面如下:

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

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

相关文章

车载诊断数据库 --- AUTOSAR诊断文件DEXT简介

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

庙算兵棋推演AI开发初探(5-数据处理)

碎碎念:这最近几个月过得那叫一个难受,研究生开题没过、需求评审会在4月和6月开了2次、7月紧接着软件设计评审会,加班干得都是文档的事情,还有开会前的会务和乱七八糟的琐事,我们干的还被规定弄的束手束脚,…

【MyBatis】#{} 与 ${} 的区别(常见面试题)

目录 前言 预编译SQL和即时SQL 什么是预编译SQL? 什么是即时SQL? 区别 #{} 与 ${}的使用 防止SQL注入 什么是SQL注入? 原理 排序功能 模糊查询 总结#{}和${}的区别 前言 在前面的学习中,我们已经知道了如果SQL语句想…

鸿蒙开发环境搭建-入门篇

本文章讲述如何搭建鸿蒙应用开发环境:新建工程、虚拟机运行、真机调试等。 开发工具: DevEco Studio 5.0.3.906 os系统: mac 参考文档:https://juejin.cn/post/7356143704699699227 官网鸿蒙应用开发学习文档:https://developer.huawei.com/c…

iOS开发 网络安全

iOS开发中的网络安全 在当前的数字化时代,任何应用程序都需要重视网络安全。尤其是对于iOS应用开发者而言,确保应用与服务器之间的数据传输安全是至关重要的。接下来,我们将学习“iOS开发 网络安全”的实现过程。 流程步骤 以下是实现iOS网…

MATLAB在投资组合优化中的应用:从基础理论到实践

引言 投资组合优化是现代金融理论中的核心问题之一,旨在通过合理配置资产,实现风险与收益的最佳平衡。MATLAB凭借其强大的数学计算能力和丰富的金融工具箱,成为投资组合优化的理想工具。本文将详细介绍如何使用MATLAB进行投资组合优化&#…

银河麒麟系统安装mysql5.7【亲测可行】

一、安装环境 cpu:I5-10代; 主板:华硕; OS:银河麒麟V10(SP1)未激活 架构:Linux 5.10.0-9-generic x86_64 GNU/Linux mysql版本:mysql-5.7.34-linux-glibc2.12-x86_64.ta…

自动创建spring boot应用(eclipse版本)

使用spring starter project创建项目 设置Service URL 把Service URL设置为 https://start.aliyun.com/ 如下图: 使用这个网址,创建项目更快。 选择Spring Web依赖 项目结构 mvnw和mvnw.cmd:这是maven包装器(wrapper)脚本&…

基于Flask的第七次人口普查数据分析系统的设计与实现

【Flask】基于Flask的第七次人口普查数据分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 基于Flask的人口普查可视化分析系统 二、项目界面展示 登录/注册 首页/详情 …

Linux:文件(三)

1. 磁盘 基本概念 机械磁盘在现在的计算机中基本是唯一的一个机械设备 速度较内存更慢,容量大价格便宜。 磁盘是永久性存储介质,断电后数据还在。 内存是易失性存储介质,断电后(未写入磁盘的)数据丢失。 物理存储结构 扇区:…

DeepSeek 给我一个 DeepSeekUI 页面

接着上次分享内容 三步安装 DeepSeek 说,DeepSeek 下载好了,总不能是黑框框对话吧,总得找一个 UI 界面使用吧。 本地运行 DeepSeek 比安装 python、jdk 简单多了,本地还没装过的可以参考上次的文档安装。 于是找了几个开源的试了试…

Java NIO与传统IO性能对比分析

Java NIO与传统IO性能对比分析 在Java中,I/O(输入输出)操作是开发中最常见的任务之一。传统的I/O方式基于阻塞模型,而Java NIO(New I/O)引入了非阻塞和基于通道(Channel)和缓冲区&a…

小智机器人CMakeLists编译文件解析

编译完成后,成功烧录! 这段代码是一个CMake脚本,用于配置和构建一个嵌入式项目,特别是针对ESP32系列芯片的项目。CMake是一个跨平台的构建系统,用于管理项目的编译过程。 set(SOURCES "audio_codecs/audio_code…

【科研绘图系列】R语言绘制SCI论文图合集

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载Load dataFigure 1Fig 1B: functional assays adhensionFIG 1C: Functional assays OPK Figure 2Fig 2C: Settings and function fo…

VSCode ssh远程连接内网服务器(不能上网的内网环境的Linux服务器)的终极解决方案

VSCode ssh远程连接内网服务器(不能上网的内网环境的Linux服务器) 离线下载vscode-server并安装: 如果远程端不能联网可以下载包离线安装,下载 vscode-server 的 url 需要和 vscode 客户端版本的 commit-id 对应.通过 vscode 面板的帮助->关于可以获…

支持向量机(SVM):算法讲解与原理推导

1 SVM介绍 SVM是一个二类分类器,它的全称是Support Vector Machine,即支持向量机。 SVM的目标是找到一个超平面,使用两类数据离这个超平面越远越好,从而对新的数据分类更准确,即使分类器更加健壮。比如上面的图中&am…

macos sequoia 禁用 ctrl+enter 打开鼠标右键菜单功能

macos sequoia默认ctrlenter会打开鼠标右键菜单,使得很多软件有冲突。关闭方法: end

Android14 Camera框架中Jpeg流buffer大小的计算

背景描述 Android13中,相机框架包含对AIDL Camera HAL的支持,在Android13或更高版本中添加的相机功能只能通过AIDL Camera HAL接口使用。 对于Android应用层来说,使用API34即以后版本的Camera应用程序通过Camera AIDL Interface访问到HAL层…

springboot系列十四: 注入Servlet, Filter, Listener + 内置Tomcat配置和切换 + 数据库操作

文章目录 注入Servlet, Filter, Listener官方文档基本介绍使用注解方式注入使用RegistrationBean方法注入DispatcherServlet详解 内置Tomcat配置和切换基本介绍内置Tomcat配置通过application.yml完成配置通过类配置 切换Undertow 数据库操作 JdbcHikariDataSource需求分析应用…

区块链共识机制详解

区块链共识机制详解 🤝 1. 什么是共识机制? 共识机制是区块链网络中,所有节点就某个状态(如交易的有效性)达成一致的规则和过程。它解决了在去中心化网络中如何确保数据一致性的问题。 2. 主流共识机制 2.1 工作量证…