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

news/2025/2/24 12:11:59

目录

一、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.niftyadmin.cn/n/5864312.html

相关文章

R语言安装教程(附安装包)R语言4.3.2版本安装教程

文章目录 前言一、安装包下载二、R-4.3.2安装步骤三、rtools43安装步骤四、RStudio安装步骤 前言 本教程将详细、全面地为你介绍在 Windows 系统下安装 R 语言 4.3.2 的具体步骤。无论你是初涉数据领域的新手,还是希望更新知识体系的专业人士,只要按照本…

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

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

单页图床HTML源码+本地API接口图床系统修复版源码

源码介绍 图床系统是一种用于存储和管理图片文件的在线服务。它允许用户上传图片文件,并生成相应的图片链接,从而方便用户在网页、社交媒体或其他平台上分享图片。 PS:源码压缩包分为两个版本,一个是调用360第三方api接口,另外一…

mac安装rabbitMq 启动关闭(一)

一、brew安装rabbitMq brew install rabbitmq 安装完毕之后,可以去/usr/local/Cellar/rabbitmq/3.8.14路径查看自己安装的rabbitmq 二、启动rabbitMq 用这段命令启动rabbitmq rabbitmq-plugins enable rabbitmq_management //下面这个是关闭rabbitMq rabbitmq-plu…

EWM 自动补充库存

1 简介 EWM 补充库存有很多种方式,计划性补充、订单相关补充、直接补充、单物料补充和自动化补充。在传统的仓库管理模式中,库存管理主要依赖人工经验和定期盘点。工作人员需要定期在仓库中逐一清点货物,记录库存数量,这一过程不仅耗时费力,而且极易出错。一旦货物种类繁…

Linux-Ansible模块完结

文章目录 User和GroupHostname、Cron、Yum和Service 🏡作者主页:点击! 🤖Linux专栏:点击! ⏰️创作时间:2025年02月23日19点59分 User和Group User和Group模块实践 ansible 192.168.1.100 -m …

【Java八股文】07-Redis面试篇

【Java八股文】07-Redis面试篇 Redis面试篇认识redis为什么用 Redis 作为 MySQL 的缓存? 数据结构讲一下Redis底层的数据结构ZSet底层是由什么实现的 线程模型Redis 是单线程吗?Redis怎么进行I/O多路复用的?Redis 采用单线程为什么还这么快&a…

Python----数据分析(Numpy一:numpy库简介,与list列表的区别,数组的创建,随机数组的创建)

一、 Numpy库简介 1.1、概念 NumPy(Numerical Python)是一个开源的Python科学计算库,旨在为Python提供 高性能的多维数组对象和一系列工具。NumPy数组是Python数据分析的基础,许多 其他的数据处理库(如Pandas、SciPy)都依赖于Num…