EKS 训练营-使用SPOT(9)

# 介绍 为什么要使用Spot实例(有的地方也叫竞价实例),俩字:省钱。 如果想了解更多的内容,可以参考这篇 [博客](https://aws.amazon.com/blogs/compute/cost-optimization-and-resilience-eks-with-spot-instances/) 使用Spot实例的架构图 ![image-20210526140235769](https://imgs.wzlinux.com/blog/202105/26/140235-432206.png) # 添加Spot实例组 ## 1.先把原有的都标识了 标识现有的为按需实例组 ```bash kubectl label nodes --all 'lifecycle=OnDemand' ``` ## 2.创建新的 worker node 组 选择 Console 创建 nodegroup 吧,创建起来比较简单,capacityType 选择 SPOT,也可以选择给 node 打标签。 ![image-20210526162138844](https://imgs.wzlinux.com/blog/202105/26/162139-528085.png) ![image-20210526162259934](https://imgs.wzlinux.com/blog/202105/26/162300-433451.png) ## 3.确认新的节点已经 Ready 大概需要 5-8 分钟后即可查询到对应的内容 ```bash kubectl get nodes --sort-by=.metadata.creationTimestamp ``` # 配置 Spot 中断处理 如果 Spot 实例被回收,会提前 2 分钟通知,所以在 Spot 实例上部署一个 [AWS Node Termination Handler](https://github.com/aws/aws-node-termination-handler),用于处理中断,其流程如下 - 确认 Spot 实例被提醒(会被回收) - 利用这 2 分钟的时间间隔准备优雅的终止这个实例 - 不允许部署新的 pod 到这个节点上 - 驱逐已经运行在这个节点上的 pod - 通过 replication controller 在别的节点上替换新的 pod,以保持所需容器的数量 默认情况下,aws-node-termination-handler 会在所有的节点(包括按需节点和 Spot 节点)上应用这个策略,但是如果已经对 Spot 节点打了标签的话,则可以只让他在 Spot 实例上生效(在上面的步骤中,Spot 的标签为: `lifecycle=spot`),安装方式如下 ```bash helm repo add eks https://aws.github.io/eks-charts helm upgrade --install aws-node-termination-handler \ --namespace kube-system \ --set nodeSelector.lifecycle=spot \ eks/aws-node-termination-handler ``` 查看运行状态 ```bash kubectl --namespace=kube-system get daemonsets ``` ![image-20210526162800518](https://imgs.wzlinux.com/blog/202105/26/162801-724347.png) # 清理环境 清除 Spot 终端处理组件 ```bash helm uninstall aws-node-termination-handler --namespace=kube-system ``` 然后可以手动在 console 删除 nodegroup。 # 欢迎大家扫码关注,获取更多信息 ![](https://imgs.wzlinux.com/wechat/wechat-8.jpg)
上一篇:EKS 训练营-vue 项目实战(16)


下一篇:Windows系统EFS加密/解密原理介绍