我有一些在群集中运行的易爆Pod,在内存/CPU压力过大的情况下,我不想杀死这些Pod。

有什么方法可以增加它的优先级或其他什么,这样我们就不必更改它的 namespace (使其成为关键的kube系统)并且可以将其保存?

我发现了一些issues有关为 pods 添加优先级。但是无法找到解决方案。应该有一些方法可以设置优先级,还是我在这里错过了一些大事情?

最佳答案

在Kubernetes v1.7之前,无法使用Pod优先级功能

v1.8+,您可以在PodSpec中添加pod的优先级。您需要创建具有优先级值的PriorityClass对象,并在Pod中使用该PriorityClass名称。

但是直到v1.9,PriorityClass仍处于alpha阶段。

apiVersion: scheduling.k8s.io/v1alpha1
kind: PriorityClass
metadata:
  name: high-priority
value: 1000000
globalDefault: false

这里,
  • value表示优先级。值越高,优先级
  • 越高
  • globalDefault指示此PriorityClass的值应用于没有PriorityClassName的Pod。系统中只能存在一个将globalDefault设置为true的PriorityClass。

  • 现在,让我们以此优先级创建一个Pod
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      labels:
        env: test
    spec:
      containers:
      - name: nginx
        image: nginx
      priorityClassName: high-priority
    

    抢占

    创建Pod时,如果未找到满足该Pod所有指定要求的节点,则使用抢占逻辑从该节点中删除一个或多个优先级较低的Pod。在Pod消失之后,将在节点上安排具有更高优先级的Pod。

    查看有关pod priority的详细信息。

    关于kubernetes - Kubernetes中Pod的优先级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46273487/

    10-16 20:07