关于资源管理器:Kubernetes资源编排系列之三-Kustomize篇

作者 艄公(杨京华) 雪尧(郭耀星) 这是咱们的《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.yamlapp/base/kustomization.yaml申明资源及要利用于它们的一些自定义,如增加一个通用的标签,其内容如下。kustomization 还提供了namePrefix、commonAnnoations、images 等配置项。 commonLabels: name: appresources:- 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:- ../../basecommonLabels: env: stagingnamePrefix: staging-patches: - target: kind: Deployment name: app patch: | [ {"op":"replace","path":"/spec/replicas","value":1} ]app/overlays/production/kustomization.yaml中能够为生产环境定义不同的名称前辍、标签,通过patch的计划将正本数设置为2 ...

August 2, 2022 · 2 min · jiezi

关于存储:做好数据库运维资源管理技术必须要掌握

摘要:通过引入资源监控和管制等伎俩,实现资源在可控的状况下被正当利用的目标,避免出现资源的无序应用,避免数据库系统性能变慢、进行响应。本文分享自华为云社区《GaussDB(DWS) 资源管理技术浅析》,原文作者:门前一棵葡萄树 。 1 资源管理是什么?1.1 资源管理简介通过引入资源监控和管制等伎俩,实现资源在可控的状况下被正当利用的目标,避免出现资源的无序应用,避免数据库系统性能变慢、进行响应。资源管理能够实现以下性能: 通过创立和治理队列,实现队列级别资源(CPU、内存、存储空间)隔离和作业的异样解决;通过设置CN和队列的并发下限,限度容许运行的并发数,超出并发数后作业排队期待唤醒,避免并发过多导致性能降落;通过优先级管制实现资源的无效调度,实现高优先级作业优先运行;反对多维度资源监控视图,能够监控作业、用户和实例的资源耗费。1.2 资源管理性能 资源管理次要蕴含并发管制、资源管控、资源监控以及异样作业处理。并发管制次要分为全局并发管制和资源池并发管制,其中资源池并发管控由快慢车道实现,快车道管控简略作业,慢车道管控简单作业,反对自动识别和手动切换快慢车道,实践上快车道并发大、作业运行工夫短、占用资源少;慢车道并发少、作业运行工夫长,占用资源多。 资源管控通过对计算资源和存储资源别离管控实现作业间资源隔离,保障单作业异样不会影响到其余作业运行。上面别离对计算资源和存储资源管控进行概述: (1)计算资源计算资源蕴含:CPU、IO和内存。GaussDB中CPU和内存资源关联在队列上,用户通过关联队列应用计算资源。队列按应用场景分为超户队列、默认队列和用户队列。其中超户队列不受资源管控,用于运维和故障修复;默认队列(default_pool)为数据库初始化阶段创立的队列,未关联用户队列的用户应用默认队列;用户队列为用户本人创立的队列,依照用户配置的并发和资源进行管控。IO管控基于逻辑IO实现,依据作业运行工夫及优先级对IO进行管控,配置异样解决规定后,在零碎IO达到瓶颈后,被动升高作业IO优先级。 (2)存储资源存储资源管控蕴含以下几个方面: 数据库只读检测数据库只读检测次要为防止出现磁盘满的问题,实现逻辑如下:cm_server开启enable_transaction_read_only状况下,每十分钟查看一次磁盘空间占用率,当 磁盘空间占用率超过阈值(默认90%)时,就通过guc参数设置数据库只读,数据库只读后只容许只读作业运行,作业产生写盘操作报错退出。然而因为数据库只读会导致用户所有业务无奈运行,因而在磁盘空间占用率达到80%时会提前告警提醒用户。 用户/schema空间管控存储资源蕴含:长久表空间、长期表空间和算子落盘空间。长期表空间和算子落盘空间是作业运行过程中占用的空间,属于长期占用空间。长久表空间和长期占 用空间采纳两种不同的管控策略,长久表空间管控通过对用户(队列)和schema空间限度实现,8.1.1版本之后的GaussDB空间管控均为单实例空间,防止出现数据歪斜导致的磁盘应用问题。长期占用空间同样反对在用户层级设置空间限额,另外还提供异样规定查杀长期空间占用异样的作业。 异样解决规定GaussDB目前反对算子落盘异样规定,用户通过管控面或gs_cgroup工具设置算子落盘异样规定,设置异样规定后作业执行过程中算子落盘空间达到阈值后报错退出。 1.3 资源管理框架 用户连贯数据库执行SQL后,SQL会通过全局并发队列管控以及资源池队列管控。在作业进入管控逻辑前设置定时器,作业pending超时报错退出,作业通过队列管控开始运行前从新设置定时器,作业运行超时报错退出。作业下推DN执行时实时监控作业耗费的资源并上报CN,CN依据DN上报资源信息提供异样解决和监控视图。 上面对并发、内存和CPU管控配置形式进行简要阐明: (1)全局并发队列全局并发队列采纳GUC参数max_active_statements管制单个CN上运行并发执行的作业数量。采纳全局并发队列机制将管制所有普通用户的执行作业,不辨别复杂度,即执行语句都将作为一个执行单元,当并发执行的作业数量达到此参数阈值时,将进入队列期待。对于初始用户(Oid=10)执行的作业,不走全局并发管制逻辑。 注:max_active_statements限度单CN上运行的作业数,默认值为60,假如用户有3个DN,则理论全局并发下限为3*60=180; DDL和DML语句均受max_active_statements并发管制。 (2)资源池并发队列资源池并发队列蕴含快车道并发队列和慢车道并发队列,配置形式如下: CREATE RESOURCE POOL respool_a WITH (max_dop=10,active_statements=5); 其中max_dop为快车道并发下限,active_statements为慢车道并发下限。 注:资源池队列只限度DML语句,不限度DDL语句; max_dop限度单CN上资源池快车道并发数; active_statements在动态负载管理模式下限度单CN上资源池慢车道并发数,在动静负载管理模式下限度所有CN上资源池慢车道并发数之 (3)内存管控实例级别内存管控:guc参数max_process_memory限度DN和CN实例的最大可用内存,当应用内存超过max_process_memory时,作业报错退出; 可动静申请内存:max_dynamic_memory=max_process_memory-cstore_buffers(max_cstore_memory)-(udf_memory_limit - 200M) - max_shared_memory; 资源池内存管控:应用并发点数计算可执行的并发数量,active_statements<=0状况下资源池内存不受控。资源池总点数:total_points = active_statements 100,作业应用点数:active_points = (estimate_mem/respool_mem) active_statements * 100,estimate_mem为优化器估算的作业内存,资源池点数耗尽登程排队。 (4)CPU管控GaussDB次要利用cgroups做cpu资源的管控,波及cpu、cpuacct、cpuset子系统,cpu配额管控基于cpu子系统的cpu.shares实现,该配置办法的益处是:OS cpu没有占满的状况下,不触发cpu管控;cpu限额管控基于cpuset实现;cpuacct子系统次要用于cpu资源应用的监控。 应用gs_cgroup工具设置cpu限额和配额,gs_cgroup工具常用命令如下: root用户挂载cgroupgs_cgroup -U user -d #删除以后挂载信息 gs_cgroup -U user -c -H homepath [-D mountpath] --upgrade 创立Class控制组gs_cgroup -S class1 -s 40 -c ...

March 22, 2021 · 1 min · jiezi