k8s custome develop

Kubernetes 二次开发项目介绍

概述

Kubernetes 作为云原生操作系统的核心,提供了强大的容器编排能力。基于 Kubernetes 的二次开发项目极大地扩展了其功能边界,覆盖了从平台管理、边缘计算、虚拟化、AI训练到多集群管理等各个领域。


一、容器管理平台类

1. KubeSphere(青云)

GitHub: https://github.com/kubesphere/kubesphere

项目简介
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,提供全栈的 IT 运维自动化,目标是解决 Kubernetes 本身存在的存储、网络、安全和易用性等痛点。

核心特性

  • 🎯 全栈容器平台:提供 DevOps、微服务治理、可观测性等完整能力
  • 🔧 运维友好:提供可视化控制台,降低 K8s 使用门槛
  • 📦 应用商店:内置应用模板,一键部署常用应用
  • 🔐 多租户管理:企业级多租户、权限控制
  • 🔄 DevOps 集成:内置 Jenkins、CI/CD 流水线

架构特点

1
2
3
4
5
6
7
8
9
10
┌─────────────────────────────────────────────────────────┐
│ KubeSphere Console │
├─────────────────────────────────────────────────────────┤
│ DevOps │ 微服务治理 │ 可观测性 │ 应用商店 │
├─────────────────────────────────────────────────────────┤
│ KubeSphere Core │
│ KS-API │ KS-Controller │ KS-Apiserver │
├─────────────────────────────────────────────────────────┤
│ Kubernetes │
└─────────────────────────────────────────────────────────┘

适用场景

  • 企业级容器平台建设
  • DevOps 平台搭建
  • 微服务架构落地

2. K3s(Rancher/SUSE)

GitHub: https://github.com/k3s-io/k3s

项目简介
K3s 是轻量级 Kubernetes 发行版,专为边缘计算、IoT 设备和 CI/CD 环境设计。二进制文件小于 100MB,内存占用极低。

核心特性

  • 🪶 极致轻量:单二进制文件 <100MB,内存占用 <512MB
  • 📦 内置组件:集成 SQLite、Traefik Ingress、负载均衡器
  • 🔧 单文件配置:简化配置管理
  • 快速启动:启动时间 <30 秒
  • 🔄 自动更新:支持自动升级

架构特点

1
2
3
4
5
6
7
8
┌─────────────────────────────────────────────────────────┐
│ K3s Server │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Embedded: SQLite + Traefik + LoadBalancer │ │
│ └─────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────┤
│ K3s Agent (可选) │
└─────────────────────────────────────────────────────────┘

适用场景

  • 边缘计算、IoT 设备
  • 嵌入式系统
  • CI/CD 流水线
  • 开发测试环境
  • ARM 设备

3. Rancher(SUSE)

GitHub: https://github.com/rancher/rancher

项目简介
Rancher 是企业级 Kubernetes 管理平台,提供多集群管理、统一认证、应用目录等能力,支持管理任何 Kubernetes 发行版。

核心特性

  • 🌐 多集群管理:统一管理多个 K8s 集群
  • 🔐 统一认证:集成 LDAP、AD、OAuth 等
  • 📦 应用目录:内置 Helm 应用市场
  • 👥 RBAC:企业级权限管理
  • 🔄 集群模板:标准化集群配置

适用场景

  • 多集群统一管理
  • 混合云/多云管理
  • 企业级容器平台

二、多集群管理类

4. Karmada(华为)

GitHub: https://github.com/karmada-io/karmada

项目简介
Karmada(Kubernetes Armada)是华为开源的多集群多云容器编排平台,实现跨集群的应用部署、资源调度和故障迁移。

核心特性

  • 🌐 多集群编排:统一管理多个 K8s 集群
  • 🔄 跨集群调度:支持多种调度策略
  • 🛡️ 故障迁移:自动将工作负载迁移到健康集群
  • 📋 策略引擎:灵活的部署策略(副本分布、亲和性等)
  • 🔧 API 兼容:完全兼容 K8s 原生 API

架构特点

1
2
3
4
5
6
7
8
9
10
11
┌─────────────────────────────────────────────────────────┐
│ Karmada Control Plane │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ API Server │ │ Scheduler │ │ Controller │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Resource Detector │ │
│ └─────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────┤
│ Member Cluster 1 │ Member Cluster 2 │ ... │
└─────────────────────────────────────────────────────────┘

适用场景

  • 多云/混合云部署
  • 跨区域容灾
  • 大规模集群管理

5. OCM(Open Cluster Management)

GitHub: https://github.com/open-cluster-management-io/ocm

项目简介
OCM 是红帽开源的多集群管理框架,提供集群注册、应用分发、策略治理等能力。

核心特性

  • 📋 集群注册:自动发现和注册集群
  • 🔄 应用分发:跨集群部署应用
  • 🛡️ 策略治理:统一安全合规策略
  • 📊 可观测性:多集群监控

三、边缘计算类

6. KubeEdge(华为)

GitHub: https://github.com/kubeedge/kubeedge

项目简介
KubeEdge 是华为开源的边缘计算平台,将 Kubernetes 能力扩展到边缘节点,支持离线运行和边缘设备管理。

核心特性

  • 🌐 云边协同:云端管理、边缘执行
  • 📴 离线运行:边缘节点断网时可独立运行
  • 🔌 设备管理:MQTT 协议设备接入
  • 🪶 轻量边缘:EdgeCore 资源占用极低
  • 🔄 消息通道:可靠云边消息同步

架构特点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
┌─────────────────────────────────────────────────────────┐
│ 云端 │
│ ┌─────────────┐ ┌─────────────────────────────────┐ │
│ │ Kubernetes │ │ CloudHub (消息路由) │ │
│ └─────────────┘ └─────────────────────────────────┘ │
├─────────────────────────────────────────────────────────┤
│ 云边消息通道 │
│ WebSocket/MQTT │
├─────────────────────────────────────────────────────────┤
│ 边缘端 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ EdgeCore │ │ EdgeHub │ │ DeviceMgmt │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────┘

适用场景

  • 工业物联网(IIoT)
  • 智慧城市
  • 车联网
  • 边缘 AI 推理

7. OpenYurt(阿里巴巴)

GitHub: https://github.com/openyurtio/openyurt

项目简介
OpenYurt 是阿里云开源的边缘计算平台,强调”无侵入”式边缘化,让原生 K8s 集群一键变身为边缘计算平台。

核心特性

  • 🔄 无缝转换:原生 K8s 一键变边缘集群
  • 📴 自治能力:边缘节点断网时继续运行
  • 🔌 设备接入:支持 IoT 设备管理
  • 🛡️ 安全通信:云边加密通道

四、虚拟化类

8. KubeVirt(Red Hat)

GitHub: https://github.com/kubevirt/kubevirt

项目简介
KubeVirt 将虚拟机管理功能引入 Kubernetes,让 K8s 可以像管理容器一样管理虚拟机,实现容器与虚拟机的统一编排。

核心特性

  • 🖥️ 虚拟机管理:在 K8s 中运行 KVM 虚拟机
  • 🔄 统一编排:容器与虚拟机混合部署
  • 📦 VM as Code:虚拟机定义即代码
  • 🔗 存储集成:支持 PVC 作为虚拟机磁盘
  • 🌐 网络支持:支持 Multus 多网络

架构特点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌─────────────────────────────────────────────────────────┐
│ Kubernetes Cluster │
│ ┌─────────────────────────────────────────────────┐ │
│ │ KubeVirt │ │
│ │ ┌─────────────┐ ┌─────────────────────────┐ │ │
│ │ │ virt-api │ │ virt-controller │ │ │
│ │ └─────────────┘ └─────────────────────────┘ │ │
│ │ ┌─────────────────────────────────────────┐ │ │
│ │ │ virt-handler (每个节点) │ │ │
│ │ └─────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Pod │ │ VM (Pod) │ ← 虚拟机在Pod中运行 │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────┘

适用场景

  • 传统应用容器化迁移
  • 虚拟机与容器混合部署
  • 私有云建设
  • 数据库等有状态应用

五、AI/高性能计算类

9. Volcano(华为)

GitHub: https://github.com/volcano-sh/volcano

项目简介
Volcano 是基于 Kubernetes 的高性能计算任务调度系统,专为 AI、机器学习、大数据等场景优化。

核心特性

  • 🎯 批调度:Gang Scheduling(成组调度)
  • 🔢 队列管理:多租户资源配额
  • 📊 优先级调度:抢占和优先级
  • 🔄 任务依赖:DAG 工作流
  • 📈 性能优化:GPU 亲和性、NUMA 感知

架构特点

1
2
3
4
5
6
7
8
9
10
11
┌─────────────────────────────────────────────────────────┐
│ Volcano Scheduler │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Actions: Enqueue | Allocate | Backfill │ │
│ └─────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Plugins: Gang | Priority | Queue | Predicates │ │
│ └─────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────┤
│ Kubernetes Scheduler │
└─────────────────────────────────────────────────────────┘

适用场景

  • AI/ML 训练任务
  • HPC 高性能计算
  • 大数据处理
  • 科学计算

10. Kubeflow

GitHub: https://github.com/kubeflow/kubeflow

项目简介
Kubeflow 是 Google 开源的机器学习工具包,在 Kubernetes 上提供端到端的 ML 平台。

核心特性

  • 📓 Jupyter Notebook:交互式开发环境
  • 🔄 Pipeline:ML 工作流编排
  • 🎯 训练:分布式训练支持
  • 📊 模型服务:模型部署和推理
  • 🔧 超参调优:Katib 自动调参

六、GitOps 类

11. ArgoCD

GitHub: https://github.com/argoproj/argo-cd

项目简介
ArgoCD 是 Kubernetes 原生的持续交付工具,基于 GitOps 原则实现声明式部署。

核心特性

  • 📂 Git 作为单一真实来源:配置版本化
  • 🔄 自动同步:Git 变更自动部署
  • 🛡️ 漂移检测:检测集群状态与 Git 配置差异
  • 👀 可视化界面:应用拓扑和状态
  • 🔐 SSO 集成:企业认证支持

架构特点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌─────────────────────────────────────────────────────────┐
│ Git Repository │
│ (应用配置清单) │
└─────────────────────────┬───────────────────────────────┘


┌─────────────────────────────────────────────────────────┐
│ ArgoCD │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ API Server │ │ Repo Server │ │ Application │ │
│ │ │ │ │ │ Controller │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────┬───────────────────────────────┘


┌─────────────────────────────────────────────────────────┐
│ Kubernetes Cluster │
└─────────────────────────────────────────────────────────┘

12. FluxCD

GitHub: https://github.com/fluxcd/flux2

项目简介
FluxCD 是 CNCF 毕业项目,提供 GitOps 持续交付能力,是 ArgoCD 的主要竞争者。

核心特性

  • 📂 GitOps 自动化
  • 🔄 多仓库支持
  • 🔔 Webhook 触发
  • 🔐 密钥管理:Mozilla SOPS 集成
  • 📦 Helm 支持

七、可观测性类

13. Prometheus Operator

GitHub: https://github.com/prometheus-operator/prometheus-operator

项目简介
Prometheus Operator 简化了 Prometheus 在 Kubernetes 上的部署和管理,通过 CRD 实现声明式配置。

核心 CRD

  • Prometheus:定义 Prometheus 实例
  • Alertmanager:定义告警管理器
  • ServiceMonitor:定义服务监控目标
  • PodMonitor:定义 Pod 监控目标
  • PrometheusRule:定义告警规则

14. Thanos

GitHub: https://github.com/thanos-io/thanos

项目简介
Thanos 为 Prometheus 提供无限存储容量、全局查询视图和高可用能力。

核心特性

  • 📦 长期存储:支持对象存储
  • 🌐 全局查询:多集群聚合查询
  • 🔄 数据压缩:降低存储成本
  • 🛡️ 高可用:多副本查询

八、安全类

15. Cert-Manager

GitHub: https://github.com/cert-manager/cert-manager

项目简介
Cert-Manager 是 Kubernetes 的证书管理控制器,自动颁发、续期 TLS 证书。

核心特性

  • 🔐 自动证书管理:Let’s Encrypt 集成
  • 🔄 自动续期:证书到期自动更新
  • 📋 多 Issuer 支持:ACME、CA、Vault 等
  • 🛡️ DNS 验证:支持多种 DNS 提供商

16. OPA Gatekeeper

GitHub: https://github.com/open-policy-agent/gatekeeper

项目简介
Gatekeeper 是 OPA(Open Policy Agent)在 Kubernetes 上的准入控制器,实现策略即代码。

核心特性

  • 🛡️ 准入控制:Pod/Deployment 策略验证
  • 📋 策略即代码:Rego 语言定义策略
  • 🔧 审计:检测违规资源
  • 📊 可观测性:策略执行指标

九、网络类

17. Cilium

GitHub: https://github.com/cilium/cilium

项目简介
Cilium 是基于 eBPF 的高性能网络、安全和可观测性解决方案。

核心特性

  • eBPF 高性能:内核级网络处理
  • 🔐 L3-L7 网络策略:支持 HTTP/gRPC 规则
  • 📊 可观测性:Hubble 网络可视化
  • 🔄 Service Mesh:无 Sidecar 服务网格
  • 🛡️ 透明加密:WireGuard/IPsec

18. Istio

GitHub: https://github.com/istio/istio

项目简介
Istio 是最流行的 Service Mesh 实现,提供服务间通信、安全和可观测性。

核心特性

  • 🔄 流量管理:灰度发布、故障注入
  • 🔐 安全:mTLS 加密、认证授权
  • 📊 可观测性:指标、日志、追踪
  • 🔧 Envoy Sidecar:代理数据平面

十、存储类

19. Rook

GitHub: https://github.com/rook/rook

项目简介
Rook 是云原生存储编排器,将分布式存储系统(如 Ceph)以云原生方式部署到 K8s。

核心特性

  • 💾 Ceph 集成:块存储、对象存储、文件系统
  • 🔄 自动运维:自动扩缩容、故障恢复
  • 📦 CRD 管理:声明式存储配置
  • 🔐 加密支持:存储加密

20. Longhorn

GitHub: https://github.com/longhorn/longhorn

项目简介
Longhorn 是 Rancher 开源的云原生分布式块存储解决方案。

核心特性

  • 💾 分布式块存储:副本冗余
  • 🔄 快照/备份:支持 S3 存储
  • 📊 UI 管理:可视化存储管理
  • 🔧 轻量部署:易于安装维护

项目对比总结

类别 项目名称 核心能力 开发者 适用场景
容器平台 KubeSphere 全栈容器平台 青云 企业级平台
K3s 轻量级 K8s Rancher/SUSE 边缘、IoT
Rancher 多集群管理 SUSE 企业多集群
多集群 Karmada 多集群编排 华为 多云/混合云
OCM 集群注册管理 Red Hat 多集群治理
边缘计算 KubeEdge 云边协同 华为 边缘 IoT
OpenYurt 无侵入边缘化 阿里云 边缘计算
虚拟化 KubeVirt VM on K8s Red Hat 虚机容器混合
AI/HPC Volcano 批任务调度 华为 AI 训练、HPC
Kubeflow ML 平台 Google 机器学习
GitOps ArgoCD GitOps CD CNCF 持续交付
FluxCD GitOps CD CNCF 持续交付
可观测 Prometheus Operator 监控管理 CNCF 监控告警
Thanos 长期存储 CNCF 多集群监控
安全 Cert-Manager 证书管理 CNCF TLS 自动化
Gatekeeper 策略治理 CNCF 准入控制
网络 Cilium eBPF 网络 CNCF 高性能网络
Istio Service Mesh CNCF 服务网格
存储 Rook 存储编排 CNCF 分布式存储
Longhorn 块存储 SUSE 云原生存储

二次开发技术栈

开发框架

框架 用途 GitHub
Kubebuilder 构建 Operator kubernetes-sigs/kubebuilder
Operator SDK Operator 开发 SDK operator-framework/operator-sdk
Controller Runtime 控制器运行时 kubernetes-sigs/controller-runtime
Kustomize 配置管理 kubernetes-sigs/kustomize
Helm 包管理 helm/helm

核心概念

1
2
3
4
5
6
7
8
9
10
11
12
13
┌─────────────────────────────────────────────────────────┐
│ CRD (Custom Resource Definition) │
│ 定义自定义资源类型(扩展 K8s API) │
├─────────────────────────────────────────────────────────┤
│ CR (Custom Resource) │
│ CRD 的实例 │
├─────────────────────────────────────────────────────────┤
│ Controller │
│ 监听资源变化,调和期望状态 │
├─────────────────────────────────────────────────────────┤
│ Webhook │
│ 准入控制、校验、默认值设置 │
└─────────────────────────────────────────────────────────┘

开发模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1. 声明式 API
- 用户提交期望状态(YAML)
- 系统持续调和到期望状态

2. 控制器模式
for {
实际状态 := 获取集群当前状态()
期望状态 := 获取CR定义的期望状态()
if 实际状态 != 期望状态 {
执行调和操作()
}
}

3. Operator = CRD + Controller
- 封装运维知识
- 自动化运维操作

学习资源

官方文档

推荐书籍

  • 《Kubernetes 编程》
  • 《Kubernetes Operator 开发指南》
  • 《云原生模式》

社区资源


总结

Kubernetes 二次开发生态系统极其丰富,覆盖了云原生应用的方方面面:

  1. 平台层:KubeSphere、K3s、Rancher 降低 K8s 使用门槛
  2. 边缘计算:KubeEdge、OpenYurt 将 K8s 能力延伸到边缘
  3. 多集群:Karmada 解决多云/混合云管理
  4. 虚拟化:KubeVirt 实现容器与虚拟机统一
  5. AI 场景:Volcano、Kubeflow 支撑 AI 工作负载
  6. GitOps:ArgoCD、FluxCD 实现声明式持续交付

二次开发的核心是 Operator 模式,通过 CRD 扩展 K8s API,通过 Controller 实现业务逻辑自动化。