Kubernetes 学习总结(19)—— Kubernetes 集群管理平台如何选择?Rancher vs KubeSphere

发布时间 2023-03-22 21:08:56作者: 张Sir6

Kubernetes 学习总结(19)—— Kubernetes 集群管理平台如何选择?Rancher vs KubeSphere

 前言

Kubernetes(K8s)集群管理平台都是基于 Kubernetes 提供功能,可以说他们是在 K8s 的基础上封装了一层更为友好的操作方式。他们都是为了降低 k8s 集群运维复杂度,降低运维成本,使开发者可以尽快上手、部署服务。目前主流的 Kubernetes 集群管理平台就是 Kubesphere 和 Rancher,它们都是基于 K8s 提供功能,但形态有很大不同,那么我们该如何在他们之间进行抉择呢?

Rancher

 介绍

Rancher 是一个开源的企业级容器管理平台。通过 Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher 提供了在生产环境中使用的管理 Docker 和Kubernetes 的全栈化容器部署与管理平台。自 Rancher 2.0 系列版本问世,以其简单务实的 UI 风格和成熟稳健的后端架构赢得了市场的普遍青睐。Kubernetes 本身架构和功能逐渐稳定,同时拥有丰富经验的 Kubernetes 技术人员也在不断增加,根据市场出现的这些新变化, Rancher 对此做出了诸多改变。

特点

Rancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),满足 IT 需求规范,赋能 DevOps 团队。

图形化方式

  • 易用的 Web 管理界面,在 Docker 易用性的基础上,再一次降低了使用容器技术部署容器应用的难度。

基础设施编排

  • Rancher 可以使用任何公有云或者私有云的 Linux 主机资源。Linux 主机可以是虚拟机,也可以是物理机。Rancher 仅需要主机有 CPU,内存,本地磁盘和网络资源。从 Rancher 的角度来说,一台云厂商提供的云主机和一台自己的物理机是一样的。
  • Rancher 为运行容器化的应用实现了一层灵活的基础设施服务。Rancher 的基础设施服务包括网络,存储,负载均衡,DNS 和安全模块。Rancher 的基础设施服务也是通过容器部署的,所以同样 Rancher 的基础设施服务可以运行在任何 Linux 主机上。

容器编排与调度

  • 很多用户都会选择使用容器编排调度框架来运行容器化应用。Rancher 包含了当前全部主流的编排调度引擎,例如 Docker Swarm, Kubernetes 和 Mesos。同一个用户可以创建 Swarm 或者 Kubernetes 集群。并且可以使用原生的 Swarm 或者 Kubernetes 工具管理应用。
  • 除了 Swarm,Kubernetes 和 Mesos 之外,Rancher 还支持自己的 Cattle 容器编排调度引擎。Cattle 被广泛用于编排 Rancher 自己的基础设施服务以及用于 Swarm 集群, Kubernetes 集群和 Mesos 集群的配置,管理与升级。

应用商店

  • Rancher 的用户可以在应用商店里一键部署由多个容器组成的应用。用户可以管理这个部署的应用,并且可以在这个应用有新的可用版本时进行自动化的升级。Rancher 提供了一个由 Rancher 社区维护的应用商店,其中包括了一系列的流行应用。Rancher 的用户也可以创建自己的私有应用商店。

企业级权限管理

  • Rancher 支持灵活的插件式的用户认证。支持 Active Directory,LDAP, Github 等 认证方式。 Rancher 支持在环境级别的基于角色的访问控制 (RBAC),可以通过角色来配置某个用户或者用户组对开发环境或者生产环境的访问权限。

流水线

  • 流水线 可以帮助开发者快速高效地上线新软件。Rancher 支持给每一个项目单独配置流水线。

Istio

  • Rancher 与 Istio 集成,管理员或集群所有者可以将 Istio 交给开发者,然后开发者使用 Istio 执行安全策略,排查问题,或为快速发布、灰度发布和 A/B 测试进行流量控制

查看集群信息

  • 日志: Rancher 可以跟多种主流日志工具集成,您可以设置 集群日志 或 项目日志。
  • 监控: 使用 Rancher,您可以通过 Prometheus 监控集群节点、Kubernetes 组件、软件部署的状态和进度。您可以设置 集群监控 或 项目监控。
  • 告警信息: 您需要随时知道集群和项目的计划和非计划事件,才可以提高公司的运行效率。您可以设置集群告警 或 项目告警。

授权和角色权限控制

  • 用户管理: Rancher API server 除了管理用户在公司内部使用的认证信息之外,还管理用户访问外部服务所需的认证信息,如登录活动目录或 GitHub 所需的账号密码。
  • 授权: Rancher API server 负责管理权限控制策略 和 安全策略。

 

 架构

Rancher Server 由认证代理(Authentication Proxy)、Rancher API Server、集群控制器(Cluster Controller)、etcd 节点和集群 Agent(Cluster Agent) 组成。除了集群 Agent 以外,其他组件都部署在 Rancher Server 中。考虑到性能表现和安全因素,我们建议您使用两个 Kubernetes 集群,分开部署 Rancher Server 和工作负载。部署 Rancher Server 后,可以创建或导入集群,然后在这些集群上运行您的工作负载。该图描绘了管理两个Kubernetes集群的Rancher server安装:一个由RKE创建,另一个由GKE创建。

 

 Rancher server 组件

组件

功能说明

Rancher API Server(API 服务器)

ancher API server建立在嵌入式Kubernetes API服务器和etcd数据库之上,功能如下:

1. Rancher API服务器Rancher API server管理与外部身份验证提供程序(如Active Directory或GitHub)对应的用户身份

2.认证授权Rancher API server管理访问控制和安全策略

3.项目项目是集群中的一组多个命名空间和访问控制策略的集合

4.节点Rancher API server跟踪所有集群中所有节点的标识。

Cluster Controller(集群控制器)

集群控制器实现Rancher安装所需的全局逻辑。它执行以下操作:

1. 为集群和项目配置访问控制策略

2. 通过调用以下方式配置集群:

。所需的Docker machine驱动程序

。像RKE和GKE这样的Kubernetes引擎

Cluster Agent(集群代理)

单独的集群代理实例实现相应集群所需的逻辑。它执行以下活动:

1. 工作负载管理,例如每个集群中的pod创建和部署

2. 绑定并应用每个集群全局策略中定义的角色

3. 集群与Rancher Server之间的通信:事件,统计信息,节点信息和运行状况

Auth Proxy(代理认证)

该认证代理转发所有Kubernetes API调用。它集成了身份验证服务,如本地身份验证,Active Directory和GitHub。在每个Kubernetes API调用中,身份验证代理会对调用方进行身份验证,并在将调用转发给Kubernetes主服务器之前设置正确的Kubernetes模拟标头。Rancher使用服务账户与Kubernetes集群通信。

KubeSphere

 

介绍

KubeSphere 是中国云计算服务商青云 QingCloud(以下简称“青云”)旗下推出的多租户、容器平台,是谷歌开源容器集群管理平台 K8S 的发行版,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大减轻开发、测试、运维的日常工作的复杂度,旨在解决 Kubernetes 本身存在的存储、网络、安全和易用性等痛点。除此之外,平台已经整合并优化了多个适用于容器场景的功能模块,以完整的解决方案帮助企业轻松应对敏捷开发与自动化运维、微服务治理、多租户管理、工作负载和集群管理、服务与网络管理、应用编排与管理、镜像仓库管理和存储管理等业务场景。

特点

KubeSphere 为企业用户提供高性能可伸缩的容器应用管理服务,旨在帮助企业完成新一代互联网技术驱动下的数字化转型,加速业务的快速迭代与交付,以满足企业日新月异的业务需求。

极简体验,向导式 UI

  • 面向开发、测试、运维友好的用户界面,向导式用户体验,降低 Kubernetes 学习成本的设计理念
  • 用户基于应用模板可以一键部署一个完整应用的所有服务,UI 提供全生命周期管理

业务高可靠与高可用

  • 自动弹性伸缩:部署 (Deployment) 支持根据访问量进行动态横向伸缩和容器资源的弹性扩容,保证集群和容器资源的高可用
  • 提供健康检查:支持为容器设置健康检查探针来检查容器的健康状态,确保业务的可靠性

容器化 DevOps 持续交付

  • 简单易用的 DevOps:基于 Jenkins 的可视化 CI/CD 流水线编辑,无需对 Jenkins 进行配置,同时内置丰富的 CI/CD 流水线模版
  • Source to Image (s2i):从已有的代码仓库中获取代码,并通过 s2i 自动构建镜像完成应用部署并自动推送至镜像仓库,无需编写 Dockerfile
  • 端到端的流水线设置:支持从仓库 (GitHub / SVN / Git)、代码编译、镜像制作、镜像安全、推送仓库、版本发布、到定时构建的端到端流水线设置
  • 安全管理:支持代码静态分析扫描以及对 DevOps 工程中对代码质量进行安全管理
  • 日志:日志完整记录 CI / CD 流水线运行全过程

开箱即用的微服务治理

  • 灵活的微服务框架:基于 Istio 微服务框架提供可视化的微服务治理功能,将 Kubernetes 的服务进行更细粒度的拆分,支持无侵入的微服务治理
  • 完善的治理功能:支持灰度发布、熔断、流量监测、流量管控、限流、链路追踪、智能路由等完善的微服务治理功能

灵活的持久化存储方案

  • 支持 GlusterFS、CephRBD、NFS 等开源存储方案,支持有状态存储
  • NeonSAN CSI 插件对接 QingStor NeonSAN,以更低时延、更加弹性、更高性能的存储,满足核心业务需求
  • QingCloud CSI 插件对接 QingCloud 云平台各种性能的块存储服务

灵活的网络方案支持

  • 支持 Calico、Flannel 等开源网络方案
  • 分别开发了 QingCloud 云平台负载均衡器插件 和适用于物理机部署 Kubernetes 的 负载均衡器插件 Porter
  • 商业验证的 SDN 能力:可通过 QingCloud CNI 插件对接 QingCloud SDN,获得更安全、更高性能的网络支持

多维度监控日志告警

  • KubeSphere 全监控运维功能可通过可视化界面操作,同时,开放标准接口对接企业运维系统,以统一运维入口实现集中化运维
  • 可视化秒级监控:秒级频率、双重维度、十六项指标立体化监控;提供服务组件监控,快速定位组件故障
  • 提供按节点、企业空间、项目等资源用量排行
  • 支持基于多租户、多维度的监控指标告警,目前告警策略支持集群节点级别和工作负载级别等两个层级
  • 提供多租户日志管理,在 KubeSphere 的日志查询系统中,不同的租户只能看到属于自己的日志信息

 

 架构

KubeSphere 采用了前后端分离的架构,实现了面向云原生的设计,后端的各个功能组件可通过 REST API 对接外部系统。KubeSphere 无底层的基础设施依赖,可以运行在任何 Kubernetes、私有云、公有云、VM 或物理环境(BM)之上。

 

 除了下面列表的组件,KubeSphere 还支持 Harbor 与 GitLab 作为可选安装项,可以根据项目需要进行安装

后端组件

功能说明

ks-account

提供用户、权限管理相关的 API

ks-apiserver

整个集群管理的 API 接口和集群内部各个模块之间通信的枢纽,以及集群安全控制

ks-apigateway

负责处理服务请求和处理 API 调用过程中的所有任务

ks-console

提供 KubeSphere 的控制台服务

ks-controller-manager

实现业务逻辑的,例如创建企业空间时,为其创建对应的权限;或创建服务策略时,生成对应的 Istio 配置等

Metrics-server

Kubernetes 的监控组件,从每个节点的 Kubelet 采集指标信息

Prometheus

提供集群、节点、工作负载、API 对象等相关监控数据与服务

Elasticsearch

提供集群的日志索引、查询、数据管理等服务,在安装时也可对接您已有的 ES 减少资源消耗

Fluent Bit

提供日志接收与转发,可将采集到的⽇志信息发送到 ElasticSearch、Kafka

Jenkins

提供 CI/CD 流水线服务

SonarQube

可选安装项,提供代码静态检查与质量分析

Source-to-Image

将源代码自动将编译并打包成 Docker 镜像,方便快速构建镜像

Istio

提供微服务治理与流量管控,如灰度发布、金丝雀发布、熔断、流量镜像等

Jaeger

收集 Sidecar 数据,提供分布式 Tracing 服务

OpenPitrix

提供应用模板、应用部署与管理的服务

Alert

提供集群、Workload、Pod、容器级别的自定义告警服务

Notification

通用的通知服务,目前支持邮件通知

redis

将 ks-console 与 ks-account 的数据存储在内存中的存储系统

MySQL

集群后端组件的数据库,监控、告警、DevOps、OpenPitrix 共用 MySQL 服务

PostgreSQL

SonarQube 和 Harbor 的后端数据库

OpenLDAP

负责集中存储和管理用户账号信息与对接外部的 LDAP

存储

内置 CSI 插件对接云平台存储服务,可选安装开源的 NFS/Ceph/Gluster 的客户端

网络

可选安装 Calico/Flannel 等开源的网络插件,支持对接云平台 SDN

总结

Rancher 的核心竞争力在于其强大的多集群管理能力,提供了极其简便的K8s部署及管理能力。同时提供了集成开源监控、日志、Git CI 的能力,虽然学习成本较高,但提供了一站式的解决方案,对运维更加友好。KubeSphere 定位是以应用为中心的容器平台,提供简单易用的操作界面,一定程度上降低了学习成本,同时集成了原生 istio 等功能,更加符合开发的使用习惯总的来说 Rancher 注重于对 K8s 的管理,Kubesphere 注重于对应用的管理。其实对于好多企业来讲 Kubesphere 里边的好多东西是用不到的,反而更为臃肿,而需要用的它却不支持,比如多集群管理,这可以说是 Kubesphere 最大的痛点,Kubesphere 倾向于打造云原生的生态圈,想要玩好云原生的,要多多关注 Kubesphere。

  • Rancher 侧重于对原生 k8s 集群的维护,但 k8s 周边生态没有 Kubesphere 整合的全面。
  • Rancher 相对来说较 Kubesphere 更为成熟稳定
  • Kubesphere 相对于刚上手的人来说,更为友好
  • Kubesphere 对 CICD 的东西都做了一些整合,Rancher 需要单独部署
  • 运维人员更青睐于 Rancher,开发人员更喜欢 Kubesphere
  • Kubesphere 将大量云原生相关组件整合进来,相对来说更符合云原生发展的理念
  • Rancher 支持多集群管理(两地三中心),Kubesphere 面向单集群
  • Rancher 能够整合多种基础设施(公有云/私有云),Kubesphere 结合自家青云体验更加