如何解决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 comment和Kubernetes API Concepts - Generated values。
建议不要依赖它。通常,标签和选择器在Kubernetes生态系统中更为常见。
Env: []corev1.EnvVar{} // pass here the generated name,
您可以为此使用Downward API。 示例:
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。