2024 年云原生运维实战文档 99 篇原创计划 第 048 篇 |KubeSphere 最佳实战「2024」系列 第 020 篇
你好,欢迎来到运维有术。
2024年 9月 9号,备受广大网友期待的 KubeSphere v4 终于在GitHub 代码仓库发布了正式的代码,而且是直接越过了 v4.0 直接发布的 v4.1.1。
KubeSphere 官方文档也同步发布了 KubeSphere 4.1.1 版本说明,并更新了相应的产品简介和安装部署等文档。
KubeSphere 自 v4.0 起,引入扩展机制,推出了全新的 KubeSphere 架构:KubeSphere LuBan,它构建在 Kubernetes 之上,是一个分布式的云原生可扩展开放架构,为扩展组件提供一个可热插拔的微内核。支持高度可配置和可扩展。自此,KubeSphere 所有功能组件及第三方组件都会基于 KubeSphere LuBan,以扩展组件的方式无缝融入到 KubeSphere 控制台中,并独立维护版本,真正实现即插即用的应用级云原生操作系统。
基于 KubeSphere LuBa 的 KubeSphere v4 新特性如下:
如何快速体验 KubeSphere LuBan 架构 及 v4.1.1 的新功能特性?All-in-One 部署模式无疑是一种快捷的方式。本文参考官方 「KubeSphere v4 快速入门指南」中的在 Kubernetes 上快速安装 KubeSphere,详细介绍如何在一台主机上,利用 KubeKey v3.1.6 一次性成功部署 KubeSphere v4.1.1 以及 Kubernetes v1.30.4 的 All-in-One 集群。
重要声明:截止 2024 年 9 月 14 日,KubeSphere 官方网站一直没有正式官宣发布 v4.4.1,可能还在筹备中或是代码还会有更新。所以,本文算是一个抢先体验版,最终结果以官方发布版为准。
实战服务器配置
主机名 | IP | CPU | 内存 | 系统盘 | 数据盘 | 用途 |
---|---|---|---|---|---|---|
ksp-control-1 | 192.168.9.150 | 16 | 32 | 40 | 100 | k8s-control-plane/k8s-worker/KubeSphere |
合计 | 1 | 16 | 32 | 40 | 100 |
实战环境涉及软件版本信息
请参考 Kubernetes 集群节点 openEuler 22.03 LTS SP3 系统初始化指南,完成操作系统初始化配置。
初始化指南以 openEuler 22.03 LTS SP3 为例,初始化配置过程同样适用于其他 Linux 发行版,只是命令略有不同。
KubeSphere v4 的部署方式发生了变化,可以直接使用 Helm 在 k8s 集群上部署,因此需要提前安装 Helm(可选,使用 kk 部署 k8s 集群会自动安装,可以不执行下面的操作)。
Helm 官方安装文档中介绍的方式有很多种,本文采用比较灵活的二进制版本安装。
wget https://get.helm.sh/helm-v3.15.4-linux-amd64.tar.gz
tar -zxvf helm-v3.15.4-linux-amd64.tar.gz
/usr/local/bin
目录 mv linux-amd64/helm /usr/local/bin/
# 清理残留
rm -rf linux-amd64/
$ helm version
version.BuildInfo{Version:"v3.15.4", GitCommit:"fa9efb07d9d8debbb4306d72af76a383895aa8c4", GitTreeState:"clean", GoVersion:"go1.22.6"}
使用 KubeKey 部署一个单节点的 Kubernetes 集群。
mkdir ~/kubekey
cd ~/kubekey/
# 选择中文区下载(访问 GitHub 受限时使用)
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | sh -
./kk version --show-supported-k8s
$ ./kk version --show-supported-k8s
v1.19.0
v1.19.8
v1.19.9
v1.19.15
......(受限于篇幅,中间的不展示,请读者根据需求查看)
v1.28.12
v1.28.13
v1.29.0
v1.29.1
v1.29.2
v1.29.3
v1.29.4
v1.29.5
v1.29.6
v1.29.7
v1.29.8
v1.30.0
v1.30.1
v1.30.2
v1.30.3
v1.30.4
v1.31.0
说明: 输出结果为 kk 支持的结果,但不代表 KubeSphere 和其他 k8s 也能完美支持。
kk 支持的 k8s 版本还是比较新的。本文选择 v1.30.4,生产环境可以选择 v1.28.13 或是其他次要版本是双数且补丁版本数超过 5 的版本。不建议选择太老的版本了,毕竟 v1.31 都已经发布了。
export KKZONE=cn
./kk create cluster --with-local-storage --with-kubernetes v1.30.4 --container-manager containerd -y
上面的命令执行后,KubeKey 先检查部署 Kubernetes 的依赖及其它配置是否符合要求。通过检查后,系统将提示您确认安装。输入 yes 并按 ENTER 继续部署。
部署过程需要大约 10分钟,具体看网速和机器配置。部署完成后,您应该会在终端上看到类似于下面的输出。
20:22:42 CST success: [LocalHost]
20:22:42 CST [AddonsModule] Install addons
20:22:42 CST message: [LocalHost]
[0/0] enabled addons
20:22:42 CST success: [LocalHost]
20:22:42 CST [DeployStorageClassModule] Generate OpenEBS manifest
20:22:43 CST success: [ksp-control-1]
20:22:43 CST [DeployStorageClassModule] Deploy OpenEBS as cluster default StorageClass
20:22:44 CST success: [ksp-control-1]
20:22:44 CST Pipeline[CreateClusterPipeline] execute successfully
Installation is complete.
Please check the result using the command:
kubectl get pod -A
注意:此时,我们只是完成了 k8s 集群的部署。
在 control-1 节点运行 kubectl 命令获取 Kubernetes 集群上的可用节点列表。
kubectl get nodes -o wide
正确执行后,输出结果如下 :
$ kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
ksp-control-1 Ready control-plane,worker 4m v1.30.4 192.168.9.150 <none> openEuler 22.03 (LTS-SP3) 5.10.0-182.0.0.95.oe2203sp3.x86_64 containerd://1.7.13
在输出结果中可以看到当前的 Kubernetes 集群节点数量,并详细展示每个节点的名字、状态、角色、存活时间、Kubernetes 版本号、内部 IP、操作系统类型、内核版本和容器运行时等信息。
输入以下命令获取在 Kubernetes 集群上运行的 Pod 列表,确保所有的容器状态都是 Running。
kubectl get pods -A
正确执行后,输出结果如下 :
$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-848b87ffbc-855n7 1/1 Running 0 4m23s
kube-system calico-node-68bxk 1/1 Running 0 4m23s
kube-system coredns-6789f6859f-pphg2 1/1 Running 0 4m23s
kube-system coredns-6789f6859f-rx7wh 1/1 Running 0 4m23s
kube-system kube-apiserver-ksp-control-1 1/1 Running 0 4m40s
kube-system kube-controller-manager-ksp-control-1 1/1 Running 0 4m40s
kube-system kube-proxy-lh4k8 1/1 Running 0 4m23s
kube-system kube-scheduler-ksp-control-1 1/1 Running 0 4m40s
kube-system nodelocaldns-krx6g 1/1 Running 0 4m23s
kube-system openebs-localpv-provisioner-677c4fdd9b-w6gfb 1/1 Running 0 4m23s
下面展示一下最小化部署一套 Kubernetes 集群到底依赖哪些镜像,以及镜像的下载地址、TAG、大小。
$ crictl images
IMAGE TAG IMAGE ID SIZE
registry.cn-beijing.aliyuncs.com/kubesphereio/cni v3.27.4 dc6f84c32585f 88.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/coredns 1.9.3 5185b96f0becf 14.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/k8s-dns-node-cache 1.22.20 ff71cd4ea5ae5 30.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver v1.30.4 8a97b1fb3e2eb 32.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager v1.30.4 8398ad49a121d 31.1MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controllers v3.27.4 6b1e38763f401 33.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy v1.30.4 568d5ba88d944 29MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler v1.30.4 4939f82ab9ab4 19.3MB
registry.cn-beijing.aliyuncs.com/kubesphereio/node v3.27.4 3dd4390f2a85a 117MB
registry.cn-beijing.aliyuncs.com/kubesphereio/pause 3.9 e6f1816883972 321kB
registry.cn-beijing.aliyuncs.com/kubesphereio/provisioner-localpv 3.3.0 739e82fed8b2c 28.8MB
按官方文档示例,执行以下命令通过 helm
安装 KubeSphere 的核心组件 KubeSphere Core。
helm upgrade --install -n kubesphere-system --create-namespace ks-core https://charts.kubesphere.io/main/ks-core-1.1.0.tgz --debug --wait
网络受限时,执行以下命令:
helm upgrade --install -n kubesphere-system --create-namespace ks-core https://charts.kubesphere.io/main/ks-core-1.1.0.tgz --debug --wait --set global.imageRegistry=registry.cn-beijing.aliyuncs.com \
--set apiserver.image.repository=kubesphereio/ks-apiserver \
--set console.image.repository=kubesphereio/ks-console \
--set controller.image.repository=kubesphereio/ks-controller-manager \
--set kubectl.image.repository=kubesphereio/kubectl
部署过程需要大约 2分钟,具体看网速和机器配置,如果镜像提前下载到本地,基本上秒级就能部署一套 KubeSphere Core。
如果显示如下信息,则表明 ks-core 安装成功,输出信息会显示 KubeSphere Web 控制台的 IP 地址、管理员用户名和管理员密码。
NOTES:
Thank you for choosing KubeSphere Helm Chart.
Please be patient and wait for several seconds for the KubeSphere deployment to complete.
1. Wait for Deployment Completion
Confirm that all KubeSphere components are running by executing the following command:
kubectl get pods -n kubesphere-system
2. Access the KubeSphere Console
Once the deployment is complete, you can access the KubeSphere console using the following URL:
http://192.168.9.150:30880
3. Login to KubeSphere Console
Use the following credentials to log in:
Account: admin
Password: P@88w0rd
NOTE: It is highly recommended to change the default password immediately after the first login.
For additional information and details, please visit https://kubesphere.io.
kubectl get pods -n kubesphere-system
正确执行后,输出结果如下 :
$ kubectl get pods -n kubesphere-system
NAME READY STATUS RESTARTS AGE
ks-apiserver-845ff5f5d7-zwnmc 1/1 Running 0 8m13s
ks-console-6ff47bf59c-cnc8v 1/1 Running 0 8m13s
ks-controller-manager-8cc4b554-shksk 1/1 Running 0 8m13s
下面展示一下最小化部署一套 KubeSphere 和 Kubernetes 集群到底依赖哪些镜像,以及镜像的下载地址、TAG、大小。
$ crictl images
IMAGE TAG IMAGE ID SIZE
registry.cn-beijing.aliyuncs.com/kubesphereio/cni v3.27.4 dc6f84c32585f 88.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/coredns 1.9.3 5185b96f0becf 14.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/k8s-dns-node-cache 1.22.20 ff71cd4ea5ae5 30.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/ks-apiserver v4.1.1 34fdf5bb4af7b 55.1MB
registry.cn-beijing.aliyuncs.com/kubesphereio/ks-console v4.1.1 b5ad6cea43b20 59.7MB
registry.cn-beijing.aliyuncs.com/kubesphereio/ks-controller-manager v4.1.1 2706b4d317067 54.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver v1.30.4 8a97b1fb3e2eb 32.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager v1.30.4 8398ad49a121d 31.1MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controllers v3.27.4 6b1e38763f401 33.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy v1.30.4 568d5ba88d944 29MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler v1.30.4 4939f82ab9ab4 19.3MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kubectl v1.27.16 b18a58b880b6e 130MB
registry.cn-beijing.aliyuncs.com/kubesphereio/node v3.27.4 3dd4390f2a85a 117MB
registry.cn-beijing.aliyuncs.com/kubesphereio/pause 3.9 e6f1816883972 321kB
registry.cn-beijing.aliyuncs.com/kubesphereio/provisioner-localpv 3.3.0 739e82fed8b2c 28.8MB
我们打开浏览器访问 Control-1 节点的 IP 地址和端口 30880,可以打开熟悉的 KubeSphere 管理控制台的登录页面。
输入默认用户 admin 和默认密码 P@88w0rd,然后点击「登录」。
登录后,系统会要求您更改 KubeSphere 默认用户 admin 的默认密码,输入新的密码并点击「提交」。
提交完成后,系统会跳转到新的风格的 KubeSphere 用户工作台页面。
在「工作台」页面,点击「集群管理」,进入集群管理页面,页面风格更方便多集群管理。
点击「host 」主集群,进入 host 集群管理页面。新版本的集群管理菜单去掉了不少的功能,默认只有基本的 k8s 管理功能。褒贬不一的开箱即用的监控功能也没了(我个人比较喜欢原来默认集成的监控功能,开箱即用,简单直观)。
企业空间和用户管理,菜单入口分开了,整体功能没太大变化。
在「工作台」页面,点击「企业空间管理」,进入企业空间管理页面。
企业空间和用户管理,菜单入口分开了,整体功能没太大变化。
在「工作台」页面,点击「用户和角色管理」,进入用户和角色管理页面。
在「工作台」页面,点击「扩展中心」,进入扩展中心管理页面,您可以在此对扩展组件进行安装、卸载、升级、配置变更、启用或禁用。
因为,扩展市场里还没有任何扩展组件,所以该页面也是空的,需要后期添加。
最小化安装的 KubeSphere v4.1.1 的扩展市场里是没有任何扩展组件的,需要在后期添加。
新版本居然默认集成了应用商店,所有的默认组件都删除了,而且页面上部的黑色配色有问题,导致用户名 admin 被隐盖了。
部署失败时,可以执行下面的命令卸载 ks-core,然后重新执行安装命令。
helm uninstall ks-core -n kubesphere-system
文章中所有操作步骤,已全部编排为自动化脚本,包含以下内容(因篇幅限制,不在此文档中展示):
运维有术星球会员请到专属代码仓库下载(价值内容,仅星球会员专享)。
以上,就是我今天分享的全部内容。下一期分享的内容还没想好,敬请期待开盲盒。
如果你喜欢本文,请分享、收藏、点赞、评论! 请持续关注 @运维有术,及时收看更多好文!
欢迎加入 「知识星球|运维有术」 ,获取更多的 KubeSphere、Kubernetes、云原生运维、自动化运维、AI 大模型等实战技能。未来运维生涯始终有我坐在你的副驾。
免责声明:
Get 本文实战视频(请注意,文档视频异步发行,请先关注)
版权声明
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。