目录
[下载 KubeKey](#下载 KubeKey)
一、KubeKey简介
KubeKey是一个开源轻量级工具,采用go语言开发,用于部署Kubernetes集群。它提供了一种灵活、快速、方便的方式来安装Kubernetes和KubeSphere,具有以下特点:
- 安装可选,仅安装 Kubernetes或同时安装 Kubernetes 和 KubeSphere。
- 支持在线和离线安装,方便用户在离线环境下快速部署集群。
- 安装简单高效,相比Ansible方式安装依赖更少,使用Kubeadm 在节点上并行安装 K8s 集群,提升了安装效率节省了安装时间。
- 涵盖多种部署方式,从 all-in-one 扩展到多节点集群包括 HA 集群。
官方地址:KubeKey
二、k8s集群+KubeSphere安装
集群规划
主机 IP | 主机名 | 角色 |
---|---|---|
192.168.5.10 | node1 | control plane, etcd |
192.168.5.11 | node2 | worker |
192.168.5.12 | node3 | worker |
硬件要求
系统 | 最低要求(每个节点) |
---|---|
Ubuntu 16.04,18.04,20.04 | CPU:2 核,内存:4 G,硬盘:20 G |
Debian Buster,Stretch | CPU:2 核,内存:4 G,硬盘:20 G |
CentOS 7.x | CPU:2 核,内存:4 G,硬盘:20 G |
Red Hat Enterprise Linux 7 | CPU:2 核,内存:4 G,硬盘:20 G |
SUSE Linux Enterprise Server 15 /openSUSE Leap 15.2 | CPU: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博客
所有节点安装依赖
bash
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
bash
[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
bash
[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。
bash
# 同时安装KubeSphere
[root@node1 ~]# ./kk create config --with-kubesphere
Generate KubeKey config file successfully
编辑config-sample.yaml配置文件,配置节点信息和集群参数。
bash
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,安装过程如下:
bash
[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成功。
bash
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
#####################################################
验证命令
执行以下命令也可以看到安装结果
bash
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

初次登录需要修改密码

登录后界面如下:
