什么是 KubeSphere
前言
k8s集群搭建参考:基于 centos7 搭建 kubernetes 集群
- 如需在 Kubernetes 上安装 KubeSphere v3.1.0,您的 Kubernetes 版本必须为:1.17.x、1.18.x、1.19.x 或 1.20.x;
- 确保您的机器满足最低硬件要求:CPU > 2 核,内存 > 2 G;
- 在安装之前,需要配置 Kubernetes 集群中的默认存储类型;
概述
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用 (plug-and-play) 的集成。
作为全栈的多租户容器平台,KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。KubeSphere 为用户提供构建企业级 Kubernetes 环境所需的多项功能,例如多云与多集群管理、Kubernetes 资源管理、DevOps、应用生命周期管理、微服务治理(服务网格)、日志查询与收集、服务与网络、多租户管理、监控告警、事件与审计查询、存储管理、访问权限控制、GPU 支持、网络策略、镜像仓库管理以及安全管理等。
KubeSphere 还开源了 Kubekey 帮助企业一键在公有云或数据中心快速搭建 Kubernetes 集群,提供单节点、多节点、集群插件安装,以及集群升级与运维。
开发运维友好
KubeSphere 为用户屏蔽了基础设施底层复杂的技术细节,帮助企业在各类基础设施之上无缝地部署、更新、迁移和管理现有的容器化应用。通过这种方式,KubeSphere 使开发人员能够专注于应用程序开发,使运维团队能够通过企业级可观测性功能和故障排除机制、统一监控和日志查询、存储和网络管理,以及易用的 CI/CD 流水线等来加快 DevOps 自动化工作流程和交付流程等。
支持在任意平台运行 KubeSphere
作为一个灵活的轻量级容器 PaaS 平台,KubeSphere 对不同云生态系统的支持非常友好,因为它对原生 Kubernetes 本身没有任何的侵入 (Hack)。换句话说,KubeSphere 可以部署并运行在任何基础架构以及所有版本兼容的 Kubernetes 集群之上,包括虚拟机、物理机、数据中心、公有云和混合云等。
您可以选择在公有云和托管 Kubernetes 集群(例如阿里云、AWS、青云QingCloud、腾讯云、华为云等)上安装 KubeSphere,还可以导入和纳管已有的 Kubernetes 集群。
KubeSphere 可以在不修改用户当前的资源或资产、不影响其业务的情况下部署在现有的 Kubernetes 平台上。有关更多信息,请参见在 Linux 上安装和在 Kubernetes 上安装。
完全开源
借助开源的模式,KubeSphere 社区驱动着开发工作以开放的方式进行。KubeSphere 100% 开源免费,已大规模服务于社区用户,广泛地应用在以 Docker 和 Kubernetes 为中心的开发、测试及生产环境中,大量服务平稳地运行在 KubeSphere 之上。您可在 GitHub 上找到所有源代码、文档和讨论,所有主要的开源项目介绍可以在开源项目列表中找到。
云原生 Landscape
KubeSphere 是 CNCF 基金会成员并且通过了 Kubernetes 一致性认证,进一步丰富了 CNCF 云原生的生态。
安装kubesphere
预检查
1.在集群节点中运行 kubectl version,确保 Kubernetes 版本可兼容。输出如下所示:
请注意
Server Version 这一行。如果 GitVersion 显示为旧版本,则需要先升级 Kubernetes
2.检查集群中的可用资源是否满足最低要求。
swap为0是因为在部署kubernetes之前已经禁用了,如果当前是开启状态建议关掉
3.检查集群中是否有默认 StorageClass
如果不配置直接进行安装就会出现以下报错
因为这一节并没有体现在安装文档中,所以会很容易被忽略。我们来看看关于这节单独的描述
官方推荐使用kubekey进行安装,并提供了一系列的持久化存储方案,传送门
但除了第一个云存储方案外,其它的基本上都要额外搭建一套存储服务,建议生产环境使用。我们这里就使用默认的存储类型OpenEBS。
OpenEBS 本地 PV 动态供应器可以使用节点上的唯一 HostPath(目录)来创建 Kubernetes 本地持久卷,以持久化数据。用户没有特定的存储系统时,可以通过默认的 OpenEBS 快速上手。
注意:基于 OpenEBS 创建 LocalPV 的存储类型仅适用于开发测试环境,不建议在生产环境使用。生产环境建议准备符合 Kubernetes 要求的持久化存储(如 GlusterFS、Ceph、NFS、Neonsan 等分布式存储,或云上的块存储),然后再创建对应的 StorageClass。
安装OpenEBS持久化存储
打开GitHub发现官方有提供两种安装方式,我们使用第二种,但需要额外安装Helm,Helm 是 Kubernetes 的包管理器,用它来安装k8s相关的组件是再方便不过了。
安装Helm
1.我们用二进制安装方式安装
每个Helm 版本都提供了各种操作系统的二进制版本,这些版本可以手动下载和安装。
需要注意的是helm的安装版本也和kubernetes相关,详情参见Helm版本支持策略。
- 下载 需要的版本
- 解压(
tar -zxvf helm-v3.0.0-linux-amd64.tar.gz) - 在解压目录中找到helm程序,移动到需要的目录中(
mv linux-amd64/helm /usr/local/bin/helm)
安装OpenEBS
直接执行安装步骤3,OpenEBS将会被安装到work节点上,建议安装至master节点。
解决方案:在安装 OpenEBS 之前手动取消 Taint,待 OpenEBS 与 KubeSphere 安装完成后,再对 master 打上 Taint。
1.获取master节点的描述信息,发现有Taint被标记为NoSchedule。这个标记意味着master节点不会进行调度安装,所以需要去掉。
2.去掉master节点的Taint,注意后面的“-”号
kubectl taint nodes k8s-node1 node-role.kubernetes.io/master:NoSchedule-
3.执行安装
#添加OpenEBS源
helm repo add openebs https://openebs.github.io/charts
#更新仓库
helm repo update
#创建openebs的名称空间
kubectl create ns openebs
#安装OpenEBS
helm install --namespace openebs --name openebs stable/openebs
4.查看创建的持久化存储kubectl get sc
5.到这一步还没结束,必须设置一个默认的StorageClass
#这里使用openebs-hostpath作为默认的StorageClass
kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
6.至此,OpenEBS 的 LocalPV 已作为默认的存储类型创建成功。可以通过kubectl get sc命令查看是否有default标签存在。其次再通过命令 kubectl get pod -n openebs来查看 OpenEBS 相关 Pod 的状态,若 Pod 的状态都是 running,则说明存储安装成功。
安装kubesphere
1.执行以下命令,建议将yml文件下载本地执行。
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.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.使用 kubectl get pods -A 查看所有 Pod 是否在 KubeSphere 的相关命名空间中正常运行。如果是,请通过以下命令检查控制台的端口(默认为 30880)
kubectl get svc -n kubesphere-system
4.登录控制台,并查看节点运行状况