作为gitlab CI/CD管道的一部分,应该在Kubernetes pod上调度和部署作业,该pod具有连接到其节点的EBS卷。EBS卷的单位为us-east-1c
。我在runner-chart-values.yaml
中指定了以下affinity
部分:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values:
- us-east-1c
如这里所描述的,这意味着节点 * 必须 * 具有X1 M3 N1 X的可用性区域。我知道在相关的EKS集群中有一个节点的可用区为us-east-1c
。
当gitlab runner执行时,作业失败:
Warning FailedAttachVolume 1s attachdetach-controller AttachVolume.Attach
failed for volume "<volume-name>" : rpc error: code = Internal desc = Could not attach volume "<volume-id>" to node "<instance-id>": could not attach volume
"<volume-id>" to node "<instance-id>": InvalidVolume.ZoneMismatch: The volume '<volume-id>' is not in
the same availability zone as instance '<instance-id>'
怎么会这样?我已经验证了当作业运行时节点是可用的,但是即使不是这样,调度程序难道不会等到它可用(可能会超时),而不是使用错误可用区域中的节点吗?
1条答案
按热度按时间jtw3ybtb1#
我需要在配置文件的
runners
部分指定节点亲和性,以将需求应用于 job pod,而不是控制器pod: