背景:使用一个命令kk(KubeKey)同时快速安装 Kubernetes 和 KubeSphere的集成环境,提高效率,减少部署时所花费的精力。这里环境为apple m2
一、KubeSphere简介
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的DevOps 工作流。它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用 (plug-and-play) 的集成。
k8s的web调度系统多种多样,KubeSphere是其中相对不错的,并且在KubeSphere 3.0之后推出了KubeKey。KubeKey支持一键安装k8s或者KubeSphere,安装选择上也可以选择单点安装、集群安装及扩容升级等集群操作,非常方便。
二、kk简介
kk即KubeKey简称(由 Go 语言开发)是一种全新的安装工具,替代了以前使用的基于 ansible 的安装程序。KubeKey 为您提供灵活的安装选择,您可以仅安装 Kubernetes,也可以同时安装 Kubernetes 和 KubeSphere
(1)KubeKey 使用场景
仅安装 Kubernetes
使用一个命令同时安装 Kubernetes 和 KubeSphere
扩缩集群和升级集群
安装 Kubernetes 相关的插件(Chart 或 YAML)
(2)KubeKey 如何运作
下载 KubeKey 之后,您可以使用可执行文件 kk 来进行不同的操作。无论是使用它来创建,扩缩还是升级集群,都必须事先使用 kk 准备配置文件。此配置文件包含集群的基本参数,例如主机信息、网络配置(CNI 插件以及 Pod 和 Service CIDR)、仓库镜像、插件(YAML 或 Chart)和可插拔组件选项(如果您安装 KubeSphere)。有关更多信息,请参见示例配置文件。
准备好配置文件后,您需要使用 ./kk 命令以及不同的标志来进行不同的操作。之后,KubeKey 会自动安装 Docker,并拉取所有必要的镜像以进行安装。安装完成后并可以检查安装日志
(3)选择 KubeKey原因
以前基于 ansible 的安装程序依赖于许多软件,例如 Python。KubeKey 由 Go 语言开发,可以消除在多种环境中出现的问题,确保成功安装。
KubeKey 支持多种安装选项,例如 All-in-One、多节点安装以及离线安装。
KubeKey 使用 Kubeadm 在节点上尽可能多地并行安装 Kubernetes 集群,使安装更简便,提高效率。与旧版的安装程序相比,它极大地节省了安装时间。
KubeKey 提供内置高可用模式,支持一键安装高可用 Kubernetes 集群。
KubeKey 旨在将集群作为对象来进行安装,即 CaaO。
1、操作系统环境
cpu arm64架构 mac m2
2、虚拟机环境配置
cpu arm 6核 16G 60G
虚拟机 ParallelsDesktop-19.0.0-54570工具
linux红帽rhel-9.3-aarch64系统
集群节点数量:1节点
注:生产环境需多节点,保证稳定
服务器IP | hostname | kk | KubeSphere | Kubernetes | docker | containerd | 备注 |
10.211.55.6 | master | v3.0.7 | v3.3.2 | v1.24.7 | v24.0.2 | v1.6.4 |
3、环境配置(所有节点执行)
(1)关闭防火墙
systemctl disable firewalld && systemctl stop firewalld && systemctl status firewalld
(2)关闭swap分区
swapoff -a
echo "vm.swappiness=0" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
(3)安装依赖组件
yum install -y ebtables socat ipset conntrack
(4)修改hostname
名称根据不同的节点进行修改,master、node1、node2(多节点操作)
hostnamectl --static set-hostname master
hostnamectl --static set-hostname node1
hostnamectl --static set-hostname node2
3、安装集群
使用KubeKey安装集群,整个过程只需要在master节点执行即可
(1)设置国内源
export KKZONE=cn
(2)下载 KubeKey
方法1:
wget -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -
方法2:
arm(m2)架构:
wget https://github.com/kubesphere/kubekey/releases/download/v3.0.7/kubekey-v3.0.7-linux-arm64.tar.gz
(3) kk 文件添加可执行权限
chmod +x kk
(4)查看kk版本
./kk version
(5)查看kk支持的k8s版本
./kk version --show-supported-k8s
(6)创建集群配置文件
./kk create config --with-kubernetes v1.24.7 --with-kubesphere v3.3.2
注:--with-kubesphere参数 指定安装kubesphere,反之不安装
v3.3.2 参数 指定安装版本 ,否则默认安装最新版本
(7)根据节点信息修改config-sample.yaml文件
执行完命令后会生成config-sample.yaml文件,根据集群环境修改config-sample.yaml文件 添加集群主机与角色
vi config-sample.yaml
hosts:
{name: master, address: 10.211.55.10, internalAddress: 10.211.55.10, user: xxxxx, password: "xxxxxx",arch: arm64}
roleGroups:
etcd:
master
control-plane:
master
worker:
master
将hosts修改为集群的主机名地址,并填写服务器的用户名和密码;roleGroups进行分配节点角色名称,修改完毕进行保存
特别注意:
hosts:指定节点的 IP、ssh 用户、ssh 密码、ssh 端口。如果cpu是arm架构(apple m1 m2 m3)需在hosts栏中手工指定 arch: arm64,方可安装arm架构的软件包,否则未指定部署时会安装 X86 架构的软件包。
arm架构截图:
(8)kubekey集群安装
此集群部署为1.24.7,因从k8s版本1.24开始,k8s默认支持 containerd 但不支持docker,故用参数 --container-manager containerd 指定runtime运行时环境 默认为docker
./kk create cluster -f config-sample.yaml --container-manager containerd 回车 确认 输入yes即可安装部署
到这步 Please wait for the installation to complete: <---<< 代表前面安装已全部执行成功
稍等后便可安装完成,如安装未成功,则查看日志具体原因解决后,再重新执行一次
安装成功后会有登录控制台及查看安装日志命令信息,如下图
安装成功后,查看安装日志命令:
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
(9)安装完成后出现登录验证信息,如下:
登录控制台默认
Console: http://10.211.55.6:30880
Account: admin
Password: P@88w0rd