《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.1 游戏业务稳定性保障——5.1.2 游戏容器化部署最佳实践(4)

简介: 《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.1 游戏业务稳定性保障——5.1.2 游戏容器化部署最佳实践(4)

《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.1 游戏业务稳定性保障——5.1.2 游戏容器化部署最佳实践(3) https://developer.aliyun.com/article/1231999?groupCode=supportservice




使用弹性负载表达Deployment类型应用如下


# 弹性负载定义。
apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: ElasticWorkload
metadata:
 name: elasticworkload-sample
spec:
 sourceTarget:
 name: nginx-deployment-basic
 kind: Deployment
 apiVersion: apps/v1
 min: 2
 max: 4
 replicas: 6
 elasticUnit:
 - name: virtual-kubelet
 labels:
 alibabacloud.com/eci: "true"
 # min: 0 每个单元也可以指定自己的上下限。
 # max: 10


这个场景的弹性负载定义,弹性负载的使用方式与HPA类似,通过外部挂载的方式使用,对原有的业务无侵入。


弹性负载主要分为两个部分:


SourceTarget部分主要定义原始负载的类型、副本数目可变化的范围。

elasticUnit部分是一个数组,定义弹性单元的调度策略,如果有多个弹性单

元,则按照模板的顺序定义。

在上面的实例中,SourceTarget的副本上下限位2~4,表示当ElasticWorkload

的replicas为2~4个副本时,会分配到sourceTarget,当超过4个副本时,会分配到弹性单元virtual-kubelet即ECI上,而在弹性单元virtual-kubelet中可以定义这个单元所独有的调度策略(包括不限于nodeSelector,亲和性等等)。


image.png


弹性负载会监听原始负载,并根据弹性单元设定的调度策略,克隆并生成弹性单元的负载。根据弹性负载中副本的变化,动态的分配原始负载和弹性单元上面的副本数目。


使用ack-autoscaling-placeholder实现容器秒级伸缩


ack-autoscaling-placeholder组件可以为集群的自动扩展提供了缓冲区,它适

用于工作负载需要快速启动而无需考虑节点资源不足的使用场景。使用ack-autoscaling-placeholder可以实现容器秒级伸缩,尽量提升扩容过程中的速度。它实现的原理就是使用优先级非常低(负数)的占位容器来超额配置,以保留其他Pod可以使用的资源。如果集群没有可用的资源,真正的工作负载也会将占位容器所占用的资源抢占,实现快速启动,然后结合同时使用Cluster-Autoscaler,迫使集群进行节点维度的扩展。


该功能需要允许一定的资源可冗余,实现资源抢占时同时通过CA触发节点扩

容,双向进行,快速触发。


前提需要部署工作负载的PriorityClass,启动占位Pods


apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
 name: high-priority
value: 1000000 #配置优先级。
globalDefault: false
description: "This priority class should be used for XYZ service pods only."
nameOverride: ""
fullnameOverride: ""
##
priorityClassDefault:
 enabled: true
 name: default-priority-class
 value: -1
##
deployments:
 - name: ack-place-holder
 replicaCount: 1
 containers:
 - name: placeholder
 image: registry-vpc.cn-shenzhen.aliyuncs.com/acs/pause:3.1
 pullPolicy: IfNotPresent
 resources:
 requests:
 cpu: 4 #资源占位4C8G
 memory: 8 
 imagePullSecrets: {}
 annotations: {}
 nodeSelector: #节点选择
 demo: "yes" 
 tolerations: []
 affiffiffinity: {}
 labels: {}




《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.1 游戏业务稳定性保障——5.1.2 游戏容器化部署最佳实践(5) https://developer.aliyun.com/article/1231995?groupCode=supportservice

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
消息中间件 监控 NoSQL
容器化应用系统上生产的最佳实践
容器化应用系统上生产的最佳实践
|
2月前
|
Kubernetes Java 应用服务中间件
制作容器镜像的最佳实践
制作容器镜像的最佳实践
|
28天前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于Docker和Kubernetes的最佳实践
在现代云计算环境中,自动化运维成为保障系统稳定性与提升效率的关键。本文深入探讨了如何利用Docker容器化技术和Kubernetes容器编排工具构建一个高效、可靠的自动化运维体系。文中不仅介绍了相关的技术原理,还结合具体案例分析了实施过程中的常见问题及解决方案,为读者提供了一套行之有效的最佳实践指南。
|
1月前
|
测试技术 Go 云计算
Go语言优化云计算与容器化环境的策略与最佳实践
【2月更文挑战第15天】在云计算和容器化环境中,Go语言的应用和优化策略对于提高系统的性能和效率至关重要。本文深入探讨了如何使用Go语言优化云计算和容器化环境,包括内存管理、并发编程、代码优化等方面的最佳实践,旨在帮助开发者充分利用Go语言的优势,提升系统的整体性能。
|
2月前
|
存储 Kubernetes 容灾
Velero 系列文章(五):基于 Velero 的 Kubernetes 集群备份容灾生产最佳实践
Velero 系列文章(五):基于 Velero 的 Kubernetes 集群备份容灾生产最佳实践
|
2月前
|
消息中间件 Kubernetes NoSQL
「译文」K8S 及 OpenShift 上应用程序的 Labels 和 Annotations 最佳实践
「译文」K8S 及 OpenShift 上应用程序的 Labels 和 Annotations 最佳实践
|
2月前
|
Kubernetes 监控 安全
「译文」在 K8S/OpenShift 上开发应用程序的 14 种最佳实践
「译文」在 K8S/OpenShift 上开发应用程序的 14 种最佳实践
|
4月前
|
负载均衡 持续交付 Docker
Docker容器编排与微服务架构的整合:最佳实践
微服务架构和Docker容器编排工具的结合为现代应用程序的构建和部署提供了巨大的便利性。本文将深入探讨如何将这两者整合在一起,提供丰富的示例代码和详细的最佳实践,以帮助大家构建可伸缩、可维护和高可用的微服务应用。
|
4月前
|
Kubernetes 网络协议 API
kubernetes资源命名约束和最佳实践
kubernetes资源命名约束和最佳实践
141 0
|
5月前
|
监控 Cloud Native 应用服务中间件
带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(1)
带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(1)
带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(1)