首页 > 其他分享 >本地k8s部署kubesphere及踩坑记录

本地k8s部署kubesphere及踩坑记录

时间:2023-10-29 13:03:07浏览次数:39  
标签:openebs 本地 部署 kubesphere ks storageclass io k8s


什么是 KubeSphere

首先介绍一下kubesphere是什么,是从官网上摘抄的。

KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用 (plug-and-play) 的集成。

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

部署kubesphere

KubeSphere 支持独立部署与 Linux 主机中, 也支持直接部署于 Kubernetes 集群中。

我主要介绍的是基于kubernetes集群来部署kubesphere。官方文档有提供详细的部署文档,大家可以参考官网文档来进行部署,我这儿主要也是参考官方文档来进行部署的,但是在部署过程中遇到了一些问题,所以主要是记录一下部署过程中遇到问题的解决方法,让大家可以少走一些弯路,把时间节省下来。

准备工作

使用最小化安装kubesphere,集群可用的资源符合 CPU > 1 Core,可用内存 > 2 G 。如果使用完整版本安装,集群可用的资源符合 CPU ≥ 8 Core,可用内存 ≥ 16 G。完整的版本, 开启了所有的 KubeSphere组件。

在部署kubesphere之前,k8s集群必须要有默认的存储类型(storageclass)。可以安装nfs,gfs,cephfs, openobs 等。如果没有安装默认的storageclass会导致服务部署不成功。会报这个错误:

Default StorageClass was not found !

缺少storageclass,下面我们执行下面的命令部署一下storageclass。

cat >> default-storage-class.yaml <<-EOF kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: local annotations: cas.openebs.io/config: | - name: StorageType value: "hostpath" - name: BasePath value: "/var/openebs/local/" kubectl.kubernetes.io/last-applied-configuration: > {"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{"cas.openebs.io/config":"-\n value: \"hostpath\"\n- name: BasePath\n value: \"/var/openebs/local/\"\n" name: StorageType,"openebs.io/cas-type":"local","storageclass.beta.kubernetes.io/is-default-class":"true","storageclass.kubesphere.io/supported-access-modes":"[\"ReadWriteOnce\"]"},"name":"local"},"provisioner":"openebs.io/local","reclaimPolicy":"Delete","volumeBindingMode":"WaitForFirstConsumer"} openebs.io/cas-type: local storageclass.beta.kubernetes.io/is-default-class: 'true' storageclass.kubesphere.io/supported-access-modes: '["ReadWriteOnce"]' provisioner: openebs.io/local reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer EOF



kubectl apply -f default-storage-class.yaml

开始安装kubesphere

1、准备工作做完之后,执行下面两条命令开始安装kubesphere。我这边采用的是在kuberentes集群上最小化安装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

2、检查安装日志:

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

3、使用kubectl get pod --all-namespaces 查看所有 Pod 是否在 KubeSphere 的相关命名空间中正常运行。如果是,请通过以下命令检查控制台的端口(默认为30880)

4、确保在安全组中打开了端口30880,并通过 NodePort (IP:30880) 使用默认帐户和密码 (admin/P@88w0rd) 访问 Web 控制台。

安装的步骤虽然很简单,但是在执行完安装命令以后总是有服务没办法那么丝滑的立马运行起来。

遇到的问题

由于我的storageclass使用的provisioner是openebs.io/local,但是我的服务器上并没有配置openebs存储,导致执行完部署脚本以后,redis一直起不来。redis的pvc一直报这个错误:

waiting for a volume to be created, either by external provisioner "openebs.io

需要在服务器安装openobs,安装的步骤如下所示:

快速安装openobs

使用Operator运行OpenEBS服务

wget https://raw.githubusercontent.com/openebs/openebs/master/k8s/openebs-operator.yaml kubectl apply -f openebs-operator.yaml

使用默认或自定义的storageclass:

wget https://raw.githubusercontent.com/openebs/openebs/master/k8s/openebs-storageclasses.yaml kubectl apply -f openebs-storageclasses.yaml

执行安装命令以后会运行openobs所需要有所有服务:

本地k8s部署kubesphere及踩坑记录_github

openobs部署好以后,redis就可以运行起来了。

ks-apiserver无法运行起来

在执行部署脚本之后,ks-apiserver无法正常运行,报这个错误:

mountvolume.setup failed for volume "kubesphere-config" : configmap "kubesphere-config" not found

查询报错信息,显示没有kubesphere-config这个configmap。应该去创建kubesphere-config这个configmap。但是在kubesphere的文档上看到有人调整了ks-apiserver的limit memory就好了,我查看ks-apiserver默认的limit memorr设置的是1G,我调整成4G,没想到ks-apiserver服务还真运行起来了。我也很纳闷,configmap跟内存有啥关系,先不管了。继续处理问题。

无法继续部署

经过我多次部署kubesphere又卸载kubesphere,导致后面继续部署kubesphere服务的时候,只运行了ks-installer和redis服务,其他服务无法运行了。查看日志报这个错误:

service"ks-controller-manager" not found"

在多次安装卸载之后可能没有卸载干净,需要执行一下脚本进行重新安装。

https://raw.githubusercontent.com/kubesphere/ks-installer/release-3.1/scripts/kubesphere-delete.sh

然后会脚本会执行一段时间,会将之前安装的内容清理干净,该解决的问题都解决了。这时在重新部署服务就可以很丝滑的正常运行起来了。

访问kubesphere

默认账号密码 用户名: admin 密码: P@88w0rd

本地k8s部署kubesphere及踩坑记录_正常运行_02

标签:openebs,本地,部署,kubesphere,ks,storageclass,io,k8s
From: https://blog.51cto.com/u_12790562/8079935

相关文章

  • fc大语言模型部署+本地知识库
      FCInvokeStartRequestId:930989fb-8910-400d-b981-1de87e89a3e3Info:@serverless-cd/engine:0.0.51,linux-x64,node-v14.19.2plugin@serverless-cd/checkouthasbeeninstalledplugin@serverless-cd/s-setuphasbeeninstalledplugin@serverless-cd/s-d......
  • k8s-label和selector
    说明k8s通过lable来为资源打上标签,通过selector来查找。而不是像传统mysql对象之间关联使用强关联外键属性比如deployment需要关联RS则通过RS打上标签,deployment通过配置select选择器去查找标签的特性label有如下的一些特点:label可以被附加到各种资源对象上一个资源对象......
  • shell 脚本一键部署 k8s 高可用集群
    github地址:https://github.com/Johnny-Demo/deploy/tree/k8s-cluster有不理解的地方可以私信我......
  • k8s接入外部metrics数据进行hpa扩缩容
    一般来说我们只会按照系统设置的cpu和mem去动态扩缩容,但是其实这样很不灵活,比如,jvm占的大小并不等同于真正应用所占的内存,如果有一种可能,可以再监控数据里拿出来一个衡量指标数据,然后依照这个数据进行动态扩缩容,这样的话就会灵活很多,研究了2天,今天终于研究明白了,赶紧记录一下第一......
  • k8s之基础篇
        相关概念: kube-apierver:控制平面组件,负责kubernetes api, 处理接受的请求工作  kube-controller-manager:控制平面组件, 负责运行控制器进程  kube-scheduler:控制平面组件, 负责见识新创建,未指定运行节点的pods,选择节点让pod运行 cloud-controller-manager......
  • K8S 权限管理
    k8s权限管理目录k8s权限管理1、k8s用户1.1、k8s用户概念1.2、User&ServiceAccount的区别1.3、k8s用户创建1.3.1、创建用户私钥1.3.2、创建证书签名请求1.3.3、集群证书签署2、k8s角色2.1、Role&ClusterRole2.1.1、Role2.1.2、ClusterRole2.2、Rolebinding&ClusterRoleBindi......
  • VIte+Vue3 打包在本地 双击 index.html 打开项目
    npmi@vitejs/plugin-legacynpmi@babel/preset-envnpmiterserimportlegacyfrom'@vitejs/plugin-legacy';exportdefaultdefineConfig({base:"./",plugins:[vue(),legacy({targets:["defaults","not......
  • 本地docker搭 建开源MySQL审计平台 yearning
     简单介绍:Yearning是一个轻量级的Web端的MySQLSQL语句审核平台,提供查询审计,SQL审核,SQL回滚,自定义工作流等多种功能。Yearning的前端是基于Vue.js构建的,它还提供SQL语法高亮、自动补全和智能提示、可视化等。Yearning自身包含了一套通常适用的审核规范,基本上能满足日常需要,同......
  • 云端golang开发,无需本地配置,能上网就能开发和运行
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos需求学习golang的时候,需要一个IDE,还需要一个能运行程序的环境,以及一个MySQL数据库对于有经验的程序员来说,自己动手安装部署即可,但是小白和懒人也是存在的...背景背......
  • playwright -启动本地chrome浏览器-启动扩展程序-插件
    fromplaywright.sync_apiimportsync_playwrightimportosclassTool:def__init__(self,user_data_dir,executable_path):playwright=sync_playwright().start()#启动扩展程序-开启影刀插件path_to_extension=r"D:\data\google\Ch......