我的kubernetes(1.18.3)群集上有以下Pod:
NAME READY STATUS RESTARTS AGE
pod1 1/1 Running 0 14m
pod2 1/1 Running 0 14m
pod3 0/1 Pending 0 14m
pod4 0/1 Pending 0 14m
pod3和pod4无法启动,因为该节点只能容纳2个Pod。当pod1完成并退出时,调度程序将选择pod3或pod4并启动它。到目前为止一切顺利。
但是,当任何一个正在运行的Pod完成并退出时,我也想在pod3或pod4之前启动一个高优先级Pod(hpod)。
所以我创建了一个priorityclass,可以在kubernetes文档中找到:
kind: PriorityClass
metadata:
name: high-priority-no-preemption
value: 1000000
preemptionPolicy: Never
globalDefault: false
description: "This priority class should be used for XYZ service pods only."
我创建了以下pod yaml:
apiVersion: v1
kind: Pod
metadata:
name: hpod
labels:
app: hpod
spec:
containers:
- name: hpod
image: ...
resources:
requests:
cpu: "500m"
memory: "500Mi"
limits:
cpu: "500m"
memory: "500Mi"
priorityClassName: high-priority-no-preemption
现在的问题是,当我使用kubectl apply -f hpod.yaml启动高优先级pod时,尽管我已经设置了'preemptionPolicy:Never',调度程序仍会终止正在运行的pod以允许高优先级pod启动。] >
预期的行为是将启动hpod的时间推迟到当前运行的Pod完成为止。然后,让hpod在pod3或pod4之前启动。
我在做什么错?
我在kubernetes(1.18.3)群集上有以下Pod:名称就绪状态重新启动年龄pod1 1/1运行0 14m pod2 1/1运行0 14m pod3 ...
先决条件: