一、介绍
- 简要介绍
在 KubeSphere 企业版 v4.0 中,推出了全新的 KubeSphere 架构:KubeSphere LuBan,它构建在 Kubernetes 之上,支持高度可配置和可扩展。KubeSphere LuBan,是一个分布式的云原生可扩展开放架构,为扩展组件提供一个可热插拔的微内核。自此,KubeSphere 所有功能组件及第三方组件都会基于 KubeSphere LuBan,以扩展组件的方式无缝融入到 KubeSphere 控制台中,并独立维护版本,真正实现即插即用的应用级云原生操作系统。
2. 应用场景
(1)资源量化运营
多部门资源管理往往会给运维带来巨大的资源管理压力,运维部门统计各业务线的资源利用率,评估各业务资源利用率的合理性,都需要巨大的工作时间成本。KubeSphere 企业版提供多维度、多角度的资源量化统计方式,资源数据一目了然。
(2)多级权限管控
公司各业务线如何高效协同一直是个亘古难题,基础设施运维、应用运维以及业务开发人员如何能通过平台紧密合作,实现权限隔离成为了组织架构的核心需求。KubeSphere 企业版提供 “三权分立” 的用户权限体系,平台管理员、集群运维和应用运维三大权限视角合理分配,促进部门协作。
(3)智能弹性运维
基础资源过度浪费会给企业带来额外的运营成本,如何有效分析资源使用的合理性、在不同的场景下进行高效资源弹性管理也成为运维人员的难题。KubeSphere 企业版提供业务资源的智能推荐方案,定时分析,一键应用,同时支持自定义指标弹性伸缩,赋能智能运维。
(4)云原生一栈式转型
不少企业转型云原生都会遇到技术选型难题,如何实现 DevOps 运维一体化,云原生微服务治理,云边协同,AI 人工智能以及云原生下的可观测性。各种技术方案的选型以及运维给各企业带来了极大的困扰。KubeSphere 企业版集成业界最佳实践,提供高度图形化,一致性的使用体验,助力企业低成本走向云原生。
二、架构
为了提高 KubeSphere 的灵活性和可扩展性,KubeSphere 4.0 采用了微内核+扩展组件
的架构。在这个架构中,微内核
部分仅包含系统运行所需的基础功能,而各个独立的业务模块则被封装在各个扩展组件中。这允许在系统运行时动态地安装、卸载、启用或禁用扩展组件。
总体架构如下图所示:
内核
如上图所示,内核的主要功能包括:
扩展组件的管理
扩展组件的管理涉及两个重要方面,即在运行时完成扩展组件的 JavaScript bundle 加载以及扩展组件的注册。在 4.0 版本的架构中,采用了 SystemJS 来实现对扩展组件 JavaScript bundle 的加载。同时,制定了扩展组件的入口规范,以确保它们能够连接到核心系统并运行。
通讯机制
在内核中内置 EventBus(发布/订阅),以方便内核与扩展组件之间以及扩展组件之间的通信。
路由管理
基于 react-router,扩展组件定义的路由在扩展组件注册时会被统一管理到内核中。
国际化
采用 i18next 实现国际化。开发者可以在扩展组件中按照 i18next 的格式定义翻译文件,然后按照约定注册到内核中。
扩展中心
类似于 Chrome 浏览器的扩展程序,KubeSphere 也提供了一个可视化的扩展组件管理模块,允许用户在页面上轻松执行扩展组件的安装、卸载、启用、禁用等操作。
基础页面
包括系统运行所需的一些基本 UI 元素,例如登录页面和页面布局。
BFF
基于 Koa 实现的 BFF 层。主要负责首页渲染、请求转发、数据转换以及一些轻量级的后端任务。
扩展组件
如上图所示,扩展组件分为 In-Tree 扩展组件
和 Out-of-Tree 扩展组件
。区别在于:
In-Tree 扩展组件
基本上是系统必备或者常用的功能组件,它们在编译时与core
一起打包。In-Tree 扩展组件
目前包括:
- Cluster 集群管理
- Access 访问控制
- Workspaces 工作空间
- Projects 项目管理
- Apps 应用商店
- Settings 平台设置
-
Out-of-Tree 扩展组件
是由开发者在自己的代码仓库中开发的扩展组件,需要独立进行编译和打包。这些组件将被发布到扩展市场
。用户安装后,内核会远程加载扩展组件的js bundle
并将其注册到内核中。
三、使用指南
1 软硬件环境
您需要准备一台 Linux 主机,并确保主机软硬件满足以下条件:
类别 | 配置要求 |
硬件 | 最低配置:2 核 CPU,2 GB 内存,40 GB 磁盘空间。 |
操作系统 | Ubuntu 16.04, 18.04, 20.04, 22.04 Debian Bullseye, Buster, Stretch CentOS/RHEL 7 AlmaLinux 9.0 SUSE Linux Enterprise Server 15 |
Linux 内核 | 4.15 及更高版本。可以通过命令 uname -srm 查看 Linux 内核版本。 |
网络 | 请确保 /etc/resolv.conf 中的 DNS 地址可用。 建议禁用防火墙以避免组件通信受阻。 |
其他 | 节点上可以使用 sudo、curl 和 openssl 命令。 |
安装 KubeSphere 企业版之前,你需要一个可用的 Kubernetes 集群。执行以下命令快速创建 Kubernetes 集群。
KubeSphere 企业版支持的 Kubernetes 版本有:v1.21.x、v1.22.x、v1.23.x、v1.24.x、v1.25.x、v1.26.x 和 v1.27.x。最低支持版本为 v1.21。
2 安装部署
您需要提前安装 Helm。具体请参阅安装 Helm。
- 如果已有可用的 Kubernetes 集群,执行以下命令通过
helm
安装 KubeSphere Core。
helm upgrade --install -n kubesphere-system --create-namespace ks-core https://charts.kubesphere.io/main/ks-core-0.4.0.tgz
如果显⽰如下信息,则表明安装成功:
3 KubeSphere4.0企业版主要特性
轻量化
- 裁剪不必要的组件。
- 通过 helm 快速部署与卸载。
(1)裁剪不必要的组件
官方没有说明裁剪了什么组件,由于KubeSphere过于庞大,无法和原有系统比较
(2)helm部署和卸载
如果已有可用的 Kubernetes 集群,执行以下命令通过 helm
安装 KubeSphere Core。
helm upgrade --install -n kubesphere-system --create-namespace ks-core https://charts.kubesphere.io/main/ks-core-0.4.0.tgz
执行以下命令卸载 KubeSphere 企业版。
helm -n kubesphere-system uninstall ks-core
扩展组件(和KubeSphere社区版的可插拔组件一样)
- 采用全新的微内核架构 LuBan,支持功能扩展。
- 提供在线的扩展组件商店,以及部分免费订阅的扩展组件。
(1)微内核架构 LuBan
KubeSphere LuBan,它构建在 Kubernetes 之上,支持高度可配置和可扩展。KubeSphere LuBan,是一个分布式的云原生可扩展开放架构,为扩展组件提供一个可热插拔的微内核。
(2)在线的扩展组件商店
扩展组件目前一共有6个组件
(1)人工智能/机器学习:LakeInsight
LakeInsight 是企业级一站式实时数据分析和 AI 开发平台,基于数元灵自研开源湖仓一体框架 LakeSoul 和云原生容器化架构,提供多源数据实时集成,实时数仓建模,BI 指标报表平台和 AI 开发平台,实现 Data + AI 一体化。
可0元免费订阅试用版组件,时长为1个月。
(2)数据库:KubeBlocks、RadonDB DMP、Databend Playground
KubeBlocks 是一个基于 Kubernetes 的云原生数据基础设施管理平台,旨在为用户提供一种便捷的方式来管理和运维关系型数据库、NoSQL数据库、向量数据库以及流计算系统。
可0元免费订阅试用版组件,时长为1年。
RadonDB DMP 是一款面向 Kubernetes 多云场景的企业级云原生数据库管理平台,完全可视化统一管理,最快秒级部署数据库,同时聚合全场景运维能力,助力“云原生 + AI”数据引擎增智提效。
可0元免费订阅试用版组件,时长为3个月。
Databend Playground 为 Databend 提供一站式的部署、运维和查询可视化方案。
可0元免费订阅试用版组件,时长为1年。
(3)开发者工具:OKG Dashboard
OpenKruiseGame(OKG)是一个面向多云的开源游戏服Kubernetes工作负载,是CNCF工作负载开源项目OpenKruise在游戏领域的子项目,让游戏服的云原生化变得更加简单、快速、稳定。通过OpenKruiseGame Dashboard可对OKG下的游戏服进行可视化运维管理。
可0元免费订阅试用版组件,时长为1年。
(4)CI/CD: DevOps
KubeSphere DevOps 提供端到端的工作流,集成主流 CI/CD 工具,帮助不同的组织加快产品上市时间。
可0元免费订阅试用版组件,时长为1年。
说明:
安装上述扩展组件,需要首先注册一个 KubeSphere 云账号,接着在订阅扩展组件时,要求绑定云账号,
在订单确认与支付页面,选择订阅方案、订阅时长后,提交订单进行支付。支付完成后,在扩展市场的组件详情页面,点击安装,进入组件安装流程。
新的 UI
- 全新的工作台。
- 提供全局的扩展组件注入点。
(1)全新的工作台
(2)全局的扩展组件注入点
在页面点击扩展组件按钮,即可进入扩展组件页面
扩展组件页面
多集群
- 简化 member 集群中部署的 agent。
- 支持通过 kubeconfig 一键导入 member 集群。
(1)可以直接在页面上添加多集群(该功能在KubeSphere3.3.0社区版中启用多集群功能后,即可使用)
填写集群基本信息
连接设置
连接模式目前只有直接连接
KubeSphere 多集群控制平面通过提供的 kubeconfig 来直接连接导入集群,此种方式要求当前集群能够通过 kubeconfig 中的 server 地址直接访问待导入集群。
通常适用于:
- 当前集群和待导入集群在同一内网网络中
- 当前集群和待导入集群已通过 VPN 或隧道等其它技术连通所在网络
- kubeconfig 的 server 地址可以通过公网访问
项目管理
- 支持 Deployment、DaemonSet、StatefulSet 、Job、CronJob 等工作负载的管理。
- 支持 Secret、ConfigMap、ServiceAccount 等资源的管理。
- 支持 Service、Ingress 等资源的管理。
- 支持 PVC 等资源的管理。
- 支持 Quota、LimitRange 等项目配置。
企业空间管理
- 支持跨集群项目管理。
(1)创建企业空间
选择企业空间使用的集群
集群管理
- 支持节点管理:节点驱逐、污点管理等。
- 支持集群项目管理。
- 支持 Deployment、DaemonSet、StatefulSet 、Job、CronJob、Secret、ConfigMap、ServiceAccount 等集群资源的管理。
- 支持 StorageClass、PresistentVolumeClaim 的管理。
(1)污点管理(该功能3.3.0也有)
(2)节点驱逐(该功能3.3.0也有)
在编辑污点对话框,设置污点的键、值和效果,然后点击确定。
您可以为一个污点选择以下效果之一:
污点效果 | 描述 |
阻止调度 | 缺少与污点匹配的容忍度的容器组将被阻止调度到节点,节点上原本运行的容器组不受影响。 |
尽可能阻止调度 | 缺少与污点匹配的容忍度的容器组将被尽可能阻止调度到节点,节点上原本运行的容器组不受影响。 |
阻止调度并驱逐现有容器组 | 缺少与污点匹配的容忍度的容器组将被阻止调度到节点,节点上原本运行的容器组如果缺少与污点匹配的容忍度会被立即驱逐。 |
DevOps
- 独立的 DevOps 项目,提供访问可控的 CI/CD 流水线。
- 开箱即用的 DevOps 功能,无需复杂的 Jenkins 配置。
- 基于 Jenkinsfile 的流水线,提供一致的用户体验,支持多个代码仓库。
- 图形编辑面板,用于创建流水线,学习成本低。
- 强大的工具集成机制,例如 SonarQube,用于代码质量检查。
对比企业版(4.0)和社区版(KubeSphere3.3.0版本),在Devops上使用都是一样的
(1)图形编辑面板
(2)SonarQube,用于代码质量检查(这个工具在kubeSphere3.0版本也有)
4 限制和局限
暂不支持从 3.x 版本升级到 4.x,将在后续版本中支持 3.x 版本的升级。
以下功能暂不可用,将通过扩展组件的方式提供:
- 监控
- 告警
- 通知
- Istio
- Spring Cloud
- 项目网关、集群网关
- 存储卷快照
- 网络隔离
- Whizard 可观测中心
- RadonDB DMP
以下功能暂不可用,将在后续的版本中支持:
- 用户组管理
- 应用管理 (OpenPitrix) 组件
- 在 DevOps 项目中通过 S2I / B2I 功能构建镜像
四、KubeSphere 企业版 VS 开源版功能对比
功能 | KubeSphere 企业版 | KubeSphere 开源容器平台 |
商业支持 | ||
稳定商业支持 | √ | |
架构支持 | ||
支持 ARM 与国产 CPU | √ | |
可插拔开放架构 | ||
支持组件商店,丰富的社区和商业组件生态 | √ | |
图形化方式统一管理多个集群中的组件 | √ | |
商业组件动态更新,及时获取最新功能和安全更新 | √ | |
支持自定义 KubeSphere 样式,自行开发 KubeSphere 组件 | √ | |
可观测性 | ||
支持可观测中心,便捷管理多集群告警、监控指标 | √ | |
内置支持多租户与多维度的监控指标 | √ | √ |
内置多租户与多维度日志检索系统 | √ | √ |
内置可视化界面支持集群、平台与应用多维 度的审计日志检索 | √ | √ |
界面提供多租户与多维度的事件查询中心 | √ | √ |
内置多维度告警规则,灵活支持自定义配置 | √ | √ |
多维度告警策略 | √ | √ |
支持公有云短信、钉钉、企业微信、Slack、Email、Webhook等多种通知渠道 | √ | √ |
用户视角的通知配置 | √ | |
通知历史列表 | √ | |
支持GPU资源调度 | √ | √ |
支持GPU CPU指标融合监控 | √ | |
支持Grafana模板导入 | √ | √ |
支持Json文件转换 | √ | √ |
Devops | ||
支持 Source-to-Image 和 Binary-to-Image | √ | √ |
支持 Jenkins 流水线,内置可视化编辑面板 | √ | √ |
支持快速对接与集成 SonarQube 进行静态代码扫描,并在 UI 展示扫描结果 | √ | √ |
应用 | ||
内置 RadonDB 容器化数据库应用 | √ | |
支持 Helm Chart形式的应用商店,支持配置应用仓库 | √ | √ |
支持包含应用上架,下架,审核等完整的应用生命周期管理 | √ | √ |
提供 NGINX、Tomcat、Redis 等17 款应用 | √ | √ |
企业运营 | ||
提供集群与企业空间的多维度资源计量情况的监控报表 | √ | √ |
提供集群与企业空间的多维度资源消费情况的监控报表 | √ | √ |
微服务治理 | ||
支持蓝绿部署、灰度发布、流量镜像,无需学习 Istio | √ | √ |
内置微服务流量拓扑图,支持调整细粒度流量治理策略 | √ | √ |
内置微服务链路追踪,无需手动配置 | √ | √ |
内置 Spring Cloud | √ | |
多租户与权限管理 | ||
从业务视角提供“企业空间”租户隔离, 租户配额管理 | √ | √ |
支持用户组管理 | √ | √ |
抽象 K8s RBAC,内置平台、集群、应用维度的账户角色,支持自定义角色权限 | √ | √ |
平台所有功能均支持多租户(集群、企业空间、项目)隔离 | √ | √ |
网络与存储 | ||
支持集群级别的网关与相关业务统计 | √ | √ |
提供可视化 K8s 原生网络策略管理 | √ | √ |
支持不同租户(企业空间)与项目(namespace)间网络隔离 | √ | √ |
内置 Pod IP 池可视化管理 | √ | √ |
基于 Weave 提供可视化网络流量拓扑 | √ | √ |
UI界面中支持存储卷克隆及快照管理、存储卷用量数据监控等操作 | √ | √ |
安全 | ||
提供开箱即用的安全加固 | √ | |
提供安全相关的增强功能 | √ | |
提供详细的安全测试、审计、配置资料 | √ | |
保障产品在生命周期内得到持续安全更新 | √ |
五、实验
(1)LakeInsight
- 介绍
LakeSoul 是一款开源云原生湖仓一体框架,具备高可扩展的元数据管理(对数据进行管理、存储),并结合Al实现数据的处理与分析。
官网地址:https://lakesoul-io.github.io/zh-Hans/docs/intro
- 安装部署
进入扩展市场,首选订阅LakeInsight组件(需要注册一个 KubeSphere 云账号,接着在订阅扩展组件时,要求绑定云账号)。订阅成功后,点击安装即可。
无法安装,尝试安装了8次,均失败
安装报错
2024-01-04T14:33:10.870183472+08:00 Error: failed post-install: 1 error occurred:
2024-01-04T14:33:10.870234855+08:00 * timed out waiting for the condition
2024-01-04T14:33:10.870247144+08:00
2024-01-04T14:33:10.870255765+08:00
2024-01-04T14:33:10.870349498+08:00 helm.go:84: [debug] failed post-install: 1 error occurred:
2024-01-04T14:33:10.870364357+08:00 * timed out waiting for the condition
从报错信息看,是缺少某些条件,但报错信息中没有给出具体缺少什么
(2)KubeBlocks
- 介绍
KubeBlocks 是基于 Kubernetes 的云原生数据基础设施,帮助用户轻松构建容器化、声明式的关系型、NoSQL、流计算和向量型数据库服务。
官网地址: https://cn.kubeblocks.io/docs/preview/user-docs/overview/introduction
支持的数据库类型:
数据库引擎 | 简介 |
apecloud-mysql | ApeCloud MySQL 是一个与 MySQL 语法兼容的数据库,主要利用 RAFT 共识协议实现高可用性。 |
clickhouse | |
elasticsearch | Elasticsearch 是一个分布式、RESTful 风格的搜索引擎,专为生产规模的工作负载进行了速度和相关性能的优化。 |
etcd | etcd 是一个高度一致的分布式键值存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。 |
foxlake | ApeCloud FoxLake 是一个开源的云原生数据仓库。 |
ggml | GGML 是一个为机器学习设计的张量库,它的目标是使大型模型能够在高性能的消费级硬件上运行。 |
greptimedb | GreptimeDB 是一个云原生时间序列数据库,具有分布式、可扩展和高效的特性。 |
kafka | Apache Kafka 是一个开源的分布式事件流平台,广泛应用于高性能数据流水线、流式分析、数据集成和关键应用程序等场景,目前已经被数千家公司采用。 |
mariadb | MariaDB 是一个高性能的开源关系型数据库管理系统,广泛用于 Web 和应用服务器。 |
milvus | Milvus 是一个灵活、可靠且高性能的云原生开源向量数据库。 |
mongodb | MongoDB 是一个面向文档的 NoSQL 数据库,用于存储大量数据。 |
mysql(主备) | |
nebula | NebulaGraph 是一个开源的分布式图数据库,擅长处理具有千亿个顶点和万亿条边的超大规模数据集。 |
neon | Neon 是一家多云无服务器 Postgres 提供商。 |
oceanbase | OceanBase 是一个无限可扩展的分布式数据库,适用于数据密集型事务和实时运营分析工作负载,具有超快的性能,在 TPC-C 基准测试中曾一度创造了世界纪录。OceanBase 已经为全球超过 400 家客户提供了服务,并且一直在支持支付宝的所有关键业务系统。 |
official-postgresql | Kubernetes 的官方 PostgreSQL 集群定义 Helm Chart。 |
openldap | OpenLDAP 项目旨在协作开发一个强大、商业级、功能齐全、开源的 LDAP 应用套件和开发工具。其 Chart 为 KubeBlocks 提供了支持。 |
opensearch | opensearch 是一个开源、分布式、 RESTful 风格的搜索引擎。 |
oracle-mysql | MySQL 是一个广泛使用的开源关系型数据库管理系统(RDBMS)。 |
oriolebd | OrioleDB 是 PostgreSQL 的全新存储引擎,为该数据库平台带来了现代化的数据库容量、功能和性能。 |
pika | Pika 是一个可持久化的大容量 Redis 存储服务,兼容 string、hash、list、zset、set 的绝大部分接口。 |
polardb-x | PolarDB-X 是一个为高并发、大规模存储和复杂查询场景设计的云原生分布式 SQL 数据库。 |
postgresql | PostgreSQL 是一个先进的企业级开源关系型数据库,支持 SQL(关系型)和 JSON(非关系型)查询。 |
pulsar | Apache® Pulsar™ 是一个开源的、分布式消息流平台。 |
qdrant | Qdrant 是一个向量相似性搜索引擎和向量数据库。 |
redis | Redis 是一个开源的、高性能的、键值对内存数据库。 |
risingwave | RisingWave 是一个分布式 SQL 流处理数据库,旨在帮助用户降低实时应用的开发复杂性和成本。 |
starrocks | StarRocks 是一款高性能分析型数据仓库,支持多维、实时、高并发的数据分析。 |
tdengine | TDengine™ 是一个专为工业物联网而搭建的工业大数据平台,结合了时序数据库和流处理、数据订阅和缓存等重要功能。 |
vllm | vLLM 是一个快速且易于使用的 LLM 推理和服务库。 |
weaviate | Weaviate 是一个开源的向量数据库。 |
zookeeper | Apache ZooKeeper 是一个集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务。 |
- 安装部署
进入扩展市场,首选订阅KubeBlocks组件(需要注册一个 KubeSphere 云账号,接着在订阅扩展组件时,要求绑定云账号)。订阅成功后,点击安装即可。
- 使用
KubeBlocks 采用了 ApeCloud 公司提供的 MySQL 高可用版本,做了数据压缩和高可用性方面的改进。
- 当节点数大于等于 3 个时,通过一致性算法协议构成强一致高可用性集群,确保在单可用区故障的情况下 RPO=0。其中,主节点提供读写能力,其余节点提供只读服务。
- 当节点数等于 2 时,构成主备复制集群,其中主节点提供读写能力,备节点通过异步复制与主节点保持同步,提供只读服务和故障容灾能力。
- 当节点数等于 1 时,构成单节点集群,提供读写服务。KubeBlocks 仍然提供自动恢复能力,在云盘不损坏的情况下保证 RPO=0。
准备工作
- 确保 ApeCloud MySQL 引擎已启用
kubectl get addons.extensions.kubeblocks.io apecloud-mysql
- 查看可用于创建集群的数据库类型和版本
查看 apecloud-mysql
集群定义是否可用。
kubectl get clusterdefinition apecloud-mysql
查看可用于创建集群的所有版本。
kubectl get clusterversions -l clusterdefinition.kubeblocks.io/name=apecloud-mysql
- 为保持隔离,本教程中创建一个名为
demo
的独立命名空间。
kubectl create namespace demo
创建集群
KubeBlocks 支持创建两种类型的 MySQL 集群:单机版(Standalone)和集群版(RaftGroup)。单机版仅支持一个副本,适用于对可用性要求较低的场景。 集群版包含三个副本,适用于对高可用性要求较高的场景。为了确保高可用性,所有的副本都默认分布在不同的节点上。
KubeBlocks 实现了用 Cluster CRD 来定义集群。比如,可以通过下面的命令创建一个 MySQL 集群版:
cat <<EOF | kubectl apply -f -
apiVersion: apps.kubeblocks.io/v1alpha1
kind: Cluster
metadata:
name: mysql-cluster
namespace: demo
spec:
clusterDefinitionRef: apecloud-mysql
clusterVersionRef: ac-mysql-8.0.30
componentSpecs:
- componentDefRef: mysql
name: mysql
replicas: 3
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: "1"
memory: 1Gi
volumeClaimTemplates:
- name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
terminationPolicy: Delete
EOF
-
spec.clusterDefinitionRef
是集群定义 CRD 的名称,用来定义集群组件。 -
spec.clusterVersionRef
是集群版本 CRD 的名称,用来定义集群版本。 -
spec.componentSpecs
是组件列表,用来定义集群组件。 -
spec.componentSpecs.componentDefRef
是组件定义的名称,在 ClusterDefinition 中定义。你可以使用kubectl get clusterdefinition vape cloud-MySQL -o json | jq '.spec.componentDefs[].name'
获取组件定义的名称。 -
spec.componentSpecs.name
是组件的名称。 -
spec.componentSpecs.replicas
是组件的副本数。 -
spec.componentSpecs.resources
是组件的资源要求。 -
spec.componentSpecs.volumeClaimTemplates
是卷声明模板的列表,用于定义组件的卷声明模板。 -
spec.terminationPolicy
是集群的终止策略,默认值为Delete
,有效值为DoNotTerminate
、Halt
、Delete
和WipeOut
。DoNotTerminate
会阻止删除操作。Halt
会删除工作负载资源,如 statefulset 和 deployment 等,但是保留了 PVC 。Delete
在Halt
的基础上进一步删除了 PVC。WipeOut
在Delete
的基础上从备份存储的位置完全删除所有卷快照和快照数据。
KubeBlocks operator 监听 Cluster
CRD,创建集群及其依赖资源。你可以使用以下命令获取该集群创建的所有资源。
kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mysql-cluster -n demo
查看所创建的 MySQL 集群对象:
kubectl get cluster mysql-cluster -n demo -o yaml
连接集群
使用 kubectl exec
命令进入 Pod 并连接到数据库。
KubeBlocks operator 会创建一个名为 mysql-cluster-conn-credential
的新的 Secret 来存储 MySQL 集群的连接凭证。该 Secret 包含以下 key:
-
username
:MySQL 集群的根用户名。 -
password
:根用户的密码。 -
port
:MySQL 集群的端口。 -
host
:MySQL 集群的主机。 -
endpoint
:MySQL 集群的终端节点,与host:port
相同。
- 获取用于
kubectl exec
命令的username
和password
.
获取用户名
kubectl get secrets -n demo mysql-cluster-conn-credential -o jsnotallow='{.data.\username}' | base64 -d
获取密码
kubectl get secrets -n demo mysql-cluster-conn-credential -o jsnotallow='{.data.\password}' | base64 -d
查看创建的pod
kubectl get pod -n demo
- 使用用户名和密码,进入 Pod
mysql-cluster-mysql-0
并连接到数据库。
kubectl exec -ti -n demo mysql-cluster-mysql-0 -- bash
mysql -uroot -pj6vgqxtl
退出使用 exit
命令
六、参考资料
KubeSphere 企业版_全新云原生操作系统_源于 KubeSphere 的商用级容器管理平台
解锁云原生无限可能!KubeSphere 企业版 4.0 发布 | 青云QingCloud
KubeSphere Enterprise v4.0.0 Release Notes