Client-go-使用client-go在Kubernetes中创建对象之前获取生成的名称

问题描述

让我们假设我有这样的代码来生成新的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)

是否可以在创建对象之前获取该生成的名称?还是可以将生成的名称存储在同一对象的env中?

解决方法

生成的名称似乎是与apiServer一起创建的。参见Issue commentKubernetes API Concepts - Generated values

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

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

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

          env:
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...