KubeSphere 最佳实战:14 张高清大图带你抢先体验 KubeSphere v4.1.1, AIO 部署全攻略

2024-09-14 18:00:05 浏览数 (3)

KubeSphere 最佳实战:14 张高清大图带你抢先体验 KubeSphere v4.1.1, AIO 部署全攻略

2024 年云原生运维实战文档 99 篇原创计划 第 048 篇KubeSphere 最佳实战「2024」系列 第 020 篇

你好,欢迎来到运维有术

2024年 9月 9号,备受广大网友期待的 KubeSphere v4 终于在GitHub 代码仓库发布了正式的代码,而且是直接越过了 v4.0 直接发布的 v4.1.1。

kubesphere-releases-v411kubesphere-releases-v411

KubeSphere 官方文档也同步发布了 KubeSphere 4.1.1 版本说明,并更新了相应的产品简介和安装部署等文档。

KubeSphere 自 v4.0 起,引入扩展机制,推出了全新的 KubeSphere 架构:KubeSphere LuBan,它构建在 Kubernetes 之上,是一个分布式的云原生可扩展开放架构,为扩展组件提供一个可热插拔的微内核。支持高度可配置和可扩展。自此,KubeSphere 所有功能组件及第三方组件都会基于 KubeSphere LuBan,以扩展组件的方式无缝融入到 KubeSphere 控制台中,并独立维护版本,真正实现即插即用的应用级云原生操作系统。

基于 KubeSphere LuBa 的 KubeSphere v4 新特性如下:

  • 基于全新微内核架构 KubeSphere LuBan 重构
  • 内置 KubeSphere 扩展市场
  • 支持通过扩展中心统一管理扩展组件
  • 支持 UI、API 扩展
  • 支持通过 kubeconfig 一键导入 member 集群
  • 支持 KubeSphere 服务帐户
  • 支持动态扩展 Resource API
  • 支持添加集群、企业空间、项目到快捷访问
  • 支持通过容器终端进行文件上传和下载
  • 支持适配不同厂商的云原生网关(Kubernetes Ingress API)
  • 支持 API 限流
  • 支持在页面创建持久卷

如何快速体验 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

实战环境涉及软件版本信息

  • 操作系统:openEuler 22.03 LTS SP3 x86_64
  • KubeSphere:v4.1.1
  • Kubernetes:v1.30.4
  • KubeKey: v3.1.6

1. 前置条件

1.1 初始化操作系统

请参考 Kubernetes 集群节点 openEuler 22.03 LTS SP3 系统初始化指南,完成操作系统初始化配置。

初始化指南以 openEuler 22.03 LTS SP3 为例,初始化配置过程同样适用于其他 Linux 发行版,只是命令略有不同。

1.2 安装 Helm

KubeSphere v4 的部署方式发生了变化,可以直接使用 Helm 在 k8s 集群上部署,因此需要提前安装 Helm(可选,使用 kk 部署 k8s 集群会自动安装,可以不执行下面的操作)。

Helm 官方安装文档中介绍的方式有很多种,本文采用比较灵活的二进制版本安装。

  1. 下载二进制版本 Helm
代码语言:bash复制
wget https://get.helm.sh/helm-v3.15.4-linux-amd64.tar.gz
  1. 解压
代码语言:bash复制
tar -zxvf helm-v3.15.4-linux-amd64.tar.gz
  1. 移动二进制文件到 /usr/local/bin 目录
代码语言:bash复制
 mv linux-amd64/helm /usr/local/bin/
 # 清理残留
 rm -rf linux-amd64/
  1. 验证 Helm 可用性
代码语言:bash复制
$ helm version
version.BuildInfo{Version:"v3.15.4", GitCommit:"fa9efb07d9d8debbb4306d72af76a383895aa8c4", GitTreeState:"clean", GoVersion:"go1.22.6"}

2. 部署 Kubernetes 集群

使用 KubeKey 部署一个单节点的 Kubernetes 集群。

2.1 下载 KubeKey

  • 下载最新版的 KubeKey(v3.1.6)
代码语言:shell复制
mkdir ~/kubekey
cd ~/kubekey/

# 选择中文区下载(访问 GitHub 受限时使用)
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | sh -
  • 查看 KubeKey 支持的 Kubernetes 版本列表 ./kk version --show-supported-k8s
代码语言:shell复制
$ ./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 都已经发布了。

2.2 创建 Kubernetes 集群

  1. 执行以下命令快速创建一个 Kubernetes 集群
代码语言:bash复制
export KKZONE=cn
./kk create cluster --with-local-storage  --with-kubernetes v1.30.4 --container-manager containerd  -y

上面的命令执行后,KubeKey 先检查部署 Kubernetes 的依赖及其它配置是否符合要求。通过检查后,系统将提示您确认安装。输入 yes 并按 ENTER 继续部署。

部署过程需要大约 10分钟,具体看网速和机器配置。部署完成后,您应该会在终端上看到类似于下面的输出。

代码语言:yaml复制
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 集群的部署。

2.3 验证 k8s 集群状态

  1. 查看集群节点信息

在 control-1 节点运行 kubectl 命令获取 Kubernetes 集群上的可用节点列表。

代码语言:shell复制
kubectl get nodes -o wide

正确执行后,输出结果如下 :

代码语言:shell复制
$ 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、操作系统类型、内核版本和容器运行时等信息。

  1. 查看 Pod 列表

输入以下命令获取在 Kubernetes 集群上运行的 Pod 列表,确保所有的容器状态都是 Running

代码语言:shell复制
kubectl get pods -A

正确执行后,输出结果如下 :

代码语言:bash复制
$ 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
  1. 查看镜像列表(29 个

下面展示一下最小化部署一套 Kubernetes 集群到底依赖哪些镜像,以及镜像的下载地址、TAG、大小。

代码语言:bash复制
$ 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

3. 部署 KubeSphere

3.1 安装核心组件 KubeSphere Core

按官方文档示例,执行以下命令通过 helm 安装 KubeSphere 的核心组件 KubeSphere Core。

代码语言:bash复制
helm upgrade --install -n kubesphere-system --create-namespace ks-core https://charts.kubesphere.io/main/ks-core-1.1.0.tgz --debug --wait

网络受限时,执行以下命令:

代码语言:bash复制
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 地址、管理员用户名和管理员密码。

代码语言:yaml复制
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.

3.2 命令行验证 KubeSphere Core 状态

  1. 查看 Pod 列表
代码语言:shell复制
kubectl get pods -n kubesphere-system

正确执行后,输出结果如下 :

代码语言:bash复制
$ 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
  1. 查看镜像列表(29 个

下面展示一下最小化部署一套 KubeSphere 和 Kubernetes 集群到底依赖哪些镜像,以及镜像的下载地址、TAG、大小。

代码语言:bash复制
$ 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

4. KubeSphere Core 功能概览

我们打开浏览器访问 Control-1 节点的 IP 地址和端口 30880,可以打开熟悉的 KubeSphere 管理控制台的登录页面。

ksp-login-v411ksp-login-v411

输入默认用户 admin 和默认密码 P@88w0rd,然后点击「登录」。

登录后,系统会要求您更改 KubeSphere 默认用户 admin 的默认密码,输入新的密码并点击「提交」。

ksp-password-confirm-v411ksp-password-confirm-v411

提交完成后,系统会跳转到新的风格的 KubeSphere 用户工作台页面。

ksp-dashboard-v411ksp-dashboard-v411

4.1 集群管理

在「工作台」页面,点击「集群管理」,进入集群管理页面,页面风格更方便多集群管理。

ksp-clusters-v411ksp-clusters-v411

点击「host 」主集群,进入 host 集群管理页面。新版本的集群管理菜单去掉了不少的功能,默认只有基本的 k8s 管理功能。褒贬不一的开箱即用的监控功能也没了(我个人比较喜欢原来默认集成的监控功能,开箱即用,简单直观)。

  • 集群概览
ksp-clusters-host-overview-v411ksp-clusters-host-overview-v411
  • 集群节点
ksp-clusters-host-nodes-aio-v411ksp-clusters-host-nodes-aio-v411
  • 集群节点状态
ksp-clusters-host-nodes-status-v411ksp-clusters-host-nodes-status-v411
  • pod 资源状态
ksp-pods-resource-status-v411ksp-pods-resource-status-v411

4.2 企业空间管理

企业空间和用户管理,菜单入口分开了,整体功能没太大变化。

在「工作台」页面,点击「企业空间管理」,进入企业空间管理页面。

ksp-access-workspaces-v411ksp-access-workspaces-v411

4.3 用户和角色管理

企业空间和用户管理,菜单入口分开了,整体功能没太大变化。

在「工作台」页面,点击「用户和角色管理」,进入用户和角色管理页面。

ksp-access-accounts-v411ksp-access-accounts-v411

4.4 扩展中心

在「工作台」页面,点击「扩展中心」,进入扩展中心管理页面,您可以在此对扩展组件进行安装、卸载、升级、配置变更、启用或禁用。

ksp-extensions-manager-v411ksp-extensions-manager-v411

因为,扩展市场里还没有任何扩展组件,所以该页面也是空的,需要后期添加。

4.5 扩展市场

最小化安装的 KubeSphere v4.1.1 的扩展市场里是没有任何扩展组件的,需要在后期添加。

ksp-extensions-marketplace-v411ksp-extensions-marketplace-v411

4.6 应用商店

新版本居然默认集成了应用商店,所有的默认组件都删除了,而且页面上部的黑色配色有问题,导致用户名 admin 被隐盖了

ksp-apps-v411ksp-apps-v411

5. 常见问题

5.1 问题 1

部署失败时,可以执行下面的命令卸载 ks-core,然后重新执行安装命令。

代码语言:bash复制
helm uninstall ks-core -n kubesphere-system

6. 自动化 Shell 脚本

文章中所有操作步骤,已全部编排为自动化脚本,包含以下内容(因篇幅限制,不在此文档中展示):

  • Ansible 初始化操作系统基础配置
  • Ansible 初始化磁盘配置
  • Ansible 自动化安装 Kubernetes 依赖组件

运维有术星球会员请到专属代码仓库下载(价值内容,仅星球会员专享)。

以上,就是我今天分享的全部内容。下一期分享的内容还没想好,敬请期待开盲盒

如果你喜欢本文,请分享、收藏、点赞、评论! 请持续关注 @运维有术,及时收看更多好文!

欢迎加入 「知识星球|运维有术」 ,获取更多的 KubeSphere、Kubernetes、云原生运维、自动化运维、AI 大模型等实战技能。未来运维生涯始终有我坐在你的副驾

免责声明:

  • 笔者水平有限,尽管经过多次验证和检查,尽力确保内容的准确性,但仍可能存在疏漏之处。敬请业界专家大佬不吝指教。
  • 本文所述内容仅通过实战环境验证测试,读者可学习、借鉴,但严禁直接用于生产环境由此引发的任何问题,作者概不负责

Get 本文实战视频(请注意,文档视频异步发行,请先关注)

  • B 站|运维有术

版权声明

  • 所有内容均属于原创,感谢阅读、收藏,转载请联系授权,未经授权不得转载

1 人点赞