与 Kubernetes 驱动程序一起使用时,buildx 如何命名其 pods

How does buildx name its pods when used with Kubernetes driver

我试图了解 buildx、其 Kubernetes 驱动程序、GitLab CI/CD 和并行作业当前出现的问题。构建器实例的 pod 名称中出现的后缀 0 是什么?

它看起来像一个索引,但似乎与副本无关。例如我试过这个(注意 test 后面第一个连字符之前的后缀 0

$ docker buildx create --name test --driver kubernetes --driver-opt namespace=ci,replicas=2 --use
$ echo "FROM scratch" | docker buildx build -
$ kubectl get pod -n ci
NAME                   READY   STATUS    RESTARTS   AGE
test0-xxxxxxxxxx-xxxxx 1/1     Running   0          xxxxx
test0-yyyyyyyyyy-yyyyy 1/1     Running   0          yyyyy

跟节点有关。默认情况下,docker buildx create 创建 a single node。创建新构建器后,您还可以向其添加新节点。

相关代码在store/nodegroup.go:

func (ng *NodeGroup) nextNodeName() string {
    i := 0
    for {
        name := fmt.Sprintf("%s%d", ng.Name, i)
        if ii := ng.findNode(name); ii != -1 {
            i++
            continue
        }
        return name
    }
}

docker buildx ls 列出所有构建器及其各自的节点。