目录
[1.Kustomization 在 Kubernetes 中的作用。](#1.Kustomization 在 Kubernetes 中的作用。)
[2.什么是 CRD,它对 K8s 有什么重要意义?](#2.什么是 CRD,它对 K8s 有什么重要意义?)
[CRD 的核心概念](#CRD 的核心概念)
[CRD 的重要意义](#CRD 的重要意义)
[3. CRD 的典型应用场景有哪些,举例说明。](#3. CRD 的典型应用场景有哪些,举例说明。)
[4.结合教材,解释 CRD 的完整创建和使用过程。](#4.结合教材,解释 CRD 的完整创建和使用过程。)
[5.Gateway API 有哪几个核心组件,分别有哪些作用?](#5.Gateway API 有哪几个核心组件,分别有哪些作用?)
在 Kubernetes 的日常运维和应用管理中,我们不仅需要管理 Pod、Deployment 等基础资源,还需要面对多环境配置管理、扩展自定义资源以及流量管理等高级需求。本文将介绍三个关键技术:Kustomize、CRD(自定义资源定义)以及 Gateway API,帮助你更好地掌握 Kubernetes 的高级能力。
1.Kustomization 在 Kubernetes 中的作用。
在多环境部署中(开发、测试、生产),应用的 YAML 配置文件往往大部分相似,但又有少量差异。传统的模板管理方式容易复杂且难以维护,而 Kustomize 提供了一种无模板(template-free)的 YAML 配置管理方案。
Kustomize 采用 Base + Overlay 模式:
-
Base(基础)
定义通用的 YAML 配置,如 Deployment.yaml、Service.yaml,在所有环境中共享。
-
Overlay(覆盖)
针对特定环境,只定义与 Base 不同的部分,即补丁(Patch)。例如:
-
增加副本数量(replicas)
-
修改镜像标签(image tag)
-
添加特定标签或注解(labels/annotations)
-
修改 ConfigMap 配置数据
-
-
kustomization.yaml
这是 Kustomize 的核心配置文件,它定义了 Base 的位置以及需要应用的 Overlay 补丁。
运行命令:
bash
kubectl apply -k <目录>
Kustomize 会动态合并 Base 和 Overlay,生成最终 YAML 并应用到集群中。
Kustomize 提供了一种轻量级、高效、官方推荐的多环境配置管理方式,让 Kubernetes YAML 文件的维护更清晰、更安全。
2.什么是 CRD,它对 K8s 有什么重要意义?
Kubernetes 不仅能管理 Pod、Deployment,还能通过 CRD(自定义资源定义) 扩展 API,创建属于用户自己的全新资源类型。
CRD 的核心概念
-
CRD:定义新资源的名称、结构和验证规则,是资源模板。
-
CR(Custom Resource):根据 CRD 创建的实例,类似 Pod、Deployment 的自定义资源。
CRD 的重要意义
-
极强可扩展性
将 Kubernetes 从容器编排平台扩展为通用控制平台,可管理数据库、消息队列、监控等系统。
-
声明式 API
使用 YAML 文件声明管理自定义应用,保持 Kubernetes 的统一操作方式。
-
催生 Operator 模式
Operator 是基于 CRD 的自定义控制器,它会监听 CR 的状态,并自动执行操作,确保系统实际状态与期望状态一致。
-
丰富生态系统
复杂的云原生项目(如 Istio、Argo CD)基于 CRD 构建,将自身功能无缝集成到 Kubernetes。
3. CRD 的典型应用场景有哪些,举例说明。
-
数据库管理(MySQL、Redis 等)
-
自定义应用部署(Application CRD)
-
监控告警(Prometheus 的 ServiceMonitor、AlertRule)
-
网络策略管理
-
定时备份任务管理
-
CI/CD 流水线管理
4.结合教材,解释CRD的完整创建和使用过程。
-
定义 CRD:创建 CRD YAML,定义资源结构和验证规则
-
部署 CRD :
kubectl apply -f my-crd.yaml -
创建 Controller:实现自定义控制器监听 CR 事件
-
部署 Controller:以 Pod 形式运行控制器
-
使用 CR:创建自定义资源实例,实现业务逻辑
CRD 让 Kubernetes 拥有无限扩展能力,是 Operator 模式和现代云原生生态的基石。
5.Gateway API 有哪几个核心组件,分别有哪些作用?
Gateway API 引入了角色分离的设计,让不同团队安全独立管理流量。
核心组件
-
GatewayClass(网关类)
定义可用负载均衡器类型及控制器(如 Nginx、Istio),是集群级别全局资源。
-
Gateway(网关)
根据 GatewayClass 创建的实际流量入口,配置监听端口、协议、TLS 证书,并控制允许哪些命名空间的应用附加。
-
Route(路由)
定义流量路由规则,将 Gateway 接收的请求根据主机名、路径、请求头等转发到具体服务(Service)。
分离职责示例
-
集群管理员:提供 GatewayClass(如 Nginx 网关模板)
-
运维团队:创建 Gateway(如生产环境监听 443 端口)
-
应用开发者 :创建 HTTPRoute(如 api.myapp.com/v1 的流量路由到 v1-service)
Gateway API 将模板(GatewayClass)、实例(Gateway)和规则(Route)分离,使流量管理更安全、灵活、可扩展,是 Ingress 的升级方案。
总结
Kubernetes 的高级能力不仅体现在容器调度,还体现在以下几个方面:
-
Kustomize:简化多环境配置管理
-
CRD:扩展 Kubernetes API,实现自定义资源和 Operator 模式
-
Gateway API:提供安全、灵活的现代流量管理方案