注意:以下文档只适用于TOP接口,请谨慎使用!
容器集群水位的充裕,可以保证大促期间碰到需要紧急情况可以快速扩容应用。
平台要求,封网前,容器集群水位需要低于70%(不包含测试集群)。
容器集群CPU内存总请求量(所有应用请求量总和)小于70%;
容器集群CPU内存总使用量(所有应用使用量综合)小于70%;
平台会大促前开始周期性扫描,并且对不符合标准的集群发出扩容通知。
附:集群扩容操作手册:点击查看。
配置集群(ECS节点)维度的告警,及时发现节点异常。主要是集群ECS节点、集群系统应用或组件上的事件。比如docker hung、OOM、节点不可调度、节点NTP不可用、集群组件如coredns异常等。
告警示例:
[聚石塔事件告警] 类型:Node 原因:Memory cgroup out of memory: Kill process 21417 (java) score 2012 or sacrifice childKilled process 21316 (java), UID 0, total-vm:2786708kB, anon-rss:253788kB, file-rss:13156kB, shmem-rss:0kB 告警项:K8s通用Warn警示事件 名称:cn-zhangjiakou.192.168.49.240 主机:cn-zhangjiakou.192.168.49.240 集群:杭羽正式集群(c6ef2e43dce0e40119b6ede12c784e8d4) 告警时间:2020-06-15 19:50:11 用户:杭羽测试账号33 推荐方案:https://www.yuque.com/fczggw/wu7u0k/yrsmk6#08qwG
操作手册:点击查看。
容器的DNS与普通ECS的DNS方式不同,容器集群内有部署专门的DNS服务(即coredns组件),集群内的DNS解析全部需要经过该DNS服务。因此可以把容器集群内的DNS服务理解为一个独立部署的DNS服务器,会有性能瓶颈问题。
部分集群CoreDNS组件过低,有稳定性风险;请收到平台相关升级通知的集群及时升级CoreDNS版本。
操作手册说明:点击查看。
① 有大量DNS请求的场景;
② 程序内没有DNS缓存或者语言不支持连接池特性;
① 请求阿里云中间件,比如RDS,Memcache,Redis。这些中间件服务的地址都需要经过一次DNS解析才能得到真实IP;
② 请求TOP API网关;
根据经验,如果并发请求DNS服务大于5000-8000qps的时候,需要关注性能这个问题。
比如,PHP语言没有很好的连接池特性以及DNS缓存,所以当PHP的程序有高并发访问RDS的时候,每一次RDS的增删改查都会直接请求一次DNS服务。异常现象例如:php应用访问redis RedisException: Connection closed;例如java程序中报unknown host等等。
解决方案:安装和使用localdns 点击查看。
当容器集群中的ECS节点磁盘使用率达到85%之后,会触发自动的容器镜像回收策略,以便于释放足够的宿主机磁盘。该事件发生于当触发镜像回收策略之后,磁盘空间仍然不足以达到健康阈值(默认为80%)。通常该错误是由于宿主机磁盘被占用太多导致。当磁盘空间占用率持续增长(超过90%),会导致该节点上的所有容器被驱逐,也就是当前节点由于磁盘压力不再对外提供服务,直到磁盘空间释放。
宿主机的容器被驱逐是非常严重的事件,可能会由于部分容器驱逐或者驱逐后没有剩余资源调度而导致线上应用异常甚至雪崩。
1)宿主机磁盘需要将使用率保持在75%以下。
2)针对核心应用关联的集群,聚石塔平台会在双11前对集群内ECS磁盘使用率做周期性扫描,磁盘状态不健康的ECS节点(使用率高于75%),会收到相应的告警通知。
3)建议为集群内的ECS节点配置磁盘使用率告警。