1

假设我有这样的代码来生成新的 pod

req := &api.Pod{
        TypeMeta: unversioned.TypeMeta{
            Kind:       "Pod",
            APIVersion: "v1",
        },
        ObjectMeta: api.ObjectMeta{
            GenerateName: "name-, // need to get that name, before creating an object
        },
        Spec: api.PodSpec{
            Containers: []api.Container{
                {
                    Name:  "nginx",
                    Image: "nginx",
                    Env:   []corev1.EnvVar{} // pass here the generated name,

                },
            },
        },
}
...
// Do some work on the generated name, before creating the resource in Kubernetes cluster
...
err := client.Create(context.Background(), req)

是否可以在创建对象之前获取生成的名称?或者是否可以将生成的名称存储在同一个对象的环境中?

4

1 回答 1

2

生成的名称似乎是与 apiServer 一起创建的。请参阅问题评论Kubernetes API 概念 - 生成的值

建议不要依赖它。通常,标签和选择器在 Kubernetes 生态系统中更为常见。

Env:   []corev1.EnvVar{} // pass here the generated name,

您可以为此使用 Downward API。例子:

          env:
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
于 2020-10-05T21:11:07.243 回答