我有一个Kubernetes ReplicaSet与5个副本。我想有一个pod ID增加每个副本,但它不应该增加当一个pod是重新创建,因为它崩溃。
的例子:
* ReplicaSet starts with 4 replicas *
* Replica 1 starts with the ID 1 *
* Replica 2 starts with the ID 2 *
* Replica 3 starts with the ID 3 *
* Replica 4 starts with the ID 4 *
* Replica 3 dies *
* Replica 5(3) starts with ID 3 *
你正在寻找一个statfulset
https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
命名从ID 0开始,但这是您正在寻找的行为。
回复您的评论。当我的SatefulSet使用我自己构建的图像时,我可能会使用这样的东西,在启动应用程序之前解析我的容器索引:
if test -z "$HOSTNAME"; then
HOSTNAME=`hostname 2>/dev/null`
fi
if echo "$HOSTNAME" | grep -E '.*-[0-9][0-9]*' >/dev/null ; then
POD_IDX=`echo "$HOSTNAME" | sed 's|.*-([0-9]*)$|1|'`
fi
#echo My index is $POD_IDX
在其他情况下,我可以从公共注册中心部署映像。然后,我会找出一种方法,通过一些initContainer上下文化的配置传递此应用程序,例如普罗米修斯-它不使用Pod索引,尽管它可以从上面重用块,…:
initContainers:
- args:
- -c
- |
set -x;
sed "/external_labels:.*/ascrape_by: $REPLICA" /etc/prometheus.yml.tpl |
sed "s|^scrape_by:| scrape_by:|" >/etc/prometheus/prometheus.yml;
command: [ /bin/sh ]
env:
- name: REPLICA
valueFrom:
fieldRef:
fieldPath: metadata.name
image: docker.io/prom/prometheus:xx