Statefulset-如何在创建和重新启动后自动为pod设置标签



我有状态集mongo-replica,它创建了两个副本,我想为每个pod(副本(设置一个新标签(COMPANY(,它的值应该是pod的名称。例如:

in POD mongo-replica-0 -> COMPANY: mongo-replica-0
in POD mongo-replica-1 -> COMPANY: mongo-replica-1 

那么,在创建/重新启动pod中的automatically,还有什么可以做的吗?

我知道我们可以通过kubectl label完成,但它是手动

在撰写本文时,还没有这样一个专用的工具。我想到了两件事:

  • 对使用服务的Statefulset Pods使用initContainer在其上创建的具有适当权限的帐户。initContainer然后将运行类似kubectl label pod $hostname company=$HOSTNAME"的命令

    本文展示了如何在pod具有图像构建、服务帐户和角色创建功能。


  • 创建某种bash脚本,该脚本将在pod/job中运行,并为您自动化此过程:

a=$(kubectl get pods -o jsonpath='{.items[*].[metadata.name](http://metadata.name/)}' -l app=$stsname) for n in $a ; do kubectl label pod $n company="$n" --overwrite ; done

  • 创建将修改这些对象的自定义可变webhook/controller

这是一篇很好的文章,描述了如何编写基本的kubernetes变异准入webhook。Kubernetes官方文档分享了一个关于动态准入控制的非常好的部分,值得一看。

最新更新