运维说明
组件运维
系统组件
BDOS Core
BDOS Core 是 BDOS基座层核心子系统
辐射范围为:集群全员共用
安装/配置调整权限仅系统管理员可以维护
其下应用清单
- BPAAS Core CronService:KDP 提供的一个定时任务服务,用于定期获取集群的信息
- BDOS Cluster Node Syncer:以DaemonSet形式运行在集群节点上,执行节点Linux用户同步、用户Kerberos Keytab文件分发任务
- BPAAS Core Kubernetes:KDP 提供的一个对接kubernetes的服务,用于集群内部的服务快速方便的操作kubernetes资源
- BPAAS Core AppDoc:KDP 提供的一个文档转换服务,用于转换markdown文档为静态网页提供web进行展示
- BPAAS Core Service:KDP 提供的一个应用及集群管理的服务,用于集群内应用、资源的的管理
- BDOS Portal:BDOS Portal 是一款企业级门户网站应用程序,为用户提供了一个集成式的数字化工作环境。
- BDOS Audit Service:Audit Service 提供管理操作记录的功能。
- Bdos User Service Backend:KDP 提供的一个用户后端服务,对集群内部的应用提供用户创建、删除等相关的操作
- Reloader:KDP 提供的一个配置加载服务,用于监测集群内配置的变化并重启对应的pod
- BDOS User Service:BDOS User Service(用户服务)包含了用户身份管理、单点登录、安全组管理等功能
- BDOS Tenant Resource Manager:通过资源插件以及申明式资源集合定义完成租户资源(包括Linux User & Group、NFS&HDFS Dir、Hive & MySQL DB等)的创建和状态维持。
- BDOS Setting Service:BDOS Setting Service 是系统设置服务,主要提供与业务相关的配置服务,包括但不限于产品定制、运营参数、数据字段等的在线配置管理
- BDOS-KDP-Web:KDP 网页应用
BDOS Infra
BDOS Infra 是BDOS基座基础设施层子系统
辐射范围为:集群全员共用
安装/配置调整权限仅系统管理员可以维护
其下应用清单
- Kubed:在命名空间和/或集群之间同步的ConfigMaps和Secrets
- Bdos-Bigdata-Config:核心大数据组件相关configmap配置
- Kadalu Operator:Kadalu是一个在容器生态系统(如 kubernetes、openshift、RKE 等)中提供持久存储
- LVM CSI Driver:CSI 驱动程序,用于配置由 LVM 等支持的本地 PV
- Local Persistent Volumes:KDP 集群内共享存储服务,用于集中管理应用的存储资源
- DockerRegistry:KDP 提供的一个镜像服务器,用于集群内的镜像存储
- BPAAS Global Secrets:KDP 集群内秘钥管理服务,用于集中管理应用的秘钥信息
- MysqlHA:Mysql 高可用服务,用于创建主备Mysql,并提供Mysql服务
- Kadalu Node Mount:K8s Node挂载Kadalu Storage的Daemon服务
- Bdos Artifacts:KDP 提供的一个文件服务器,用于集群内的文件存储
- Ingress Nginx:Ingress-nginx 是 Kubernetes 的入口控制器,使用NGINX作为反向代理和负载均衡器
- Certification Manager:将证书和证书颁发者添加为Kubernetes集群中的资源类型,并简化了获取、续订和使用这些证书的过程。仅需要在每个集群中运行一次
BDOS Obs 是BDOS PaaS层可观测性子系统
BDOS Obs是BDOS基座可观测性子系统
辐射范围为:集群全员共用
安装/配置调整权限仅系统管理员可以维护
其下应用清单
- BDOS LogViewer:KDP 提供的一个日志代理服务,用于查看集群内应用的日志信息
- BPaaS SDK Alerts:KDP 集群内通用告警配置服务,用于配置集群内部的通用告警规则
- Grafana OnCall App:KDP Granfana 中用于告警通知的服务
- Thanos:Thanos 利用 Prometheus 2.0 存储格式以经济高效的方式将历史指标数据存储在任何对象存储中,同时保持快速查询延迟
- Prometheus:集群监控告警套件
- Loki:Loki 是受 Prometheus 启发的水平可扩展、高可用性、多租户日志聚合系统
- BPaaS SDK Dashboards:KDP 集群内通用面板服务,用于配置管理集群内部的通用面板
- BPaaS Custom Service Monitor SDK:KDP 集群外部服务纳入集群内部管理,使用集群内prometheus对外部服务进行监控
大数据组件
HDFS
Hadoop Distributed File System,简称 HDFS,是一个分布式文件系统,它是Apache Hadoop的核心存储模块
辐射范围为:集群全员共用
安装/配置调整权限仅系统管理员可以维护
其下应用清单
- HttpFS gateway:HttpFS是一个支持所有HDFS文件系统操作(读和写)的REST HTTP服务
- Hue service:Hue是一个开源的智能分析工作台,KDP做了企业化的集成改造
- HDFS:HDFS是Hadoop的分布式文件系统(Hadoop Distributed File System),实现大规模数据可靠的分布式读写、存储
- Zookeeper:在 Kubernetes 中,Zookeeper 作为一种服务发现和配置管理的工具,为 Kubernetes 集群中的应用提供支持。KDP做了企业化的集成改造
MinIO
MinIO是一个开源的分布式对象存储服务器,可以用来存储和访问大规模的非结构化数据,如图片、视频、日志和备份等。支持高可用性和自动扩展,在Kubernetes中,MinIO 通常作为一个独立的服务来运行,可以通过 PVC(Persistent Volume Claim)将数据持久化到云盘或本地存储中
辐射范围为:集群全员共用
安装/配置调整权限仅系统管理员可以维护
其下应用清单
- MinIO:MinIO 是一款高性能的对象存储系统,可部署在 Kubernetes 集群中,支持多种存储后端,如本地存储、云存储等。我们对 MinIO 进行了企业化集成,为用户提供了更丰富的功能。用户可以方便地将数据存储到 Kubernetes 集群中,并实现高可用性和可扩展性
Hive
Apache Hive 是一个建立在Hadoop架构之上的数据仓库。它能够提供数据的精炼,查询和分析
辐射范围为:集群全员共用 + 指定安全组
安装/配置调整权限:系统管理员 + 安全组管理员
其下应用清单
- Hive Server2:Hive Service 2提供了一个标准的ODBC/JDBC接口访问Hive
- 使用范围:指定安全组。即集群内不同安全组可以安装属于自己下面的 Hive Server2
- Hive Metastore:Hive Metastore(HMS)是一个元数据存储系统
- 使用范围:集群全员共用。即集群内只有集群系统管理员可以对此应用进行维护
Click
ClickHouse是一个开源的列式存储数据库管理系统,具有高度的可伸缩性和性能。它支持多种数据格式和查询语言,可以轻松处理海量数据,广泛用于大数据领域的数据分析和处理任务。还具有快速的数据插入和查询速度
辐射范围为:集群全员共用
安装/配置调整权限:系统管理员
其下应用清单
- Clickhouse Server:是 ClickHouse 数据库的核心组件之一。在KDP中 我们对 clickhouse-server 进行了改造,以便更好地满足我们的业务需求,包括提高性能、增强稳定性、加强安全性等方面。
Spark
Spark 是一个开源集群运算框架,相对于Hadoop的MapReduce会在执行完工作后将中介资料存放到磁盘中,Spark使用了存储器内运算技术,能在资料尚未写入硬盘时即在存储器内分析运算。
辐射范围为:集群全员共用 + 指定安全组
安装/配置调整权限:系统管理员 + 安全组管理员
其下应用清单
- K8S Big Data Manage Server:K8S Big Data Manage Server 是一个Spark operator的HTTP REST接口,这些接口可以让用户更方便地管理和监控Spark集群,例如创建、调整和删除Spark作业、应用程序以及相应的资源(如内存、CPU等)
- Spark History Server:提供一个展示页面,用于显示以及监控已完成的 Spark 应用程序的指标和性能
- 使用范围:指定安全组。即集群内不同安全组可以安装属于自己下面的 Spark History Server
- Spark Operator:它提供了一种简单而可靠的方式来管理Spark应用程序的生命周期。Spark Operator 充分利用Kubernetes的弹性和自愈能力,可以实现快速部署、自动缩放和容错能力等功能
Volcano
Volcano 是基于Kubernetes的容器批量计算平台,主要用于高性能计算场景。它提供了Kubernetes目前缺少的一套机制,这些机制通常是机器学习大数据应用、科学计算、特效渲染等多种高性能工作负载所需的。
辐射范围为:集群全员共用
安装/配置调整权限:系统管理员
其下应用清单
- Volcano:高性能任务调度引擎,它们可以用于定义任务和作业的规范,同时还提供了一个灵活的作业调度器,以满足不同场景下的需求。
- Volcano Kube State Metrics:是 Volcano 组件的一部分,用于监控 Volcano 的组件状态。它使用 Kubernetes 的自定义指标 API 暴露了 Volcano 组件的度量信息,包括任务队列状态、调度器状态、资源池状态等,以便于管理员监控和调整 Volcano 系统的运行。在 Volcano Kube State Metrics 的帮助下,管理员可以更好地了解 Volcano 组件的状态,并及时发现和解决潜在的问题
Kafka
Kafka 是一个开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,这使它作为企业级基础设施来处理流式数据非常有价值
辐射范围为:集群全员共用
安装/配置调整权限仅系统管理员可以维护
其下应用清单
- Kafka Operator:Kafka Operator 是一个 Kubernetes 上的控制器,它可以管理 Kafka 集群的生命周期,包括创建、扩展、缩容、升级、备份和恢复等。Kafka Operator 会自动创建 Kafka 集群所需的 Kubernetes 资源,如 StatefulSet、Service、ConfigMap 等,从而简化了 Kafka 集群的部署和维护
- Kafka Connect:Kafka Connect 是一个可扩展的框架,可以将各种数据源和数据目标与 Kafka 集成。它是基于分布式的、可伸缩的 Worker 进程实现。Kafka Connect 提供了很多现成的 Connectors,同时也支持自定义 Connector
- Kafka Cluster:Kafka Cluster 是指一组 Kafka Broker 节点组成的集群,它们协同工作来提供高可用性、高吞吐量的消息服务
- Kafka Manager:Kafka Manager 是一个开源的 Web 界面管理工具,可以方便地管理和监控 Kafka 集群。它提供了 Kafka 集群的各种指标,如 Broker 指标、Topic 指标、Consumer 指标等,同时也提供了管理功能,如创建 Topic、修改 Topic 配置等
- Schema Registry:Schema Registry 是一个注册中心,用于管理和存储 Kafka 消息的 Schema(消息格式)
Flink
Flink是一个流处理和批处理框架,支持事件驱动、基于时间的窗口操作和精确一次语义处理。Flink还提供了易于使用的API和丰富的工具生态系统,可用于大规模数据处理、机器学习、图形处理等场景
辐射范围为:集群全员共用
安装/配置调整权限仅系统管理员可以维护
其下应用清单
- Flink Session Cluster: 是一种在 Kubernetes 上运行 Flink 的方式,它可以提供 Flink 集群的会话模式,并且能够保持 Flink 作业的状态信息,从而支持 Flink 作业的断点续传
- Flink Operator:Flink Operator在Kubernetes上使用自定义资源定义(CRD:Custom Resource Definition)来创建、管理和升级Flink集群,它还提供了一些常见的管理功能,如备份和恢复、扩展和缩小集群等。通过Flink Operator,您可以使用Kubernetes的自动化能力来简化Flink集群的管理,并在需要时轻松地扩展计算资源,以满足不断增长的数据处理需求
- Stream Park:StreamPark 是一个流处理应用开发框架和操作管理平台,基于 Apache Flink 和 Apache Spark,可以简化流处理的编程和运维,提供了多种功能和组件,如项目编译、发布、参数配置、启动、savepoint,火焰图 (flame graph),Flink SQL,监控等
开发工具
Hue
Hue (Hadoop User Experience) 是一个开源的Apache Hadoop UI系统,通过使用Hue,可以在浏览器端的Web控制台上与Hadoop集群进行交互,来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job,执行Hive的SQL语句,浏览HBase数据库等等
辐射范围为:集群全员共用
安装/配置调整权限仅系统管理员可以维护
其下应用清单
- Hue:在KDP,我们对其进行了改造以在Kubernetes上进行部署和管理,并增加了自定义插件以满足更多企业级的需求。Hue的改造版本可以更好的用于管理集群、执行查询和分析数据等任务。
Superset
Superset 是由开源的数据分析与可视化平台,该工具主要特点是可自助分析、自定义仪表盘、分析结果可视化(导出)、用户/角色权限控制,还集成了一个SQL编辑器,可以进行SQL编辑查询对结果集进行保存可视化等
辐射范围为:集群全员共用 + 指定安全组
安装/配置调整权限:系统管理员 + 安全组管理员
其下应用清单
- Superset:提供界面化的数据可视化和数据探索平台,可以通过SQLAlchemy和Python查询不同类型的数据库和数据源,如MySQL、PostgreSQL、Apache Hive和Apache Drill等。在KDP对Superset做了一些改造,以适应企业级的需求,包括使用进群内的数据源、集成了公司内部的认证和授权服务等
安全认证
Ranger
Ranger是一个开源的企业级安全管理解决方案,提供细粒度的数据安全和访问控制,为企业应用程序和数据提供了安全性和合规性保障。它支持多种数据存储和计算框架,支持对数据进行细粒度的访问控制和策略管理,可以根据用户身份、资源类型、时间、位置等条件对访问进行限制。此外,Ranger还提供了审计和监视功能,可以对用户行为和安全事件进行跟踪和报告
辐射范围为:集群全员共用
安装/配置调整权限仅系统管理员可以维护
其下应用清单
- Ranger Admin:Ranger Admin通过一个Web界面提供了访问Ranger策略引擎的接口,使得管理员可以创建、修改、测试和发布安全策略,以控制对Hadoop集群中各种资源的访问权限。在KDP中对Ranger Admin进行了改造,以适应企业级别的需求和环境
Keycloak
Keycloak是一个开源的身份和访问管理系统,它提供了一个单点登录(SSO)解决方案,可以为Web应用程序和RESTful Web服务提供身份验证和授权。Keycloak基于OAuth 2.0和OpenID Connect协议,支持多种身份验证方法。同时提供了一系列管理工具,可以用来管理用户、角色、授权、客户端和实体(如组织和部门)。它还提供了REST API和基于事件的钩子机制,可以方便地扩展和集成到现有的应用程序中
辐射范围为:集群全员共用
安装/配置调整权限仅系统管理员可以维护
其下应用清单
- One Login:用于将 OneLogin 集成到 Keycloak 中,以提供更安全、更方便的用户身份验证和访问控制功能。该插件允许用户使用 OneLogin 账号登录到 Keycloak,避免了需要记住多个用户名和密码的麻烦,同时也能确保访问安全性
Kerberos
Kerberos是一种计算机网络认证协议,旨在提供网络中的安全认证服务。它通过客户端/服务器模型实现认证,并使用加密技术确保通信的机密性。Kerberos通常用于企业环境中的单点登录(SSO)系统中,用于验证用户身份并提供安全访问网络资源的能力
辐射范围为:集群全员共用
安装/配置调整权限仅系统管理员可以维护
其下应用清单
- Kerberos:在KDP中 增强 Kerberos 组件的安全性方面,例如加强了密码策略,增强了网络传输安全等。同时对组件进行了深层次的开发,以满足企业的更多安全性的需求。
- Kerberos KDC Slave:Kerberos KDC Slave是Kerberos的一个组件,用于在Kerberos领域中的辅助节点上部署,其主要作用是承担Kerberos服务端的一部分功能,包括认证请求的处理和用户凭据的验证。KDC Slave通过与Kerberos主服务器的通信,实现了Kerberos数据库的同步和Kerberos领域的认证流量的负载均衡。在KDP中,Kerberos KDC Slave被用作Kerberos认证流量的负载均衡和高可用,从而提高Kerberos系统的可靠性和性能
- BDOS Cluster Node Syncer For Kerberos:以DaemonSet形式运行在集群节点上,执行节点Linux用户同步、用户Kerberos Keytab文件分发任务
- Kerberos HTTP:是一个基于 Flask 的 HTTP 服务,封装了 kerberos 命令行工具,为开发者提供 HTTP 接口
集群运维
集群Kerberos开关
Kubernetes通常需要与Kerberos集成来实现身份验证和授权。在以下几种场景下,可能需要将Kerberos禁用来进行测试:
- 测试Kubernetes集群的可扩展性和负载均衡能力时,可以关闭Kerberos以减少身份验证的开销。
- 在测试Kubernetes集群的网络连接性时,如果Kerberos引起了问题,可以先关闭它以排除网络问题。
- 在测试Kubernetes集群的安全性和权限控制时,需要禁用Kerberos以验证不同用户和角色的访问权限。
需要注意的是,在生产环境中禁用Kerberos可能会导致安全风险,因此在进行测试之前,需要确保已经在测试环境中正确地配置了Kerberos,以便在必要时可以随时重新启用。
在KDP中涉及Kerberos的核心大数据组件
- 相关组件:kerberos,kerberos-http,ranger
- 依赖组件:HDFS,HMS,HS2,Spark,spark-history-server,httpfs-gateway,hue,kafka-broker,Flink
影响范围
- Kerberos为关闭状态或者从开到关的调整,不影响以上组件任何功能
- 如果kerberos/kerberos-http/ranger关闭,只对注册有影响,不对任何已部署的组件功能产生影响
测试内容
- 对照kerberos场景下,上面“依赖”组件的测试,需要把用例中跟鉴权/授权相关的用例验证,比如不同用户的操作权限测试去掉。不开启kerberos,就默认使用root用户执行。
以下分两种情况对 KDP中进行 Kerberos 的开关的运维操作
情况1:新集群首次安装
- 组件bpass。bdos-bigdata-config.app 中 bdos-auth-cfg 调整,关闭kerberos配置:KERBEROS_ENABLED: “False” , CLIENT_KERBEROS_ENABLED: “False”
- 组件HDFS。 hdfs.app 中修改 Chart Values: global.kerberosEnabled: false
- 组件flink。注释掉flink-apache-cluster.session.app 中的(#认证)下的一系列的配置 sercurity.kerberos.*
- 组件kafka operator。修改values: kerberos.enable: false
- 组件kafka exporter。修改spec.container.args中的配置–sasl.enabled=false
上述修改完成后即可执行正常发布
情况2:已经存在集群做Kerberos开关的变更
- 组件bpaas中bdos-bigdata-config.app定义的 bdos-auth-cfg 调整,关闭配置:KERBEROS_ENABLED: “False” , CLIENT_KERBEROS_ENABLED: “False”。修改后手动发布bdos-bigdata-config.app, 相关app会自动重启完成切换
- 组件HDFS。 hdfs.app 中修改 Chart Values: global.kerberosEnabled: false。修改后手动发布
- 组件flink。注释掉flink-apache-cluster.session.app 中的(#认证)下的一系列的配置 sercurity.kerberos.* 。修改后手动发布
- 组件kafka operator。修改values: kerberos.enable: false。修改后手动发布
- 组件Kafka。 手动删除kafka statefulset(等待自动重启即可)
- 组件kafka exporter。修改spec.container.args中的配置–sasl.enabled=false。修改后手动发布
组件运维权限说明
注意:以下组件的高级权限操作仅限于系统管理员,如果集群使用中分配了使用权限/账号,需要在完成后进行回收
组件 | 影响内容 |
---|---|
K8s API | 所有组件的安全性 |
Mysql | Dataops及核心大数据安全性 |
Kerberos | KDC数据安全 |
OnlineWeb | 所有租户页面操作权限 |
RangerWeb | 核心大数据组件用户权限数据 |
HDFS数据存储 | HDFS数据 |
MinIO | 影响以下数据监控/日志数据存储KDC和PGsql数据库备份 |
PGsql | Dataops核心组件:Data Service |
ClickHouse | Dataops核心组件:Account Service |
Zookeeper | 通过Lens forward出地址后,可以对节点上的数据做操作 |
ElasticSearch | 通过Lens forward出地址后,可以对节点上的数据做操作 |
Redis | 通过Lens forward出地址后,可以对节点上的数据做操作 |