平台功能

概览

KubeSphere 作为开源的企业级全栈化容器平台,为用户提供了一个健壮、安全、功能丰富、具备极致体验的 Web 控制台。拥有企业级 Kubernetes 所需的最常见的功能,如工作负载管理,网络策略配置,微服务治理(基于 Istio),DevOps 项目 (CI/CD) ,安全管理,Source to Image/Binary to Image,多租户管理,多维度监控,日志查询和收集,告警通知,审计,应用程序管理和镜像管理、应用配置密钥管理等功能模块。

它还支持各种开源存储和网络解决方案以及云存储服务。例如,KubeSphere 为用户提供了功能强大的云原生工具负载均衡器插件 OpenELB,这是为 Kubernetes 集群开发的 CNCF 认证的负载均衡插件。

有了易于使用的图形化 Web 控制台,KubeSphere 简化了用户的学习曲线并推动了更多的企业使用 Kubernetes 。

Overview

以下从专业的角度详解各个模块的功能服务。有关详细信息,请参阅本指南中的相应章节。

部署和维护 Kubernetes

部署 Kubernetes 集群

KubeKey 允许用户直接在基础架构上部署 Kubernetes,为 Kubernetes 集群提供高可用性。建议在生产环境至少配置三个主节点。

Kubernetes 资源管理

对底层 Kubernetes 中的多种类型的资源提供可视化的展示与监控数据,以向导式 UI 实现工作负载管理、镜像管理、服务与应用路由管理 (服务发现)、密钥配置管理等,并提供弹性伸缩 (HPA) 和容器健康检查支持,支持数万规模的容器资源调度,保证业务在高峰并发情况下的高可用性。

由于 KubeSphere 3.0 具有增强的可观测性,用户可以从多租户角度跟踪资源,例如自定义监视、事件、审核日志、告警通知。

集群升级和扩展

KubeKey 提供了一种简单的安装,管理和维护方式。它支持 Kubernetes 集群的滚动升级,以便集群服务在升级时始终可用。另外,也可以使用 KubeKey 将新节点添加到 Kubernetes 集群中以使用更多工作负载。

多集群管理和部署

随着IT界越来越多的企业使用云原生应用程序来重塑软件产品组合,用户更倾向于跨位置、地理位置和云部署集群。在此背景下,KubeSphere 进行了重大升级,以其全新的多集群功能满足用户的迫切需求。

借助 KubeSphere的图形化 Web 控制台,用户可以管理底层的基础架构,例如添加或删除集群。可以使用相同的方式管理部署在任何基础架构(例如 Amazon EKS和Google Kubernetes Engine)上的异构集群。

  • 独立:可以在 KubeSphere 容器平台中维护和管理独立部署的 Kubernetes 集群。
  • 联邦:多个 Kubernetes 集群可以聚合在一起作为 Kubernetes 资源池。当用户部署应用程序时,副本可以部署在资源池中的不同 Kubernetes 集群上。由此,跨区域和多集群实现了高可用性。

KubeSphere 允许用户跨集群部署应用程序。更重要的是,还可以将应用程序配置为在特定集群上运行。此外,多集群功能与行业领先的应用程序管理平台 OpenPitrix 配合使用,使用户可以在整个生命周期内管理应用程序,包括发行、移除和分发。

有关更多信息,请参阅多集群管理

DevOps支持

KubeSphere 提供了基于 Jenkins 的可视化 CI/CD 流水线编辑,无需对 Jenkins 进行配置,同时内置丰富的 CI/CD 流水线插件,包括Binary-to-Image (B2I) 和Source-to-Image (S2I),用于将源代码或二进制文件打包到准备运行的容器映像中。

DevOps

CI/CD 流水线

  • 自动化:CI/CD 流水线和构建策略均基于 Jenkins,可简化和自动化开发、测试和生产过程。缓存依赖项用于加速构建和部署。
  • 开箱即用:用户可以基于他们的 Jenkins 构建策略和客户端插件来创建基于 Git repository/SVN 的 Jenkins 流水线。在内置的 Jenkinsfile 中定义任何步骤和阶段。支持常见的代理类型,例如 Maven,Node.js 和 Go。用户也可以自定义代理类型。
  • 可视化:用户可以轻松地与可视化控制面板进行交互,编辑、管理 CI/CD 流水线。
  • 质量管理:支持通过静态代码分析扫描来检测DevOps 项目中的 bug、代码错误和安全漏洞。
  • 日志:日志完整记录 CI/CD 流水线运行全过程。

Source-to-Image

Source-to-Image (S2I) 是一个直接将源代码构建成镜像的自动化构建工具,它是通过将源代码放入一个负责编译源代码的构建器镜像(Builder image) 中,自动将编译后的代码打包成 Docker 镜像。

S2I 允许用户将服务发布到 Kubernetes,而无需编写 Dockerfile。只需要提供源代码仓库地址,并指定目标镜像仓库即可。所有配置将在 Kubernetes 中存储为不同的资源。服务将自动发布到 Kubernetes,并且镜像也将推送到目标仓库。

S2I

Binary-to-Image

与 S2I 相似,Binary-to-Image (B2I) 是一个直接将二进制文件构建成镜像的自动化构建工具,用于从二进制文件(例如 Jar,War,Binary 包)构建可复制的容器镜像。

用户只需要上传应用程序二进制包,并指定要推送到的镜像仓库即可。其余部分与 S2I 完全相同。

有关更多信息,请参阅 DevOps 用户指南

基于 Istio 的服务网络

KubeSphere 服务网络由一组生态系统项目组成,例如 Istio,Envoy 和 Jaeger。我们设计了一个统一的用户界面来使用和管理这些工具。大多数功能都是现成的,并且是从开发人员的角度进行设计的,这意味着 KubeSphere 可以帮助用户减少学习难度,因为不需要单独深入研究这些工具。

KubeSphere 服务网络为分布式应用程序提供细粒度的流量管理、可观测性、服务跟踪以及服务身份和安全性管理。因此,开发人员只需要专注于核心业务。通过 KubeSphere 的服务网络管理,用户可以更好地跟踪、查看路由和优化 Kubernetes 中用于云原生应用程序的通信。

流量管理

  • 金丝雀发布: 金丝雀发布是在现有生产系统旁边创建了一个全新的独立生产环境,通过使新版本只对少数终端用户可用,这样可降低向推出新代码和功能的风险。如果新版本一切顺利,用户可以更改百分比,并逐渐用新版本替换旧版本。
  • 蓝绿发布: 允许用户同时运行一个应用程序的两个版本。蓝色代表当前应用程序版本,绿色代表经过功能和性能测试的新版本。一旦测试结果成功,就将应用程序流量从生产版本(蓝色)路由到新版本(绿色)。
  • 流量镜像:流量镜像也叫作影子流量,是指通过一定的配置将线上的真实流量复制一份到镜像服务中去,我们通过流量镜像转发以达到在不影响线上服务的情况下对流量或请求内容做具体分析的目的,它的设计思想是只做转发而不接收响应(fire and forget),使团队能够以最小的风险进行生产变更。
  • 断路器: 允许用户设置服务内单个主机的呼叫限制,例如并发连接数或对该主机的呼叫失败次数。

有关更多信息,请参见灰度发布

可视化

KubeSphere 服务网络具有可视化微服务之间的连接以及它们如何互连的拓扑的能力。在这方面,可观测性对于理解云原生微服务的互连非常有帮助。

分布式跟踪

用户能基于 Jaeger,跟踪 KubeSphere 服务之间的网络交互。它通过可视化帮助用户更深入地了解请求延迟、瓶颈、序列化和并行性。

多租户管理

在 KubeSphere 中,资源(例如集群)可以在租户之间共享。首先,管理员或运维人员需要使用不同的权限设置不同的帐户角色。可以将这些角色分配给平台中的成员,以对各种资源执行特定的操作。同时,由于 KubeSphere 完全隔离了租户,因此它们根本不会相互影响。

  • 多租户:它提供了基于角色的细粒度身份验证和三层授权的系统。
  • 统一认证:KubeSphere 与 LDAP 或 AD 协议的中央身份验证系统兼容。还支持单点登录 (SSO),以实现租户身份的统一身份验证。
  • 授权系统:它分为三个级别:集群,企业空间和项目。 KubeSphere 确保可以共享资源,同时完全隔离多个级别的不同角色以确保资源安全。

有关更多信息,请参见企业空间中的角色和成员管理

可观测性

多维度监控

KubeSphere 通过可视化界面操作监控、运维功能,可简化操作和维护的整个过程。它提供了对各种资源的自定义监控,并可以立即将发生的问题发送给用户。

  • 可定制的监控仪表板:用户可以准确决定需要以哪种形式监控哪些工具。 KubeSphere 中提供了不同的模板供用户选择,例如 Elasticsearch,MySQL 和 Redis。或者,他们也可以创建自己的监视模板,包括图表,颜色,间隔和单位。

  • 运维友好:开放标准接口,易于对接企业运维系统,以统一运维入口实现集中化运维。

  • 第三方兼容性:KubeSphere 与 Prometheus 兼容,后者是用于在 Kubernetes 环境中进行监视的事实指标收集平台。监视数据可以在 KubeSphere 的 Web 控制台中无缝显示。

  • 二级精度的多维度监控

    • 在集群资源维度,系统提供了全面的指标,例如 CPU 利用率、内存利用率、CPU 平均负载、磁盘使用量、inode 使用率、磁盘吞吐量、IOPS、网卡速率、容器组运行状态、etcd 监控、API Server 监控等多项指标。
    • 在应用资源维度,提供针对应用的 CPU 用量、内存用量、容器组数量、网络流出速率、网络流入速率等五项监控指标。并支持按用量排序和自定义时间范围查询,快速定位异常提供按节点、企业空间、项目等资源用量排行。
  • 排序:用户可以按节点,工作空间和项目对数据进行排序,从而以直观的方式为他们的资源运行提供图形化视图。

  • 组件监控:它允许用户快速定位任何组件故障,以避免不必要的业务停机。

自研多租户告警系统

  • 自定义告警策略和规则:支持基于多租户、多维度的监控指标告警。 该系统将发送与各种资源,如节点、网络和工作负载相关的告警。可自定义包含多个告警规则的告警策略,如重复间隔和时间,来定制自己的告警策略、阈值和告警级别。
  • 准确的事件跟踪:用户可以及时了解集群内部发生的情况,例如容器运行状态(成功或失败),节点调度和镜像拉取结果。 它们将被准确记录,并在 Web 控制台中显示结果,状态和消息。 在生产环境中,这将帮助用户及时响应任何问题。
  • 增强审计安全性:由于 KubeSphere 具有对用户授权的细粒度管理,因此可以将资源和网络完全隔离以确保数据安全。 全面的审核功能使用户可以搜索与任何操作或告警相关的活动。
  • 多种通知方式:电子邮件是用户接收相关活动通知并获取所需信息的一种关键方法。用户可以自定义规则来发送邮件,包括自定义发件人电子邮件地址及其收件人列表。此外,KubeSphere 还支持其他渠道,例如 Slack 和微信等。随着后续迭代,KubeSphere 会为用户提供更多的通知渠道和配置。

有关更多信息,请参见项目用户指南

日志查询与收集

  • 多租户日志管理.:提供多租户日志管理,在 KubeSphere 的日志查询系统中,不同的租户只能看到属于自己的日志信息,支持中文日志检索,支持日志导出。
  • 多级日志查询:多级别的日志查询(项目/工作负载/容器组/容器以及关键字)、灵活方便的日志收集配置选项等。
  • 多种日志收集平台:用户可以选择多种日志收集平台,例如 Elasticsearch,Kafka 和 Fluentd。
  • 落盘日志收集功能:对于将日志以文件形式保存在 Pod 挂盘上的应用,支持开启落盘日志收集功能。

应用程序管理和编排

  • 应用商店:KubeSphere 提供了一个基于开源 OpenPitrix 的应用商店,支持应用上传、应用审核、应用上架与分类、应用部署,为用户提供应用全生命周期管理功能。
  • 应用资料库:在 KubeSphere 中,用户可将基于 Helm Chart 模板文件打包好的应用程序包上传并保存在第三方平台之上,例如 QingStor 对象存储服务、AWS S3 或者 GitHub 等,同时在 KubeSphere 控制台上配置并使用这些第三方的应用资料库。
  • 应用程式范本:有了应用程序模板,KubeSphere 只需单击一下即可提供一种可视化的方法来部署应用程序。 在内部,应用程序模板可以帮助企业中的不同团队共享中间件和业务系统。 在外部,它们可以用作基于不同方案和需求的应用程序交付的行业标准。

多种存储解决方案

  • 可使用开源存储解决方案,例如 GlusterFS,CephRBD 和 NFS。
  • 可使用 NeonSAN CSI 插件连接到 QingStor NeonSAN,以满足低延迟,高弹性和高性能的核心业务要求。
  • 可使用 QingCloud CSI 插件连接到 QingCloud 平台中的各种块存储服务。

多种网络解决方案

  • 支持 Calico、Flannel 等开源网络方案。

  • OpenELB,是由 KubeSphere 开发团队设计、经过 CNCF 认证的一款适用于物理机部署 Kubernetes 的负载均衡插件。 主要特点:

    1. ECMP 路由负载均衡
    2. BGP 动态路由
    3. VIP 管理
    4. 分配 Kubernetes 服务中的 LoadBalancerIP (v0.3.0)
    5. 使用 Helm Chart 安装 (v0.3.0)
    6. 通过 CRD 动态配置BGP服务器 (v0.3.0)
    7. 通过 CRD 动态配置BGP对等 (v0.3.0)

    有关 OpenELB 的更多信息,请参见本文

通过邮件接收 KubeSphere 最新的技术博客与产品更新的通知


感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。