k8s pod生命周期、初始化容器、钩子函数、容器探测、重启策略(k8s和docker区别)
1023
2022-05-29
在考虑容器的弹性伸缩策略之前,第一步要对容器部署规格进行设计,通常最主要的参数为CPU和内存。
除了从应用自身的角度评估资源需求外,还需要考虑容器平台的资源调度规则对整体资源利用率的影响。在Kubernetes中每一种资源规格包含两个参数:request(最小)和limit(最大),前者是容器调度的依据,后者是运行时的最大资源使用限制。如果request值过大会导致调度到合适的节点上更困难,降低request值有助于提升容器在单个节点上部署的密度。limit值过大会导致容器资源占用过高,多个容器在一个节点上总的资源占用可能超出节点的总资源,将会导致容器运行不稳定,容易出现容器被频繁重启和迁移的现象。
接下来分析弹性伸缩的场景,从资源需求的角度,弹性伸缩可以分为两类场景:
l 整个集群资源充足,只在容器层面进行弹性伸缩;
l 弹性伸缩的幅度可能超过集群现有资源的总和,需要动态增加集群中的计算资源。
下面重点讨论第一类场景,第二类场景建采用事先规划和计划性扩容的方案解决。
自动弹性伸缩基于容器的监控指标与弹性伸缩规则实现,首先要选择合适的监控指标,使其最能够反映容器真实的负载情况。一类指标是系统内置的监控指标,包括CPU、内存、磁盘、网络的使用率和大小,另一类是业务自定义的监控指标。当系统内置指标不能很好的反映容器的真实负载情况时,采用业务自定义监控指标是更好的选择。
基于监控指标,可以设置弹性伸缩规则,根据触发类型不同,弹性伸缩规则主要包括以下几类:
l 定时触发:适合计划性的弹缩场景使用。
l 周期触发:适合业务负载呈周期性规律的场景使用。
l 告警触发:根据监控指标的阈值规则触发的弹性伸缩,通用性更强。
为了防止弹性伸缩规则出现冲突和不稳定,系统通过冷却时间和多周期采样来提升弹性伸缩策略的稳定性。
容器
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。