前言:比起默认的 dashboard ,Kubesphere 集成了很多套件。我们用 kubesphere 可以打通全部的 devops 链路。
所有的问题建议优先查看官方文档kubesphere
Kuboard 也很不错,集群要求不高Kuboard
一、准备工作
1、前提要求
2、在集群节点中运行 kubectl version,确保 Kubernetes 版本可兼容
kubectl version
3、检查集群中的可用资源是否满足最低要求
free -g
4、检查集群中是否有默认 StorageClass
二、安装 OpenEBS
1、确认 master 节点是否有 Taint
2、创建 OpenEBS 的 namespace,OpenEBS 相关资源将创建在这个 namespace 下
kubectl create ns openebs
3、安装 OpenEBS
kubectl apply -f https://openebs.github.io/charts/openebs-operator.yaml
4、安装 OpenEBS 后将自动创建StorageClass,查看创建的 StorageClass
kubectl get sc
5、将 openebs-hostpath设置为默认的 StorageClass
kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
至此,OpenEBS 的 LocalPV 已作为默认的存储类型创建成功。可以通过命令 kubectl get pod -n openebs来查看 OpenEBS 相关 Pod 的状态,若 Pod 的状态都是 running,则说明存储安装成功。
三、安装kubesphere
1、执行以下命令
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.0.0/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.0.0/cluster-configuration.yaml
2、检查安装日志
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
3、查看所有 Pod 是否在 KubeSphere 的相关命名空间中正常运行
kubectl get pod --all-namespaces
kubectl get svc/ks-console -n kubesphere-system
4、访问 Web 控制台
确保在安全组中打开了端口 30880,并通过 NodePort (IP:30880) 使用默认帐户和密码 (admin/P@88w0rd) 访问 Web 控制台
四、启用可插拔组件KubeSphere DevOps 系统
安装前启用
1、编辑 cluster-configuration.yaml 文件
vi cluster-configuration.yaml
在 cluster-configuration.yaml 文件中,找到 devops,并将 enabled 的 false 改为 true,完成后保存文件
devops:
enabled: true # Change "false" to "true"
2、安装
kubectl apply -f kubesphere-installer.yaml
kubectl apply -f cluster-configuration.yaml
安装后启用
1、登录控制台
以 admin 身份登录控制台,点击左上角的平台管理,选择集群管理。
2、在资源列表中,点击 ks-installer 右边的三个点,选择编辑配置文件
3、编辑配置文件
在该 YAML 文件中,搜寻到 devops,将 enabled 的 false 改为 true。完成后,点击右下角的更新,保存配置。
至此全部完成
五、一些问题
1、kubesphere-monitoring-system里的prometheus-k8s-0一直pending
查看该pod
kubectl describe pod prometheus-k8s-0 -n kubesphere-monitoring-system
event报错如下:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling <unknown> default-scheduler error while running "VolumeBinding" filter plugin for pod "prometheus-k8s-0": pod has unbound immediate PersistentVolumeClaims
显然是storagecalss的问题,查看一下
kubectl get storageclass
之前配置的openebs没有问题
再检查一下pvc
kubectl get pvc -A
发现原因:sc错误
kubesphere-monitoring-system命名空间中的PVC使用的StorageClass是local
将kubesphere-monitoring-system命名空间中的StorageClass更改为openebs-hostpath
kubectl patch ns kubesphere-monitoring-system -p '{"metadata":{"annotations":{"storageclass.kubernetes.io/default-class":"true"}}}'