Kubernetes 中应用实例数设置有固定实例数、HPA 和 CronHPA 三种策略。使用最多的是固定实例数,但是很多业务都存在波峰浪谷,如果采用固定实例数的方式会造成较大的资源浪费。Kubernetes 中提供了 HPA 及 CronHPA 两种机制实现按需扩容实例数量,减少资源浪费。CronHPA 是用户设定定时规则,在固定时间进行实例数伸缩。但是设定定时规则较为复杂,如果定时间隔设置较大就会造成资源浪费。HPA 可以根据应用实时负载设置实例数量,当应用负载高时扩容,当应用负载低时则缩容实例。HPA 是基于实时负载进行扩容,只有当负载已经比较高时才会触发扩容,但此时业务已经处在高负载中因此业务部分流量出现响应慢或者超时的问题,即存在“弹性滞后”的问题。为此,我们提出了一种智能化弹性伸缩方案 AHPA,可以根据历史时序数据进行主动预测,提前扩容,避免弹性滞后。同时,会根据实时数据动态调整主动预测结果,兼容周期变动等场景。
随着公司业务上云的呼声越来越高,越来越多的团队已经完成业务上云的进程,K8s 集群在公司整体机器成本中的比重越来越大。 本人所在平台的应用部署上云后,在资源管理方面出现了一系列的问题,这些问题或多或少都对成本优化或应用的服务质量造成了一定程度的影响。
随着IT架构从集中式架构发展到分布式微服务架构,大家在享受微服务带来的独立部署、水平扩展的好处的同时,也不得不面对开发运维更加复杂的现实。当前发展的方向是通过虚拟化基础设施来解决分布式架构问题,让业务开发人员只需要关注业务逻辑。Kubernetes为代表的容器编排框架是把大型软件系统运行所依赖的集群环境也进行了虚拟化,令集群得以实现跨数据中心的绿色部署,并能够根据实际情况自动扩缩,被认为是云原生时代的操作系统和基础设施,也是CNCF的第一个开源项目。
容器本质是一项隔离技术,很好的解决了他的前任 - 虚拟化未解决的问题:运行环境启动速度慢、资源利用率低,而容器技术的两个核心概念,Namespace 和 Cgroup,恰到好处的解决了这两个难题。Namespace 作为看起来是隔离的技术,替代了 Hypervise 和 GuestOS,在原本在两个 OS 上的运行环境演进成一个,运行环境更加轻量化、启动快,Cgroup 则被作为用起来是隔离的技术,限制了一个进程只能消耗整台机器的部分 CPU 和内存。
KubeVela 是一个简单易用且高度可扩展的应用交付和管理平台,基于 Kubernetes 与 OAM 技术构建。其核心功能是让开发人员方便快捷地在 Kubernetes 上定义与交付现代微服务应用,而无需了解任何 Kubernetes 本身相关的细节。
当前,云原生技术以容器技术为基础,通过标准可扩展的调度、网络、存储、容器运行时接口来提供基础设施。同时,通过标准可扩展的声明式资源和控制器来提供运维能力,两层标准化推动了开发与运维关注点分离,各领域进一步提升规模化和专业化,达到成本、效率、稳定性的全面优化。 在这样的大技术背景下,越来越多的公司引入了云原生技术来开发、运维业务应用。正因为云原生技术带来了越发纷繁复杂的可能性,业务应用出现了微服务众多、多语言开发、多通信协议的鲜明特征。同时,云原生技术本身将复杂度下移,给可观测性带来了更多挑战:
我们知道Kubernetes在容器编排市场中占据了主导地位,用户基数呈逐年上升的趋势。K8s提供了强大的运维部署、弹性伸缩、故障恢复能力,极大地便利了分布式系统的开发和管理,但是随之而来的安全问题却也比较突出。
在云原生场景下,为了使CPU利用率更高,以及各容器之间不会由于激烈竞争而引起性能下降,容器的资源分配需要更精细化。
K8s社区主要通过Extender Resource和Device Plugin方式给为用户提供GPU物理资源支持。 每个GPU厂商都会实现自己的Device Plugin Agent,Agent在底层节点层会将物理卡扫描上报到集群。用户用拓展资源方式在Pod创建时指定需要物理卡的数量,Device Plugin在每个Kubelet节点上做启动,并且调用各个GPU厂商的设备工具,将设备卡资源扫描上报。
In this article, you will learn how to recreate the Kubernetes RBAC authorization model from scratch and practice the relationships between Roles, ClusterRoles, ServiceAccounts, RoleBindings and ClusterRoleBindings.