SREWorks云原生数智运维工程实践-Kubernetes资源编排之三:Kustomize篇(上)

简介: SREWorks云原生数智运维工程实践-

 

作者:艄公杨京华)、雪尧郭耀星

 

这是我们的《Kubernetes资源编排系列》的第三篇——Kustomize篇,在上篇《Kubernetes资源编排系列之二Helm篇》中,我们见识到了Helm强大的管理能力,但是Helm对于服务的定制仅限于预置变量,那么如果需要更多更灵活的YAML定制,有什么办法吗?于是本篇我们来介绍一下Kustomize。

 

一、 Kustomize是什么

 

Kustomize是一套采用合并思想,对Kubernetes原生配置进行管理的工具,使用无模板的方案定义应用配置。允许用户使用一系列的描述文件为基础,然后通过overlay的方式生成最终部署应用所需的描述文件。

 

Kustomize通过Base&Overlays方式维护不同环境的应用配置,在Overlay中描述差异来实现资源复用,管理的是Kubernetes原生YAML文件,不需要学习额外的DSL语法。

 

二、 Kustomize是怎么做的

 

Kustomize的文件结构如下:

 

 

app

├── base

│   ├── deployment.yaml

│   ├── service.yaml

│   └── kustomization.yaml

└── overlays

    ├── production

    │   └── kustomization.yaml

    ├── staging

    │   └── kustomization.yaml

    └── production-large

        └── kustomization.yam

 

 

app/base/kustomization.yaml声明资源及要应用于它们的一些自定义,如添加一个通用的标签,其内容如下。kustomization还提供了namePrefix、commonAnnoations、images等配置项。

 

 

commonLabels:

  name: app

resources:

- deployment.yaml

- service.yaml

 

 

可以通过kustomize build命令来看完整的配置,build出来的每个资源对象上都会存在通用的标签name:app。

 

 

kustomize build app/base  # 构建

kustomize build app/base | kubectl apply -f -  # 构建并部署

kubectl apply -k app/base # 1.14及更新的版本可以使用该命令直接部署

 

 

app/overlays/staging/kustomization.yaml中可以为演示环境定义不同的名称前辍、标签,通过patch的方案将副本数设置为1

 

 

bases:

- ../../base

commonLabels:

  env: staging

namePrefix: staging-

patches:

  - target:

      kind: Deployment

      name: app

    patch: |

      [

        {"op":"replace","path":"/spec/replicas","value":1}

      ]

 

 

app/overlays/production/kustomization.yaml中可以为生产环境定义不同的名称前辍、标签,通过patch的方案将副本数设置为2

 

 

bases:

- ../../base

commonLabels:

  env: production

namePrefix: production-

patches:

  - target:

      kind: Deployment

      name: app

    patch: |

      [

        {"op":"replace","path":"/spec/replicas","value":2}

      ]

 

 

app/overlays/production-large/kustomization.yaml中可以继承生产环境的定义,同时将副本数设置为10支撑大规模场景需求。

 

 

bases:

- ../production

patches:

  - target:

      kind: Deployment

      name: app

    patch: |

      [

        {"op":"replace","path":"/spec/replicas","value":10}

      ]

 

 

通过不同的部署路径,指定不同的环境部署

 

 

kustomize build app/overlays/production | kubectl apply -f -

kustomize build app/overlays/staging | kubectl apply -f -

kustomize build app/overlays/production-large | kubectl apply -f –

 

 

通过上面的例子我们可以看出,通过kustomization.yaml来声明继承和patch,可以为各种场景构造不同的YAML输出,同时保持底座YAML不变化。

 

 

 


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4天前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
167 3
|
19天前
|
Kubernetes 开发工具 Docker
微服务实践k8s与dapr开发部署实验(2)状态管理
微服务实践k8s与dapr开发部署实验(2)状态管理
49 3
微服务实践k8s与dapr开发部署实验(2)状态管理
|
20天前
|
存储 运维 监控
Kubernetes 集群监控与日志管理实践
【5月更文挑战第28天】在微服务架构日益普及的当下,容器编排工具如 Kubernetes 已成为运维工作的核心。有效的集群监控和日志管理是确保系统稳定性和服务可靠性的关键。本文将深入探讨 Kubernetes 集群的监控策略,以及如何利用现有的工具进行日志收集、存储和分析,以实现对集群健康状况的实时掌握和问题快速定位。
|
21天前
|
存储 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【5月更文挑战第27天】 在微服务架构日益普及的当下,容器化技术与编排工具如Kubernetes已成为现代云原生应用的基石。然而,随着集群规模的不断扩大和复杂性的增加,如何有效监控和管理这些动态变化的服务成为了维护系统稳定性的关键。本文将深入探讨Kubernetes环境下的监控策略和日志管理的最佳实践,旨在为运维人员提供一套系统的解决思路,确保应用性能的最优化和问题的快速定位。
|
18天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践深入理解PHP的命名空间与自动加载机制
【5月更文挑战第30天】 在容器化和微服务架构日益普及的背景下,Kubernetes 已成为众多企业的首选容器编排工具。然而,随之而来的挑战是集群的监控与日志管理。本文将深入探讨 Kubernetes 集群监控的最佳实践,包括节点资源使用情况、Pods 健康状态以及网络流量分析等关键指标的监控方法。同时,我们也将讨论日志聚合、存储和查询策略,以确保快速定位问题并优化系统性能。文中将介绍常用的开源工具如 Prometheus 和 Fluentd,并分享如何结合这些工具构建高效、可靠的监控和日志管理系统。
|
18天前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于Docker和Kubernetes的实践
【5月更文挑战第30天】 在当今的快速迭代和持续部署的软件发布环境中,自动化运维的重要性愈发凸显。本文旨在探讨如何利用容器化技术与微服务架构,特别是Docker和Kubernetes,来构建一个高效、可伸缩且自愈的自动化运维体系。通过详细分析容器化的优势及Kubernetes的集群管理机制,文章将提供一个清晰的指南,帮助读者理解并实现现代软件部署的最佳实践。
|
18天前
|
运维 Kubernetes 监控
Kubernetes 集群的持续性能优化实践
【5月更文挑战第30天】 在动态且日益复杂的云原生环境中,维持 Kubernetes 集群的高性能运行是一个持续的挑战。本文将探讨一系列针对性能监控、问题定位及优化措施的实践方法,旨在帮助运维专家确保其 Kubernetes 环境能够高效、稳定地服务于不断变化的业务需求。通过深入分析系统瓶颈,我们不仅提供即时的性能提升方案,同时给出长期维护的策略建议,确保集群性能的可持续性。
|
19天前
|
存储 Kubernetes 监控
Kubernetes 集群的持续性能优化实践
【5月更文挑战第29天】 在动态且复杂的微服务架构中,确保应用性能的稳定性与可预测性是一大挑战。本文将探讨一系列针对 Kubernetes 集群的持续性能优化策略,涵盖监控、资源管理、调度优化和网络效率等方面。通过分析真实案例并结合最新的运维实践,我们旨在提供一套系统化的性能调优框架,帮助运维工程师有效识别瓶颈,实施优化措施,并持续追踪改进效果,从而推动企业应用向更高效、稳定的方向发展。
|
19天前
|
运维 Kubernetes 监控
构建高效自动化运维体系:基于Docker和Kubernetes的实践指南
【5月更文挑战第29天】 在现代云计算环境中,自动化运维已成为提升服务效率、确保系统稳定性的关键因素。本文深入探讨了如何利用Docker容器化技术和Kubernetes集群管理工具来构建一个高效且灵活的自动化运维体系。通过分析具体实施步骤和策略,我们旨在为读者提供一个清晰的指导框架,以支持他们在不断变化的技术需求中快速部署和扩展应用程序。本指南不仅涉及技术的基础知识,还涵盖了持续集成/持续部署(CI/CD)流程的集成,以及监控和日志管理的优化实践。
|
19天前
|
运维 Prometheus 监控
Kubernetes 集群监控与日志管理实践
【5月更文挑战第29天】 在微服务架构日益盛行的今天,容器化技术已成为现代应用部署的标准。其中,Kubernetes 作为容器编排的事实标准,其集群的稳定性和性能监控变得至关重要。本文将深入探讨 Kubernetes 集群的监控策略和日志管理的最佳实践,旨在为运维工程师提供一套高效、可靠的集群监控解决方案。通过引入 Prometheus 和 Grafana 工具进行数据收集与可视化,以及 Fluentd 和 Elasticsearch 配合 Kibana 实现日志聚合与分析,本文将带领读者构建起一个全面的 Kubernetes 监控系统,确保系统的高可用性和故障快速响应。

热门文章

最新文章