Skip to content

KubeSphere 面试高频问题汇总

「KubeSphere 和原生 K8s 有什么区别?」——这道题的回答,决定了你对平台理解的深度。

KubeSphere 是基于 Kubernetes 的企业级容器平台,面试中既会考察 K8s 基础,也会考察 KubeSphere 的特有能力。本篇汇总高频面试题,帮你系统梳理答题思路。

核心概念类

Q1:KubeSphere 是什么?和 Kubernetes 的关系是什么?

参考回答

KubeSphere 是一款面向云原生应用的容器平台,基于 Kubernetes 构建,在 K8s 之上提供了多租户、DevOps、微服务治理、可观测性等企业级功能。

┌─────────────────────────────────────────────────────────────────┐
│                    KubeSphere 架构分层                            │
│                                                                  │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │                    KubeSphere 控制台(Web UI)              │  │
│  │                    多租户、DevOps、监控、日志、应用商店       │  │
│  └─────────────────────────────────────────────────────────────┘  │
│                                │                                      │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │                    KubeSphere 核心服务                      │  │
│  │  ks-apiserver / ks-console / sentinel / redis / Jenkins   │  │
│  └─────────────────────────────────────────────────────────────┘  │
│                                │                                      │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │                    Kubernetes(基础设施层)                    │  │
│  │  kube-apiserver / etcd / kubelet / kube-proxy / CNI         │  │
│  └─────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘

追问:KubeSphere 和 Rancher/OpenShift 有什么区别?

三者都是企业级 K8s 平台,区别在于:

维度KubeSphereRancherOpenShift
基础K8s 原生K8s 原生定制版 K8s(OKD)
多租户Workspace 层级项目层级项目层级
DevOps内置 Jenkins需集成内置 Jenkins
微服务基于 Istio需集成Service Mesh(可选)
国产化完全国产商业版Red Hat 商业版
学习曲线中等较低较高

Q2:KubeSphere 的多租户体系是怎样的?

参考回答

KubeSphere 采用四层多租户架构,从大到小依次是:

企业空间(Workspace)
├── 项目(Project)= K8s Namespace
│   ├── 工作负载(Deployment/StatefulSet/DaemonSet)
│   ├── 服务(Service/Ingress)
│   ├── 存储卷(PVC)
│   └── 角色绑定(RoleBinding)
└── 角色(Role/ClusterRole)

→ 企业空间之上还有平台级(Platform)

权限传递

  • 平台管理员:管理所有企业空间和集群
  • 集群管理员:管理集群内所有资源,但不能跨集群
  • 企业空间管理员:管理企业空间内的所有项目
  • 项目管理员:管理单个项目内的资源
  • 项目观察者:只读权限

追问:多租户隔离是如何实现的?

三个层面的隔离:

  1. 网络隔离:通过 NetworkPolicy 控制不同项目间的网络通信
  2. 资源隔离:通过 ResourceQuota 限制每个项目的资源使用上限
  3. 身份隔离:通过 Workspace、Namespace、ServiceAccount 实现身份和权限分离

Q3:KubeSphere 的核心组件有哪些?

参考回答

KubeSphere 核心组件分为三层:

控制平面:
- ks-apiserver:统一 API 网关,所有请求的入口
- ks-console:Web 控制台前端
- ks-controller-manager:各业务的控制器

业务组件:
- Jenkins:DevOps 流水线的 CI 引擎
- Sentinel:限流熔断(微服务治理)
- Redis:缓存和会话存储
- Elasticsearch:日志存储后端
- Fluent Bit:日志收集代理
- Istio:Service Mesh 控制面

辅助组件:
- OpenPitrix:应用商店引擎
- alerting:告警引擎
- notification:通知服务(邮件/钉钉/Slack)

DevOps 相关

Q4:KubeSphere 流水线(Pipeline)和原生 Jenkinsfile 有什么区别?

参考回答

KubeSphere 的流水线基于 Jenkins,但做了大量封装和增强:

维度原生 JenkinsfileKubeSphere 流水线
编辑方式纯文本 Jenkinsfile图形化 + Jenkinsfile 两种
凭证管理Jenkins 凭证管理平台级统一凭证(加密存储)
K8s 集成需安装插件原生支持 S2I(Source to Image)
多集群需配置支持多集群选择
权限控制Jenkins 角色平台 RBAC 角色绑定

追问:S2I(Source to Image)是什么?

S2I 是 KubeSphere 内置的源代码构建能力,自动将源码打包成镜像:

源码(Git)→ S2I Builder → 镜像构建 → 推送到镜像仓库

工作流程:

  1. 开发者提交代码到 Git 仓库
  2. 流水线触发 S2I 任务
  3. S2I 使用预置的 Builder 镜像,拉取源码
  4. 在 Builder 镜像中编译、打包
  5. 将产物复制到 Runtime 镜像
  6. 推送到 Harbor 镜像仓库
  7. 自动部署到 K8s

Q5:KubeSphere 的 GitOps 工作流是怎么实现的?

参考回答

KubeSphere 通过 ArgoCD 集成实现 GitOps:

代码提交(Git)

触发 CI 流水线 → 构建镜像 → 推送镜像

更新 Kubernetes YAML(Helm Chart 或 Kustomize)

ArgoCD 监听 Git 仓库变化 → 自动同步到 K8s 集群

核心优势:

  • 声明式:只描述目标状态,不关心如何实现
  • 自动化:Git 更新自动触发同步,无需人工干预
  • 可审计:所有变更都经过 Git PR 审查

微服务治理

Q6:KubeSphere 的服务网格是怎么工作的?

参考回答

KubeSphere 的服务网格基于 Istio,通过 Sidecar 模式注入数据面代理:

┌─────────────────────────────────────────────────────────────────┐
│                    KubeSphere 服务网格架构                          │
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │                    Istio 控制面(Control Plane)            │   │
│  │  Pilot:配置下发    Citadel:证书管理    Galley:配置验证    │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                │                                      │
│  ┌─────────────────────────────┴──────────────────────────────┐   │
│  │                    Envoy Sidecar(数据面)                     │   │
│  │                                                              │   │
│  │  ┌──────────────────┐     ┌──────────────────┐            │   │
│  │  │   Service A Pod  │────▶│   Service B Pod  │            │   │
│  │  │  ┌────────────┐  │     │  ┌────────────┐  │            │   │
│  │  │  │  App       │  │◀───▶│  │  App       │  │            │   │
│  │  │  └────────────┘  │     │  └────────────┘  │            │   │
│  │  │  ┌────────────┐  │     │  ┌────────────┐  │            │   │
│  │  │  │   Envoy    │  │     │  │   Envoy    │  │            │   │
│  │  │  │  Sidecar   │  │     │  │  Sidecar   │  │            │   │
│  │  │  └────────────┘  │     │  └────────────┘  │            │   │
│  │  └──────────────────┘     └──────────────────┘            │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘

Envoy Sidecar 负责:

  • 流量管理:灰度发布、金丝雀分流
  • 可观测性:自动采集指标、日志、链路追踪
  • 安全:mTLS 双向TLS认证
  • 限流熔断:Sentinel 集成

追问:和金丝雀发布有什么关系?

KubeSphere 的灰度发布基于服务网格实现:

  1. VirtualService 定义流量规则(如 20% 流量到新版本)
  2. DestinationRule 定义服务子集(v1/v2 版本标签)
  3. Envoy Sidecar 自动按比例分流
  4. 观察稳定后,切换 100% 到新版本
  5. 清理旧版本 Pod

可观测性

Q7:KubeSphere 的日志收集架构是怎样的?

参考回答

┌─────────────────────────────────────────────────────────────────┐
│                    KubeSphere 日志收集架构                          │
│                                                                  │
│  业务容器日志                                                    │
│  (stdout / 路径挂载)                                           │
│        │                                                          │
│        ▼                                                          │
│  ┌──────────────────┐                                            │
│  │  Fluent Bit      │  ← 部署在每个节点(DaemonSet)              │
│  │  日志收集代理     │                                            │
│  └────────┬─────────┘                                            │
│           │                                                        │
│           ▼                                                        │
│  ┌──────────────────┐                                            │
│  │  Elasticsearch   │  ← 日志存储与检索                          │
│  │  日志存储后端     │                                            │
│  └────────┬─────────┘                                            │
│           │                                                        │
│           ▼                                                        │
│  ┌──────────────────┐                                            │
│  │  KubeSphere UI   │  ← 日志查询与展示                          │
│  └─────────────────────────────────────────────────────────────────┘

关键点:

  • Fluent Bit 以 DaemonSet 部署,保证每个节点都有日志收集代理
  • 支持多租户日志隔离,不同项目的日志存储在不同的 Index 中
  • 支持正则和 JSON 两种日志格式解析
  • 日志保留时间可在 StorageClass 中配置

Q8:KubeSphere 的监控体系是怎么工作的?

参考回答

KubeSphere 的监控基于 kube-prometheus-stack,包含:

┌─────────────────────────────────────────────────────────────────┐
│                    KubeSphere 监控架构                              │
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │                    Prometheus(指标收集)                     │   │
│  │  ┌────────────────────────────────────────────────────┐  │   │
│  │  │  kube-state-metrics:K8s 对象状态指标                │  │   │
│  │  │  node-exporter:节点级硬件/系统指标                   │  │   │
│  │  │  metrics-server:资源使用指标                        │  │   │
│  │  │  自定义指标:业务暴露的 Prometheus Metrics           │  │   │
│  │  └────────────────────────────────────────────────────┘  │   │
│  └────────────────────────────┬──────────────────────────────┘   │
│                               │                                      │
│                               ▼                                      │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │                    AlertManager(告警管理)                   │   │
│  │  │  邮件 │ 钉钉 │ Slack │ Webhook                        │   │
│  └──────────────────────────────────────────────────────────┘   │
│                               │                                      │
│                               ▼                                      │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │                    Grafana(可视化仪表盘)                    │   │
│  │  内置:K8s 监控、应用监控、自定义监控                          │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘

多租户监控的实现:

  • MetricsServer:提供多租户级的资源使用聚合数据
  • 自定义监控:用户可为自己的项目定义监控面板
  • 告警规则:支持按项目设置不同的告警阈值

安装与运维

Q9:KubeSphere 怎么安装?All-in-One 和多节点有什么区别?

参考回答

All-in-One 模式

  • 适用场景:开发测试、个人学习
  • 一条命令完成所有组件安装
  • 所有组件运行在同一节点上
bash
# 使用 KubeKey 安装
kubectl apply -f https://github.com/kubesphere/kubekey/releases/latest/download/kubekey自签证书集群.yaml
# 实际上是一个模拟的简单安装流程,不推荐用于生产

多节点模式

  • 适用场景:生产环境
  • 支持高可用:至少 3 个 Master 节点
  • 支持不同角色节点:Master / Worker / etcd 分离

生产环境推荐架构

┌─────────────────────────────────────────────────────────────────┐
│                    KubeSphere 生产部署架构                         │
│                                                                  │
│  Master 节点 × 3(高可用)                                        │
│  ├── kube-apiserver(负载均衡)                                │
│  ├── etcd × 3(奇数节点保证一致性)                              │
│  ├── kube-scheduler                                            │
│  └── kube-controller-manager                                    │
│                                                                  │
│  Worker 节点 × N(按需扩容)                                      │
│  ├── 业务 Pod                                                   │
│  ├── Fluent Bit(日志收集)                                      │
│  └── metrics-server                                             │
│                                                                  │
│  存储节点 × N(如使用 Ceph/Longhorn)                            │
│                                                                  │
│  外部负载均衡器                                                   │
│  └── 指向 Master 节点的 kube-apiserver                          │
└─────────────────────────────────────────────────────────────────┘

Q10:KubeSphere 升级时要注意什么?

参考回答

  1. 升级顺序:先升级 Kubernetes,再升级 KubeSphere
  2. 版本兼容性:确认 K8s 版本在 KubeSphere 支持范围内
  3. 数据备份:备份 etcd、数据库(MySQL/PostgreSQL)
  4. 业务中断:滚动升级,业务不中断
  5. 回滚计划:保留上一版本镜像,以便回滚
bash
# 查看当前版本
kubectl logs -n kubesphere-system \
  $(kubectl get pods -n kubesphere-system -l app=ks-apiserver -o jsonpath='{.items[0].metadata.name}') \
  | grep -i version

# 升级前检查
kubectl kubesphere upgrade --with-kubernetes v1.25.0 --with-kubesphere v4.3.0

综合分析题

Q11:如果你来设计一个多租户 DevOps 平台,你会怎么用 KubeSphere?

参考回答

整体架构

平台层(Platform Admin)
├── 纳管多个 Kubernetes 集群
├── 管理所有企业空间
└── 定义全局安全策略

企业空间层(Workspace Admin)
├── 管理多个项目(项目 = K8s Namespace)
├── 配置共享存储和网络
└── 分配项目配额

项目层(Project Admin/Developer)
├── 使用 DevOps 流水线
├── 部署微服务应用
├── 配置监控告警
└── 查看日志和链路追踪

关键设计点

  1. 命名空间隔离:每个业务线分配独立的企业空间,资源配额独立
  2. 镜像仓库隔离:每个企业空间使用独立的 Harbor 项目
  3. 凭证统一管理:平台级凭证库,不同项目按需授权
  4. 流水线模板:为不同语言/框架预置流水线模板,减少配置成本
  5. 多集群分发:一个流水线构建的镜像,自动同步到多集群部署

追问:如果不用 KubeSphere,怎么实现类似能力?

KubeSphere 能力替代方案
多租户K8s Namespace + RBAC + ResourceQuota
DevOpsJenkins + Kubernetes Plugin
日志收集Fluentd + Elasticsearch + Kibana
监控告警kube-prometheus-stack + AlertManager
服务网格手动安装 Istio
应用商店Helm + ChartMuseum

"KubeSphere 的价值在于『一站式』——把所有这些组件整合在一起,开箱即用。代价是灵活性降低。选型时要看团队是否有能力自行维护这些组件。"

基于 VitePress 构建