我正在使用带有集群自动缩放器和节点自动配置的 GKE 1.29 集群。截至目前,我在 GKE 工作负载中使用 N2D 机器类型,并且在部署中使用 n2d-standard-4 机器类型并使用以下节点亲和性配置。
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/machine-family
operator: In
values:
- n2d
- key: node.kubernetes.io/instance-type
operator: In
values:
- n2d-standard-4
我想使用具有 4 个 CPU 和 8 GB 内存的自定义机器类型。如何使用节点亲和力来完成此操作?我尝试按照配置进行操作,但没有成功。
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/machine-family
operator: In
values:
- n2d
- key: node.kubernetes.io/instance-type
operator: In
values:
- n2d-custom-4-8192
上述配置根本没有创建任何节点池,并且 Pod 处于待处理状态。
我是否使用正确的方法来配置具有自定义机器类型的节点,或者是否有更好或正确的解决方案?
在 NAP 日志中,我在没有扩大规模的情况下得到了这个信息
noScaleUp: {
unhandledPodGroups: [
0: {
napFailureReasons: [
0: {
messageId: "no.scale.up.nap.pod.zonal.failing.predicates"
parameters: [
0: "us-central1-a"
1: "node(s) didn't match Pod's node affinity/selector"
]
}
]
}
]
}
检查部署/pod 的节点关联性,以确认与目标集群中节点上的标签是否一致,步骤如下:
如果准确,则创建一个具有正确标签的新节点池,因为不允许使用新标签更新现有节点池。请注意 Google Kubernetes Engine (GKE) 中的集群标签和节点池标签命名约定,以区分标签并避免此错误。
如果不准确,则更正 pod 规范中的关联规则以匹配其节点池的标签。