EKS 训练营-使用SPOT(9)

介绍

为什么要使用Spot实例(有的地方也叫竞价实例),俩字:省钱。 如果想了解更多的内容,可以参考这篇 博客

使用Spot实例的架构图

image-20210526140235769

添加Spot实例组

1.先把原有的都标识了

标识现有的为按需实例组

kubectl label nodes --all 'lifecycle=OnDemand'

2.创建新的 worker node 组

选择 Console 创建 nodegroup 吧,创建起来比较简单,capacityType 选择 SPOT,也可以选择给 node 打标签。

image-20210526162138844

image-20210526162259934

3.确认新的节点已经 Ready

大概需要 5-8 分钟后即可查询到对应的内容

kubectl get nodes --sort-by=.metadata.creationTimestamp

配置 Spot 中断处理

如果 Spot 实例被回收,会提前 2 分钟通知,所以在 Spot 实例上部署一个 AWS Node Termination Handler,用于处理中断,其流程如下

  • 确认 Spot 实例被提醒(会被回收)
  • 利用这 2 分钟的时间间隔准备优雅的终止这个实例
  • 不允许部署新的 pod 到这个节点上
  • 驱逐已经运行在这个节点上的 pod
  • 通过 replication controller 在别的节点上替换新的 pod,以保持所需容器的数量

默认情况下,aws-node-termination-handler 会在所有的节点(包括按需节点和 Spot 节点)上应用这个策略,但是如果已经对 Spot 节点打了标签的话,则可以只让他在 Spot 实例上生效(在上面的步骤中,Spot 的标签为: lifecycle=spot),安装方式如下

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

查看运行状态

kubectl --namespace=kube-system get daemonsets

image-20210526162800518

清理环境

清除 Spot 终端处理组件

helm uninstall aws-node-termination-handler --namespace=kube-system

然后可以手动在 console 删除 nodegroup。

欢迎大家扫码关注,获取更多信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值