在这里插入图片描述

kubesphere是什么

KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。KubeSphere 为用户提供构建企业级 Kubernetes 环境所需的多项功能,例如多云与多集群管理、Kubernetes 资源管理、DevOps、应用生命周期管理、微服务治理(服务网格)、日志查询与收集、服务与网络、多租户管理、监控告警、事件与审计查询、存储管理、访问权限控制、GPU 支持、网络策略、镜像仓库管理以及安全管理等

kubesphere官方文档

安装kubesphere

这里是在以有的k8s集群上安装kubesphere,在以有的k8s集群上安装kubesphere,需要满足两个前置条件

详见:前置条件链接

1.安装的kubesphere版本与k8s版本是否可以相对应

我这里安装的是kubesphere的v3.4,它要求k8s的版本v1.20.x~v1.26.x之间

#查看k8s版本
kubectl version

输出

WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.  Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.0", GitCommit:"b46a3f887ca979b1a5d14fd39cb1af43e7e5d12d", GitTreeState:"clean", BuildDate:"2022-12-08T19:58:30Z", GoVersion:"go1.19.4", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v4.5.7
Server Version: version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.9", GitCommit:"d1483fdf7a0578c83523bc1e2212a606a44fd71d", GitTreeState:"clean", BuildDate:"2023-09-13T11:25:26Z", GoVersion:"go1.20.8", Compiler:"gc", Platform:"linux/amd64"}

所以这里版本是满足的

2.集群中是否有默认 StorageClass

集群中创建StorageClass和将其设置为默认 StorageClass可参考:
创建StorageClass
设置默认 StorageClass

查看集群中以有的StorageClass

kubectl get sc

输出

No resources found

显然我这里没有 StorageClass的资源,下面就创建一个StorageClass,并把这个创建的StorageClass设为默认的StorageClass

vim local-storage-class.yaml
#创建存储类,先创建一个local-storage-class.yaml,然后写入一下内容
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
#创建StorageClass资源
kubectl apply -f local-storage-class.yaml
#查看StorageClass
kubectl get sc

输出

在这里插入图片描述

StorageClass已经有了,接下来就将刚才创建的StorageClass设置为默认存储类

#将某个存储类设置为存储类
#kubectl patch storageclass StorageClass的NAME -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
kubectl patch storageclass local-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

查看StorageClass
在这里插入图片描述

PS:上面创建的storageclass 确实可以成功安装kubesphere,但是local-storage配合pvc无法动态创建pv。因此,创建storageclass 也可以使用nfs-storageclass ,详见创建nfs存储类

3.安装kubesphere

至此,kubesphere的安装前置条件已经满足,下面就是安装kubesphere了

安装参考链接

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/cluster-configuration.yaml

运行下面两条命令,只要没报错,使用下面命令查看安装进度,中间可能要等待一段时间(差不多8分钟左右),只要日志没报错,问题就不大

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

最后输出结果如下

在这里插入图片描述
开放服务器30880端口,浏览器访问ip:30880,默认用户名和密码为admin/P@88w0rd
在这里插入图片描述
至此kubesphere就安装完成了

PS:如果你要在主节点上安装kubesphere的话,还需要去除主节点上设置的taint(可以简单理解为允许pod在主节点调度)

#允许控制节点被调度
kubectl taint nodes --all node-role.kubernetes.io/control-plane-

在这里插入图片描述

kubesphere的简单使用示例

Deployment 部署 nginx

数据存储

需要创建pvc,创建pvc时就会通过StorageClass自动创建pv,并完成pv与pvc的绑定,无需管理员提前创建好pv
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
下一步,创建成功
在这里插入图片描述

Deployment 部署 nginx

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击下一步,创建
在这里插入图片描述
查看部署详情
在这里插入图片描述
其实使用上面ui界面创建Deployment,也是创建yaml文件,下面是kubesphere未本次部署创建的yaml文件
在这里插入图片描述
这时Deployment已经部署完成了,下面就是创建service,提供访问

创建service

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
service创建成功
在这里插入图片描述
访问测试,浏览器访问服务器外网ip+31556测试(前提是将服务器的端口防火墙放行)

在这里插入图片描述
访问成功,但是403,因为上面将ngxin容器的/usr/share/nginx/html目录挂载出来了,所以现在该目录下没有index.html。现在去该容器的目录下创建index.html或者到nfs的共享目录下找到nginx的挂载目录也可
在这里插入图片描述
再次浏览器访问测试
在这里插入图片描述
进入ngixn-dep部署的详情页可以查看容器日志,进入容器,调整副本数等等
在这里插入图片描述

StatefulSet 部署 redis

数据存储

创建pvc,方法与上面相同
在这里插入图片描述

创建 redis ConfigMap

为了测试kubesphere中ConfigMap的创建和使用,这里将redis.conf配置为ConfigMap挂载到redis容器下
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建成功
在这里插入图片描述

StatefulSet 部署 redis

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
下面还要设置容器的启动命令,因为会使用自定义的redis.conf
在这里插入图片描述

configmap的配置方式与pvc模板的使用相似
在这里插入图片描述

将容器里/data目录挂载出来,将redis-cfg configmap里的redis.conf键以文件的形式挂载到/usr/local/etc/redis目录下在这里插入图片描述
部署成功
在这里插入图片描述

创建service

在这里插入图片描述

访问测试

PS:服务器防火墙30109要打开

在这里插入图片描述

上面redis只是单机部署,所以用StatefulSet 部署与Deployment 感觉没什么差别,有时间了整一个集群部署看看。这里仅展示了我对kubusphere的简单使用,kubesphere还很多强大且便利的功能,像检测告警,DevOps流水线支持等等

官方链接

结语

写这些,仅记录自己学习使用k8s的过程。如果有什么错误的地方,还请大家批评指正。最后,希望小伙伴们都能有所收获。

在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐