Kubernetes 应用的自动水平扩容|学习笔记(一)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 快速学习 Kubernetes 应用的自动水平扩容

开发者学堂课程【Kubernetes 云原生管理实践Kubernetes 应用的自动水平扩容】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/751/detail/13221


Kubernetes 应用的自动水平扩容

 

内容介绍:

一、Kubernetes HPA 扩展应用


一、Kubernetes HPA 扩展应用

1、怎么用 Kubernetes HPA 对应用进行扩展。并不是原生的 Kubernetes HPA,也不是其他的技术,基于 HPA 的一些扩展。主要是关于 OAM,就是开发应用模型,这之间有什么关联。

 

2、云原生架构为什么要提建设?因为阿里云发表了云原生架构的白皮书,里面特别提到了云原生架构和传统应用架构的不同。作为一个传统的应用,以云原生的眼光来看有三部分内容。一部分是核心的应用代码,这部分应用有些改变,比如以前是放在一起的单一应用,慢慢的变成了分布式应用,也有了微服务的架构。但是这些都是针对业务代码本身做的拆解。还有一部分是对第三方软件依赖性,比如说有的是用数据库,有的是用 macscue,有的是用日志,或者是其他的这些应用。这些应用它的特点是跟业务代码加码令,是可以重复使用的,有第三方的功能。还有一部分就是一些运维的能力,比如说很多时候要写一些关于高可用性,有的要写一些关于 node balancing 这样的代码。在云原生架构的环境下,这些代码都进行了一些组合,业务代码慢慢的变成了微服务,一些第三方的软件变成了云上的一些资源,比如说云上的数据库,去买一个 message ,买一个 christian 等等。还有一些运维能力,这些运维能力慢慢就下沉到了 PaaS 层、也就是平台层。所以在云原生架构的环境下,整个的应用跟传统的架构比是有很大的改变。这些改变也造成了在描述应用的时候,也会产生相应的改变。

image.png

 

3、为什么要采用云原生的架构?主要是为了提升应用交付迭代的速度,当传统的架构越变越大的时候,不得不去把它拆解掉。在拆解的过程中,如果用云原生架构下的一个应用,希望怎样去描述一个应用呢?应用代码把它叫做一个模块,有几个应用代码模块,然后第三方依赖模块,接着就是运维模块。所谓的运维模块,包括课程要讲的 HPA,包括 ingress。所有的对业务的模块进行运维操作的业务能力,都把它叫做运维模块。这种描述方式对于云原生架构的一个很自然、直接的,也是很直观的一种映射。

 

4、看一下在 Kubernetes 是怎样去描述一个运用的。可以看到这么多 yaml,而且这么多 yaml 文件当中是混在一起的。

image.png

 

比如用一个最常用的 deployment,在 deployment 里面有业务逻辑的部分,比如说它讲了 daughter image 在哪,开了哪一个端口,这个端口名字叫做 http 等等。也有一些运维的操作,replic 是一个,Running updates,发布的策略等等,这些都混在了一起,混在一起的情况是非常难以管理,不但非常难以管理而且很容易造成错误。为什么会产生这种情况?应用发布或者应用交付平台或者说应用部署的方式,是站在一个平台的角度或一个集群的角度,没有去想怎么样站在一个应用的角度去发布。这个当中就带来了很多问题,就像刚才说的,一个是混乱,第二个是职责不清,第三个是很难以管理。在种种弊端的情况下,提出了这样一个开源项目叫 OAMOAM 就是 Open Application Model,开放的应用模型。这是在云原生应用环境下对应用的一个描述,特别是在平台管理层上对应用进行的描述。这个项目是阿里云和微软、issue 等其他的三方共同开发的。目前已经进入了工具的开发期,他的规范基本上已经成熟和稳定了,现在要把代码实践的部分做好。

 

5OAM 分为几部分。                    

image.png

 

第一部分是组件,比如业务组建、组件1、组件2。在组件中引入一个概念叫 workloadworkload 是什么呢?它对应的 Kubernetes workload 的概念加以提升,就是把抽象程度变高了,变好了。Workload 也包含了 service 等等的产生。组件是作为 workload 的模板,把 workload 再往上提升。用这种方式来定义应用本身的组件是非常直观和简洁的

 

6、第二部分是 traits,叫特征。

image.png

 

这个字是从 rust 语言来的,traits 是对运维属性的一些描述,特别是在 Kubernetes 上一些应用的描述,比如说 scalingrolloutroute 等等。这些运维操作是绑定在 components 上,有一个非常重要的概念,对于应用的描述,比如application configuration,就是把应用完整的放在一起的时候,对于应用进行描述的时候,是把 component 放在那里。比如说我有一个组件,有一个容器,有一个模块,他有哪些操作是直接可以套用的,这种观念和现在的以平台为主视角这种观念是截然不同。

 

7application configuration 是另一个例子,他当中讲了有哪些 traits。在这个例子中用的就是 HPA,是原生自带的。HPA Kubernetes 的基本运维操作,是对于deployment 下的 scale 进行操作的。这个操作会去看一些指标,根据这些指标进行扩容和缩容的操作,两部分都有。

image.png

 

这个操作本身来讲,原生的那部分对于一些容器或计算资源作为指标,比如说 CPU memory 等等。这些往往是不够的,在这种情况下,需要进行扩展,扩展有不同的项目。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
|
Kubernetes 监控 Cloud Native
Kubernetes自动伸缩方案的终极指南
【4月更文挑战第18天】
315 0
Kubernetes自动伸缩方案的终极指南
|
存储 Kubernetes 调度
基于容器和 Kubernetes 的应用无限扩容
基于容器和 Kubernetes 的应用无限扩容
104 0
|
1月前
|
Prometheus Kubernetes 监控
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
100 1
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
|
1月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
|
1月前
|
Kubernetes 监控 调度
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
|
3月前
|
资源调度 Kubernetes 调度
玩转Kubernetes集群:掌握节点和Pod自动扩缩容,让你的系统更智能、更高效!
【8月更文挑战第22天】Kubernetes的核心功能之一是自动扩缩容,确保系统稳定与高可用。节点自动扩缩容由调度器和控制器管理器协作完成,依据资源紧张程度动态调整。主要采用HPA、VPA及Cluster Autoscaler实现。Pod自动扩缩容通常通过HPA控制器按需调整副本数量。例如,设置HPA控制器监视特定部署的CPU使用率,在80%阈值上下自动增减副本数。合理利用这些工具可显著提升系统性能。
101 2
|
3月前
|
Prometheus Kubernetes 监控
在K8S中,当Pod业务量比较大时候,如何实现水平伸缩和扩容?
在K8S中,当Pod业务量比较大时候,如何实现水平伸缩和扩容?
|
6月前
|
存储 Kubernetes Docker
容器服务Kubernetes版产品使用合集之集群节点和 pod 实现自动扩缩容如何解决
容器服务Kubernetes版,作为阿里云提供的核心服务之一,旨在帮助企业及开发者高效管理和运行Kubernetes集群,实现应用的容器化与微服务化。以下是关于使用这些服务的一些建议和合集,涵盖基本操作、最佳实践、以及一些高级功能的使用方法。
|
Kubernetes 应用服务中间件 nginx
【探索 Kubernetes|作业管理 Deployment 篇 系列 12】水平扩展 / 收缩、滚动 / 回滚更新(下)
【探索 Kubernetes|作业管理 Deployment 篇 系列 12】水平扩展 / 收缩、滚动 / 回滚更新(下)
157 0
|
Prometheus 运维 Kubernetes
Kubernetes 应用的自动水平扩容|学习笔记(二)
快速学习Kubernetes 应用的自动水平扩容
Kubernetes 应用的自动水平扩容|学习笔记(二)

推荐镜像

更多