我有状态集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官方文档分享了一个关于动态准入控制的非常好的部分,值得一看。