Statefulset-创建和重新启动后如何自动将标签设置到Pod?

时间:2020-11-09 14:32:44

标签: kubernetes kubernetes-statefulset

我有statefulset mongo-replica,它创建了两个副本,我想为每个吊舱(副本)设置一个新标签(COMPANY),其值应为吊舱的名称。例如:

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

因此,创建/重新启动广告连播中的automatically是否可以解决?

我知道我们可以通过kubectl label来做到这一点,但是它是手动的

1 个答案:

答案 0 :(得分:0)

在撰写本文时,还没有用于此目的的专用工具。这里我想到两件事:

  • 为使用服务的Statefulset Pod使用initContainer 拥有适当权限的帐户。 initContainer 然后将运行类似kubectl label pod $hostname company=$HOSTNAME"

    的命令

    本文介绍了如何通过图像构建,服务帐户和角色创建来运行kubectl from within a pod


  • 创建某种可以在pod / job中运行的bash脚本,并为您自动执行此过程:

 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 /控制器。

这是一篇不错的文章,描述了如何编写基本的kubernetes mutating admission webhook。 Kubernetes官方文档分享了一个关于dynamic admission control的很好的部分,值得一看。