k8s 调度实现有两种形式:调度策略和调度配置文件。
两者之间有什么关系?它们似乎重叠,但有一些差异。例如,有一个NodeUnschedulable
在profiles
但没有在policy
。CheckNodePIDPressure
在 中policy
,但不在profiles
另外,调度配置中有一个默认的启动选项,但调度策略中没有指定。我如何知道默认启动策略?
我真的很感激这方面的任何帮助。
k8s 调度实现有两种形式:调度策略和调度配置文件。
两者之间有什么关系?它们似乎重叠,但有一些差异。例如,有一个NodeUnschedulable
在profiles
但没有在policy
。CheckNodePIDPressure
在 中policy
,但不在profiles
另外,调度配置中有一个默认的启动选项,但调度策略中没有指定。我如何知道默认启动策略?
我真的很感激这方面的任何帮助。
区别很简单:Kubernetes 不支持 v1.19 或更高版本的“调度策略”。Kubernetes v1.19 支持使用单个调度器配置多个调度策略。默认情况下,我们使用它在所有 v1.19 集群中定义装箱调度策略。默认情况下,“调度配置文件”可用于在所有 v1.19 集群中定义装箱调度策略。
要使用该调度策略,只需在 Pod 规范中指定调度程序名称 bin-packing-scheduler。例如:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 5
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
schedulerName: bin-packing-scheduler
containers:
- name: nginx
image: nginx:1.17.8
resources:
requests:
cpu: 200m
此部署的 pod 将被调度到资源利用率最高的节点上,以优化自动缩放或确保在同一集群中混合大型和小型 pod 时有效放置 pod。
如果未指定调度程序名称,则将使用默认传播算法在所有节点上分发 pod。