autoscaler

SpringCloud应用在Kubernetes上的最佳实践——高可用(弹性伸缩)

只谈情不闲聊 提交于 2021-01-18 06:54:19
作者 | 三未 前言 弹性伸缩是一种为了满足业务需求、保证服务质量、平衡服务成本的重要应用管理策略。弹性伸缩让应用的部署规模能够根据实时的业务量产生动态调整,在业务高峰期扩大部署规模,保证服务不被业务冲垮;在业务低谷期缩减部署规模,避免资源浪费。 由于大部分云资源是按需取用,按量计费模式,相比使用 IDC,使用云的用户从弹性伸缩获得的成本优势是非常明显的,弹性伸缩也是大多数云上用户的选择。而关于如何用好弹性伸缩,一直是用户非常关心的问题,本文尝试围绕这个话题,给出一些相关的思考和优化实践。 有两种实现弹性伸缩方法,一种是“ 垂直弹性 ”,即“Scale Up”,另一种是“ 水平弹性 ”,也就是“Scale Out”。 1. 垂直弹性伸缩 垂直弹性伸缩一般是指通过升降服务器的规格来实现的弹性伸缩。这种伸缩方式对应用本身几乎没有约束,可以被大部分应用或组件使用,它的问题主要在两个方面: 动态调整服务器的规格而不影响上层部署的应用,对基础设施要求比较高,对于许多云厂商而言是个难题,并不能实现业务完全无感的动态变配; 垂直弹性无法突破单台物理设备的规格限制,面向巨量的突发业务增长,垂直弹性的应对能力是有上限的。 2. 水平弹性伸缩 而水平弹性伸缩恰恰相反,它依靠增减服务器的数量来实现弹性伸缩,对基础设施的要求不高,水平弹性除了可以解决容量上限的问题,多副本部署还能带来更高的可靠性

kubernetes指南--弹性伸缩

微笑、不失礼 提交于 2021-01-13 14:27:09
[TOC] 转载请注明出处,文章转自 FingerLiu 0x0 pre 弹性伸缩这种功能,不是很多系统都已经实现了,我们直接用就行了吗,为什么还需要个指南呢。 因为。。。。我们先来看看都有哪些相关知识点吧。。。 弹性伸缩涉及到各种软硬件,各色调度平台,策略和系统,其本身就是一个较复杂的课题。此外,kubernetes 不单单是一个容器调度平台,而是一个活跃,庞大的生态系统。 kubernetes 弹性伸缩 这个课题涉及了诸多知识点,主要如下: - 水平(Horizontal)伸缩 - 垂直(Vertical)伸缩 - 定时(Scheduled)伸缩 - 预测(Predictive)性伸缩 - 服务画像 - node - service - CA - cloudprovider - VPA - HPA - HPA controller - metric - metric server - heapster - metric state - prometheus - CRD - custom metric api - prometheus adapter - cronhpa controller - cloud controller manager 在刚开始调研这个课题的时候,一上来看到这么多名词和术语,肯定会一脸懵逼的。终于, 在知识的海洋中遨游了好一阵后,终于了摸索出一条路

Kubernetes生产环境最佳实践

蓝咒 提交于 2020-12-31 04:33:20
众所周知,Kubernetes很难! 以下是在生产中使用它应遵循的一些最佳实践。遵循这些步骤能够确保更高的安全性和生产效率。 毫无疑问,DevOps已经走过了一段很长的路! 借助于Kubernetes编排平台使得公司比以往更快地发布软件。随着容器用于构建和发布软件的使用量不断增加,Kubernetes已经成为事实上的容器编排工具标准,在软件企业中非常受欢迎。 Kubernetes具有优秀的特性,比如:支持可扩展、零停机部署、服务发现、自动重启和回滚功能等。要大规模管理容器部署,Kubernetes是必须的。它支持灵活地分配资源和工作负载。毫无疑问,生产环境中的Kubernetes是一个很好的解决方案,但需要花费一些时间来设置和熟悉这个工具。由于现在许多公司都希望在生产中使用Kubernetes,因此有必要考虑一些最佳实践。在本文中,我们将讨论一些Kubernetes的最佳实践。 生产环境中的Kubernetes Kubernetes是一个复杂并且学习曲线陡峭的编排工具,但它具有丰富的功能。生产操作应尽可能小心谨慎处理。如果您面临内部人才短缺的问题,您可以将其外包给PaaS供应商,为您提供所有最佳实践。但假设您在生产中独自管理Kubernetes。在这种情况下,关注最佳实践是非常重要的,特别是关于可观察性、日志记录、集群监控和安全配置。 我们很多人都知道

Horizontal Pod Autoscaler(Pod水平自动伸缩)

倖福魔咒の 提交于 2020-12-06 12:38:32
Horizontal Pod Autoscaler 根据观察到的CPU利用率(或在支持自定义指标的情况下,根据其他一些应用程序提供的指标)自动伸缩 replication controller, deployment, replica set, stateful set 中的pod数量。注意,Horizontal Pod Autoscaling不适用于无法伸缩的对象,例如DaemonSets。 Horizontal Pod Autoscaler 被实现作为Kubernetes API资源和控制器。该资源决定控制器的行为。控制器会定期调整副本控制器或部署中副本的数量,以使观察到的平均CPU利用率与用户指定的目标相匹配。 1. Horizontal Pod Autoscaler 是如何工作的 Horizontal Pod Autoscaler 实现为一个控制循环,其周期由 --horizontal-pod-autoscaler-sync-period 选项指定(默认15秒)。 在每个周期内,controller manager都会根据每个HorizontalPodAutoscaler定义的指定的指标去查询资源利用率。 controller manager从资源指标API(针对每个pod资源指标)或自定义指标API(针对所有其他指标)获取指标。 对于每个Pod资源指标(比如:CPU)

阿里内部!Knative 云原生应用开发指南(附网盘链接)

强颜欢笑 提交于 2020-11-22 00:39:56
今天跟大家分享的是阿里内部资料,帮助大家开启云原生时代Serverless之门, 文末下拉获取网盘链接 一、快速入门 1.初识 Knative: 跨平台的 Serverless 编排框架 2.在阿里云上一键安装 Knative 3.手动安装 Knative 4.Serving Hello World 5.Eventing Hello World 6.Tekton Hello World 二、Serving 进阶 1.自动扩缩容 - Autoscaler 2.Serving 健康检查机制分析 3.流量灰度和版本管理 4.服务路由管理 5.WebSocket 和 gRPC 服务 6.Serving Client 介绍 三、Eventing 进阶 1.定义无处不在的事件 -CloudEvent 2.关于 Broker/Trigger 事件模型 3.事件注册机制 - Registry 4.Sequeue 解析 5.Parallel 解析 四、云原生开发实战 1.日志和监控告警 2.调用链管理 3.使用 GitHub 事件源 4.基于 Kafka 实现消息推送 5.基于 MNS 与 OSS 实现人脸图片识别 6.基于 APIGateway 打造生产级别的 Knative 服务 7.三步走!基于 Knative Serverless 技术实现一个短网址服务 8.基于 Knative

2020-10-28

别来无恙 提交于 2020-10-29 14:07:57
Kubernetes的门户-Ingress 目前Kubernetes(K8s)已经真正地占领了容器编排市场,是默认的云无关计算抽象,越来越多的企业开始将服务构建在K8s集群上。在K8s中,组件通过Service对外暴露服务,常见的包括NodePort、LoadBalancer、Ingress等。其中Ingress主要提供HTTP层(7层)路由功能,相比TCP(4层)的负载均衡具备非常多的优势(路由规则更加灵活、支持金丝雀、蓝绿、A/B Test发布模式、SSL支持、日志、监控、支持自定义扩展等),是目前K8s中HTTP/HTTPS服务的主流暴露方式。 Ingress提供的7层负载均衡具有非常强大的能力,例如: 会话保持:让相同的session ID路由到同一台后端机器,保证每个用户的会话只在一台机器上处理。 基于内容的转发:能够根据HTTP协议内容进行转发,例如Host、URL甚至是PostBody等。 重写请求:能够对用户的请求进行动态修改,非常适用于新老系统的兼容性改造。 加密:在负载均衡上配置SSL,提供统一的证书管理,每个服务器无需单独维护证书。 健康检查增强:可基于业务规则进行健康检查,而不仅仅是判断端口连通性,使健康检查更加精确。 日志监控:全量7层访问日志,能够获取每个请求的结果、耗时、请求大小等信息,能够基于访问日志监控到每个服务的质量。

SpringCloud 应用在 Kubernetes 上的最佳实践 —— 高可用(弹性伸缩)

此生再无相见时 提交于 2020-10-13 11:25:10
作者 | 三未 前言 弹性伸缩是一种为了满足业务需求、保证服务质量、平衡服务成本的重要应用管理策略。弹性伸缩让应用的部署规模能够根据实时的业务量产生动态调整,在业务高峰期扩大部署规模,保证服务不被业务冲垮;在业务低谷期缩减部署规模,避免资源浪费。 由于大部分云资源是按需取用,按量计费模式,相比使用 IDC,使用云的用户从弹性伸缩获得的成本优势是非常明显的,弹性伸缩也是大多数云上用户的选择。而关于如何用好弹性伸缩,一直是用户非常关心的问题,本文尝试围绕这个话题,给出一些相关的思考和优化实践。 有两种实现弹性伸缩方法,一种是“ 垂直弹性 ”,即“Scale Up”,另一种是“ 水平弹性 ”,也就是“Scale Out”。 1. 垂直弹性伸缩 垂直弹性伸缩一般是指通过升降服务器的规格来实现的弹性伸缩。这种伸缩方式对应用本身几乎没有约束,可以被大部分应用或组件使用,它的问题主要在两个方面: 动态调整服务器的规格而不影响上层部署的应用,对基础设施要求比较高,对于许多云厂商而言是个难题,并不能实现业务完全无感的动态变配; 垂直弹性无法突破单台物理设备的规格限制,面向巨量的突发业务增长,垂直弹性的应对能力是有上限的。 2. 水平弹性伸缩 而水平弹性伸缩恰恰相反,它依靠增减服务器的数量来实现弹性伸缩,对基础设施的要求不高,水平弹性除了可以解决容量上限的问题,多副本部署还能带来更高的可靠性

第二章 九析带你轻松完爆 Knative Serving 组件

南笙酒味 提交于 2020-09-28 12:05:51
系列文章: 总目录索引: 九析带你轻松完爆 Knative 系列教程 目录 1 前言 2 邀约 3 Knative 简介 4 Knative Serving 架构 4.1 Configuration 对象 4.2 Route 对象 4.3 Service 对象 4.4 Revision 对象 4.5 Knative serving 各组件之间关系 1 前言 如果你对博客有任何疑问,请告诉我。 2 邀约 你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料: 3 Knative 简介 上小节中介绍 Knative 0.17.0 版本中主要组件有 Serving 和 Event。这节简要介绍一下 Serving 组件。 Serving 组件是让应用运行起来并提供服务,其中包括: 自动启动和销毁容器 自动生成网络访问的 service、ingress 对象(这些原来需要运维编写相关 Yaml 文件) 监控应用的请求,根据请求自动进行扩缩容(这些原来需要运维指定 K8S HPA) 使用 k8s 管理应用是一件比较辛苦的事情,尽管 k8s 针对容器编排已经非常方便,但是仍然会有很多手工、重复性工作。比如,需要根据源码创建镜像(无论是手动编写 Dockerfile 还是通过工具创建流水线)、创建 deployment 对象、创建 service 对象、创建 ingress 对象

Knative 系列文章目录

徘徊边缘 提交于 2020-08-17 20:14:24
初识 Knative: 跨平台的 Serverless 编排框架 快速入门 初识 Knative 在阿里云上一键安装 Knative 手动安装 Knative Serving Hello World Eventing Hello World Tekton Hello World Serving 进阶 自动扩缩容 - Autoscaler Serving 健康检查机制分析 流量灰度和版本管理 服务路由管理 WebSocket 和 gRPC 服务 Serving Client 介绍 Eventing 进阶 定义无处不在的事件 - CloudEvent 关于 Broker/Trigger 事件模型 事件注册机制 - Registry Parallel 解析 Sequeue 解析 云原生实践 日志和监控告警 调用链管理 使用 GitHub 事件源 基于 Kafka 实现消息推送 基于 MN 来源: oschina 链接: https://my.oschina.net/u/4410144/blog/4275406

《Kubernetes设计与实现》HPA(未完待续)

99封情书 提交于 2020-08-16 06:54:50
HPA(Horizontal Pod Autoscaler)是基于监控指标自动调整Pod数量的机制。 在实现层面HPA由两部分组成: 一个API 一个控制器 API用于制定规则,控制器用于执行规则。 规则 参数配置 kube-controller-manager : --horizontal-pod-autoscaler-sync-period :检查周期(默认为15s) --horizontal-pod-autoscaler-tolerance :容忍阀值 (默认为0.1) --horizontal-pod-autoscaler-initial-readiness-delay :初始化时间,用于延迟采样(因为从技术上无法判断Pod是否就绪,只能预测一个时间),默认为30s --horizontal-pod-autoscaler-cpu-initialization-period :专用于CPU的延迟采样时间,默认5min(需进一步确认) --horizontal-pod-autoscaler-downscale-stabilization :缩容冷却时间,多久执行一次缩容,默认是5分钟,避免频繁扩缩 --horizontal-pod-autoscaler-use-rest-clients :使用第三方metrics API对象 版本: autoscaling/v1