默认情况下,kubelet 使用 CFS 配额 来执行 pod 的 CPU 约束。当节点上运行了很多 CPU 密集的应用时,工作负载可能会迁移到不同的 CPU 核,工作负载的会受到 CPU 缓存亲和性以及调度延迟的影响。当使用大规格实例类型时,节点的 CPU 数量较多,现有的 Java,Golang 等应用在多 CPU 共享的场景,性能会出现明显下降。所有对于大规格实例,需要对CPU管理策略进行配置,利用 CPU set 进行资源分配。 ( Y. i1 U U$ G, ?此外一个重要的考虑因素就是 NUMA 支持。在 NUMA 开启的物理机实例或者大规格实例上,如果处理不当,内存访问吞吐可能会比优化方式降低了30%。Topology 管理器可以开启 NUMA 感知 kubernetes.io/docs/tasks/… 。但是目前 k8s 对 NUMA 的支持比较简单,还无法充分发挥 NUMA 的性能。: @; ~* ~9 c) N y( O
选择后者典型的场景是:1 y" D. l9 r! @( Y; E! H
开发、测试环境使用不同的集群;
不同的部门使用不同的集群进行隔离;
不同的应用使用不同的集群;
不同版本的 k8s 集群。+ }) Q# @9 N; m6 y8 h% W: K5 a
采用以多个小集群的主要原因在于爆炸半径比较小,可以有效提升系统的可用性。同时通过集群也可以比较好地进行资源隔离。管理、运维复杂性的增加是采用多个小集群的一个不足之处。0 I6 ~* ^4 M+ P% ?4 N6 F
值得一提的是源自 Google Borg 的理念,Kubernetes 的愿景是成为 Data Center Operating System,而且 Kubernetes 也提供了 RBAC、namespace 等管理能力,支持多用户共享一个集群,并实现资源限制。 但是这些更多是 “软多租” 能力,不能实现不同租户之间的强隔离。在多租户最佳实践中,我们可以有如下的一些建议:6 Q% J+ i) H; }& |! I2 q0 A) e
4.3、其它这个过程中其实还有许许多多的技术细节可以拿来展开说,但是鉴于文章篇幅有限就不在本文一一列举了,有机会的话可以另开一篇详细阐述。: s+ u% \8 x* O. j0 } 五、运行效果展示1、基础服务平台(IaaS云)1.1、登录认证这里我们对默认的首页定制成了阿里云首页的风格:" Q, q5 P: o# @, C6 ?" U. u3 g% F
- x1 q4 b8 v& }) v( c m1.1、高效管理物理资源(计算、网络、存储)可视化UI的方式一键创建云主机:3 D+ S8 U F: p" v, C' p$ K
7 m/ F' E" i* X A7 @. Y
支持简单编辑云网络: ; D- ~1 \* b5 N) G7 Y/ ?* ^5 o' E1 a/ T( U9 S+ u+ R2 Y+ k
很容易的挂载云硬盘:1 z0 p) Z: [1 B5 n( W
, q1 b- p& a- s z) p7 L1.2、轻松管理系统镜像定制的操作系统可以轻松上传: 7 [. C# u' I, l3 D7 q5 K8 w5 l* X: E ?. t8 d/ I: S/ r8 Q 1.3、web桌面支持 web VNC 访问桌面:! E' {) T4 `& `. N# ?% N
+ x5 y& k3 }9 g$ D g& A2 _1.4、集群管理 Web UI傻瓜式的创建 k8s 集群,并支持集群扩展:- ?/ ?6 J. W7 D" l: r& H
& H8 N$ A! m# j$ i e5 j$ ^; y 2、基础服务平台(PaaS云)2.1、DevOps流水线基于 Kubernetes 的容器编排和管理能力,整合 DevOps 工具链、微服务和应用框架,来帮助研发团队实现敏捷化的应用交付和自动化的运营管理: 0 d- z5 Z' c2 W! y$ e1 ~1 z* E) i, ~( o: a 2.2、负载均衡集成 Ingress 授权入站连接到达集群服务的规则集合,提供七层负载均衡能力,配置提供外部可访问的 URL、负载均衡、SSL、基于名称的虚拟主机等。作为集群流量接入层,提供高可靠性: : k' P; h$ M+ N# z) B. ~ 9 B7 ^# N0 r; L2.3、代码仓库基于 Git 的项目管理平台。提供网页版和客户端版接口,提供给用户空间存储 git 仓储,保存用户的一些数据文档或者代码等数据。一个开源的分布式版本控制系统,用于处理项目中的版本迭代问题: & F2 k% }' R1 E, p( f3 f ! i8 O; s( X) `& b8 D+ H8 v; D6 |. Q" J2.4、敏捷研发管理实现缺陷和问题跟踪;提供高效方式规划、可视化和管理研发工作,同时为 Scrum 和 Kanban 流程提供支持;支持多个可共享的仪表板;支持任务时间管理: # g- a8 A1 z( [5 j0 q * o/ O$ h E" g& r2.5、调用链监控提供微服务分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案: 0 N8 R7 W$ K3 W b, F. O4 }9 C& O+ Q 2.6、服务注册提供了一组简单易用的特性集,快速实现动态服务发现和服务监控检查。 : b) T7 n9 {1 f% ] ! R) W3 a1 r ~5 U2 S' Z2.7、服务监控SpringBoot 服务应用可以通过 Actuator 来暴露应用运行过程中的各项指标,Spring Boot Admin 通过这些指标来监控 SpringBoot 应用,通过图形化界面呈现出来: " ? {, }: z" H& ] 7 O8 g. m, Q+ V$ J2.8、日志聚合ELK 即 Elasticsearch、Logstash、Kibana,组合起来搭建日志聚合系统:) X. ` N- V; l2 n% G+ E
+ ~0 |9 d& D/ \/ F# S% t) ]2.9、API文档微服务聚合 Swagger 文档,支持在线接口调试:3 k5 H ~2 c% E