《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——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,亲和性等等)。
弹性负载会监听原始负载,并根据弹性单元设定的调度策略,克隆并生成弹性单元的负载。根据弹性负载中副本的变化,动态的分配原始负载和弹性单元上面的副本数目。
使用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