用户工具

站点工具


02-工程实践:kubernetes:issue:负载高问题

部分节点负载高

request 过大(5cpu,虚拟机为8cpu),导致部分虚拟机报负载高

考虑

  • 减少request,设置默认HPA,cpu-percent 60%时开始扩展,max=300%,min=30%,cmdb中提供HPA对象,类似ingress,更新HPA不会触发重部
  • router节点、master节点保护方法,daemonset未设置resource时节点剩余资源是怎样的?
  • evict 策略,能否实现负载高时驱逐部分pod?(文档中似乎只有针对内存和磁盘空间的eviction
  • rolling update策略,防止大流量业务 突然大比例扩容 使用默认25%的策略同时创建很多个新POD,导致redis建连突增影响性能
  • 虚拟机可能存在超售,%steal很高,考虑将大流量业务通过nodeaffinity优先部署在物理机,将小流量业务(cpu request < 0.5)优先部署至虚拟机。并且尽量少用虚拟机(考虑到8核虚拟机成本为24核物理机的1/7,cpu可分配核数 7×8=56,是24的2倍多,因此将cpu request小,流量小的业务部署至虚拟机是可以获得更高利用率,降低成本的。应保持一定比例的虚拟机)。https://github.com/annProg/itop-extensions/issues/69

更新策略

当Deployment启用hostNetwork并且绑定了机器时,更新会提示端口占用。DaemonSet启用hostNetwork时更新没有问题。可中断的Deployment可以考虑更新策略用recreate(目前puppet有此需求)

rolling update策略下,maxsurge设置为0, maxunavailable设置为1,对于puppet这样只有1个实例的业务,应该能实现类似recreate的功能。考虑统一通过rolling update来管理更新策略(cmdb中只提供设置maxSurge和maxUnavailable的表单,不提供策略选择表单)

CMDB支持设置更新策略,滚动更新时,大流量业务需要自定义策略,最好指定数字,maxunavailable为1, maxsurge也为1,即新pod一个个的起。

02-工程实践/kubernetes/issue/负载高问题.txt · 最后更改: 2020/04/07 06:34 由 annhe