Kubernetes-治理容器化运行程序-经常使用 (kubernetes与docker的关系)
引见
Kube-downscaler是一款开源工具,准许用户定义Kubees中pod资源智能缩减的时期。这有助于经过增加非高峰时段的资源经常使用量来降落基础设备老本。
在本文中,咱们将详细引见kube-downscaler的性能、装置和性能,以及它的用例和未来前景。
kube-downscaler的特点
Kube-downscaler是一款基于调度的弱小工具,用于在Kubernetes集群中对运行程序启动更新或升级。在本节中,咱们将讨论该工具的一些关键性能:
与Kubernetes性能或工具的兼容性
Kube-downscaler还支持水平Pod智能缩放(HPA),并可以与HPA联合经常使用,以确保为运行程序保养所需的正本数量。这使得kube-downscaler能够为Kubernetes中的运行程序裁减提供额外的灵敏性和细粒度的控制。
Karpenter和kube-downscaler是两个可以联合经常使用的工具,可认为Kubernetes集群提供完整且弱小的资源治理处置方案。经过联合经常使用Karpenter和kube-downscaler,Kubernetes集群可以从水温和垂直裁减中受益。Downscaler准许增加Pod数量,而Karpenter经过将Pod整合到更少或不同类型的机器过去优化节点应用率。
依据定义的时期段智能裁减部署正本
Kube-downscaler可以依据预约义的时期段智能裁减部署正本。这象征着咱们可以设置一个方案,在一天、一周或一个月的特定时期参与或增加正本数量。
比如,假设咱们知道运行程序在一天中的某些时段遇到高流量,则可以将kube-downscaler性能为在这些时段智能裁减正本,而后在流量增加时增加正本。
这可以准许在预期峰值负载的状况下启动裁减,而不是期待峰值负载出现并由HPA处置。这可以协助优化资源经常使用并确保您的运行程序一直可用且照应迅速。
然而Kube-downscaler关键用于增加正本并优化集群的老本,咱们通经常常使用HPA来治理裁减。
kube-downscaler的装置和性能
kubernetes集群上kube-downscaler装置说明
从克隆kube-downscaler存储库:
进入kube-downscaler目录:
cdkube-downscaler
编辑deploy/kube-downscaler.yaml文件以依据您的详细需求自定义性能。例如,可以调整时区、方案和缩放规定。
将性能运行到您的Kubernetes集群:
kubectlly-fdeploy/
此命令将部署kube-downscaler控制器并创立kube-downscaler部署。
可以经过审核kube-downscaler部署的日志来验证kube-downscaler控制器能否正在运转:
kubectllogs-fdeployment/kube-downscaler
装置成功后,须要启动一下性能。
依据详细用户需求性能kube-downscaler
Kube-downscaler经过在Kubernetes部署对象上经常使用注释来提供裁减方案的定制。
部署对象中的downTimePeriod注释可用于指定不应裁减部署的停机时期段。
minReplicas注释可用于设置部署的最小正本数。
这些字段与kube-downscaler注释联合经常使用,准许您依据特定的业务需求和资源应用形式创立自定义的裁减方案。
经过调整这些字段,可以性能kube-downscaler以优化运行程序可用性和老本效率的形式裁减部署。
以下是经常使用kube-downscaler启动部署的便捷性能。
apiVersion:apps/v1kind:Deploymentmetadata:name:random-deploymentannotations:#Kube-downscalerdownscaler/downtimePeriod:"Mon-Fri00:00-07:00Europe/Berlin"downscaler/minReplicas:1spec:replicas:2selector:matchLabels:app:randomtemplate:metadata:labels:app:randomspec:contners:-name:random-containerimage:random-image
经过此性能,从周一到周五午夜到早上7点(在欧洲/柏林时期线上),正本数量将增加到1个。
kube-downscaler将依据定义的方案智能开局缩减pod。
目前咱们曾经在Kubernetes集群上装置并运转了kube-downscaler。
算法
Kube-downscaler假设满足以下一切条件,将缩减部署的正本:
Minimumreplicas最小正本数
自动状况下,部署将缩减为零正本。这可以经过部署或其命名空间的注释启动性能,downscaler/downtime-replicas也可以经过CLI经常使用--downtime-replicas。
Ex:downscaler/downtime-replicas:"1"。
Specificworkload特定上班负载
在反常的状况下HorizontalPodAutoscalers,该字段不能设置为零,因此downscaler/downtime-replicas至少1应设置为。关于CronJobs,它们的形态将依照咱们的预期启动定义suspend:true。
留意点
请留意,自动的宽限期为15分钟实用于新的部署,即
INFO:ScalingdownDeploymentdefault/nginxfrom1to0replicas(uptime:Mon-Fri09:00-17:00America/Buenos_Aires,downtime:never)
请留意,假设HorizontalPodAutoscaler(HPA)与部署一同经常使用,请思考以下事项:
若要经常使用在HPA上--downtime-replicas=1启用downscaler,请确保将以下注释参与到部署和HPA。
$kubectlannotatedeploynginx'downscaler/exclude=true'$kubectlannotatehpanginx'downscaler/downtime-replicas=1'$kubectlannotatehpanginx'downscaler/uptime=Mon-Fri09:00-17:00America/Buenos_Aires'
详细性能
Uptime/downtimespec
downscaler经过命令行参数、环境变量或Kubernetes注释启动性能。
时期定义(例如DEFAULT_UPTIME)接受以逗号分隔的规范列表,例如,以下性能将增加非上班时期的一切部署:
DEFAULT_UPTIME="Mon-Fri07:30-20:30Europe/Berlin"
仅在周末和周五20:00后增加:
DEFAULT_DOWNTIME="Sat-Sun00:00-24:00CET,Fri-Fri20:00-24:00CET'
每个时期规范可以驳回以下两种格局之一:
基于periods的替代逻辑
您可以选用更新或缩减的时期段,而不是严厉的反常运转时期或停机时期。时期定义是相反的。在这种状况下,加大或增加只出当初时期段,其他时期将被疏忽。
假设性能了更新或缩减周期,将疏忽反常运转时期和停机时期。这象征着某些选项是互斥的,例如,您可以经常使用或--default-downtime,但不能同时经常使用--downscale-period两者。
此定义将在19:00到20:00之间缩减群集。假设手动更新集群,则在第二天19:00-20:00之前不会缩减集群。
DOWNSCALE_PERIOD="Mon-Sun19:00-20:00Europe/Berlin"
命令行选项
可用的命令行选项:
NamespaceDefaults命名空间自动值
DEFAULT_UPTIME、DEFAULT_DOWNTIME和FORCE_UPTIME扫除也可以经常使用命名空间注释启动性能。在性能的状况下,这些值将取代其他全局自动值。
![治理容器化运行程序](https://tyye.cn/zb_users/theme/tpure/style/images/lazyload.png)
apiVersion:v1kind:Namespacemetadata:name:foolabels:name:fooannotations:downscaler/uptime:Mon-Sun07:30-18:00CET
命名空间级别支持以下批注:
经常使用案例
该工具的关键用例是经过优化Kubernetes集群资源的应用率来降落老本。不过,它也可以用来预热集群,防止适度依赖HPA。
虽然这不是其关键目的,但这种组合提供了一种替代处置方案,可确保运行程序的高可用性,同时最大限制地降落基础设备老本。
降落老本
kube-downscaler的另一个用例是防止高峰经常使用时期的服务终止。经过定义在高需求时期裁减资源的方案,kube-downscaler可以协助预先裁减部署并防止HPA提前,以确保运行程序即使在高峰经常使用时期也坚持可用和照应。
服务终止预防
kube-downscaler的另一个用例是防止高峰经常使用时期的服务终止。经过定义在高需求时期裁减资源的方案,kube-downscaler可以协助预先裁减部署并防止HPA提前,以确保运行程序即使在高峰经常使用时期也坚持可用和照应。
倡导
基于预约义方案的裁减,这或许并不适宜一切用例。此外,它不支持智能缩放,这象征着用户必定手动调整缩放方案以满足一直变动的需求。
另一种可供思考的处置方案是Keda。Keda是一个开源名目,为Kubernetes运行程序提供灵活智能伸缩性能。经常使用Keda,用户可以依据各种目的(例如队列长度、CPU经常使用率或自定义目的)设置自定义裁减规定。
这准许对资源经常使用启动更精细的控制,并确保运行程序一直能够正确裁减以满足需求。
此外,Keda兼容宽泛的Kubernetes运行程序,包括有形态和有形态运行程序,并支持多种事情源,例如AzureEventHubs、Kafka和RabbitMQ。
论断
Kube-downscaler是治理Kubernetes集群中资源经常使用状况的弱小工具。经过定义裁减方案,用户可以优化集群中的资源经常使用并降落老本,同时确保运行程序即使在高峰经常使用时期也坚持可用和照应。
虽然kube-downscaler是治理Kubernetes集群中资源经常使用状况的一个有价值的工具,但它或许有一些限制。假设须要对资源裁减启动更精细的控制或须要智能裁减性能,那么或许值得思考像Keda这样的替代处置方案。
k8是什么?
是Kubernetes的简称。
Kubernetes是一个可移植的,可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。它拥有一个庞大且快速增长的生态系统(growing ecosystem)。Kubernetes的服务,支持和工具被广泛使用。
Kubernetes消除了部署和扩展容器化应用程序涉及的许多手动过程。例如,开发人员可以将运行Linux容器的主机组集群在一起,而Kubernetes可以帮助您轻松高效地管理这些集群。这些集群可以跨越公共云,私有云或混合云中的主机。因此,Kubernetes是托管需要快速扩展的云原生应用程序的理想平台,比如通过Apache Kafka进行实时数据流传输。
Kubernetes最初是由Google的工程师开发和设计的。谷歌(Google)是Linux容器技术的早期贡献者之一,并公开谈论了如何将谷歌所有的服务在容器中运行(这是Google的云服务背后的技术)。
Google每周产生超过20亿个容器部署,所有部署均由内部平台Borg提供支持。Borg是Kubernetes的前身,多年来开发Borg的经验教训成为大多数Kubernetes技术背后的支持。
用于管理容器化应用和服务常用的平台是
用于管理容器化应用和服务常用的平台是Kubernetes与OpenShift。
1、Kubernetes
kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
2、OpenShift
OpenShift是红帽的云开发平台即服务(PaaS)。自由和开放源码的云计算平台使开发人员能够创建、测试和运行他们的应用程序,并且可以把它们部署到云中。OpenShift广泛支持多种编程语言和框架,另外它还提供了多种集成开发工具如Eclipse integration,JBoss Developer Studio和Jenkins等。OpenShift基于一个开源生态系统为移动应用,数据库服务等,提供支持。
Kubernetes与OpenShift的产品特点
1、Kubernetes
可移植:支持公有云,私有云,混合云,多重云(multi-cloud)。
可扩展:模块化,插件化,可挂载,可组合。
自动化:自动部署,自动重启,自动复制,自动伸缩/扩展。
2、OpenShift
采用图形化方式:易用的Web管理界面,在Docker易用性的基础上,再一次降低了使用容器技术部署容器应用的难度。
支持多种调度器:通过环境模板,很容易地创建和部署Cattle、Swarm、K8S、Mesos容器集群管理调度平台。
管理主机集群:管理对象是多台主机的集群,而不仅仅是单台容器主机,创建和管理几台、几十台应用服务器集群,只需要Ctrl+C、Ctrl+V,复制粘贴就解决了。
内置应用商店:使用其中的WordPress模板,创建一个WordPress博客系统,只需点点鼠标,部署难度不高于申请一个免费的电子邮箱!
资源弹性分配:内置应用负载均衡器,“服务”最小只需1个容器实例,当负载不够/或过剩时,只需点点鼠标,增加/减少“服务”中容器的实例数,即可解决问题,应用系统具有天生的弹性扩容能力。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。