Kubernetes 1.21版本引入了一个新特性,Pod Deletion Cost。这是一个可选的新特性,允许用户设置一个Pod的”删除成本”,以影响Kubernetes调度器在进行缩容时的决策。删除成本是一个整数值,可以为正数、零或负数。具有较高删除成本的Pod在缩容时将被优先保留,而具有较低删除成本的Pod将被优先删除。如果没有设置删除成本,Pod的默认删除成本为0。这个特性为用户提供了更大的灵活性,使他们能够更好地控制在进行缩容时哪些Pod应该被优先删除,从而更好地优化他们的应用程序和服务。
未调度 > 已调度:未调度的Pods优先级更高,因为它们还没有开始运行任何任务,所以优先缩减它们对系统的资源占用。
PodPending > PodUnknown > PodRunning:PodPending表示Pod还未开始运行,PodUnknown表示Pod状态未知,PodRunning表示Pod正在运行。优先缩减还未运行或者状态未知的Pods,以尽可能保持系统的稳定运行。
Not ready > ready:Not ready的Pods优先级更高,因为它们可能存在问题,优先缩减它们可以减少系统的错误率。
较大打散权重 > 较小:打散权重大的Pods优先级更高,因为它们在集群中的分布更广,优先缩减它们可以减少系统的负载。
处于 Ready 时间较短 > 较长:处于Ready状态时间较短的Pods优先级更高,因为它们可能刚刚开始运行,优先缩减它们可以减少对系统的影响。
容器重启次数较多 > 较少:重启次数多的Pods优先级更高,因为它们可能存在问题,优先缩减它们可以减少系统的错误率。
创建时间较短 > 较长:创建时间短的Pods优先级更高,因为它们可能刚刚开始运行,优先缩减它们可以减少对系统的影响。
拓展案例
apiVersion: v1
kind: Pod
metadata:
name: mypod
annotations:
"controller.kubernetes.io/pod-deletion-cost": "10"
命令方式
kubectl get pods
kubectl annotate pod controller.kubernetes.io/pod-deletion-cost=
在这个例子中,mypod的删除成本被设置为10。这意味着在进行缩容时,Kubernetes调度器将优先删除其他删除成本较低的Pod。
注意,Pod Deletion Cost只在ReplicaSet和Deployment的Pod中有效,对于StatefulSet和DaemonSet中的Pod则无效。并且,你只能在创建Pod时设置deletionCost,不支持后期修改。
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777