Kubernetes确定是部署还是扩展

Kubernetes确定是部署还是扩展,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,部署后,我会在pod启动时执行一些操作。但我不想为了扩大规模而这样做。是否有办法确定何时创建pod是新部署还是放大/重新创建事件,因此您希望在部署后的第一个可用pod上运行一些db脚本 如果在部署创建过程中遵循以下步骤,它是否适用于您: $ kubectl apply -f app-deployment.yml // This will give some time for the pod to start. $ WAIT_BEFORE_DATABASE_SETUP="${WAIT_BEFOR

部署后,我会在pod启动时执行一些操作。但我不想为了扩大规模而这样做。是否有办法确定何时创建pod是新部署还是放大/重新创建事件,因此您希望在部署后的第一个可用pod上运行一些db脚本

如果在部署创建过程中遵循以下步骤,它是否适用于您:

$ kubectl apply -f app-deployment.yml

// This will give some time for the pod to start.
$ WAIT_BEFORE_DATABASE_SETUP="${WAIT_BEFORE_DATABASE_SETUP-120}"
$ sleep $WAIT_BEFORE_DATABASE_SETUP 

// Pick any one pod which is in Running State
$ APP_POD_NAME=$(kubectl get pods --field-selector=status.phase=Running -o=custom-columns=NAME:.metadata.name | grep <deployment-name> | head -1)

$ kubectl exec -it $APP_POD_NAME -- bash -c "/scripts/run_db_updates.sh"
$kubectl apply-f app-deployment.yml
//这将给pod一些启动时间。
$WAIT_BEFORE_DATABASE_SETUP=“${WAIT_BEFORE_DATABASE_SETUP-120}”
$sleep$WAIT\u BEFORE\u数据库\u安装
//选择任何一个处于运行状态的吊舱
$APP_POD_NAME=$(kubectl get pods--field selector=status.phase=Running-o=custom columns=NAME:.metadata.NAME | grep | head-1)
$kubectl exec-it$APP\u POD\u NAME--bash-c“/scripts/run\u db\u updates.sh”

一种可能的解决方案是更新数据库中的标志,并让脚本检查该标志的值

你能不能就“一些行动”多说几句。关于识别放大后创建的POD的方法,您可以运行
kubectl get events
我认为这两种情况是不可区分的(或者实际上是不同的)。如果一个部署有3个pod副本,是否希望在第一次创建部署时所有3个pod都运行?因此,让我给出一个场景。我有DB更新作为pod启动脚本的一部分。pod启动时会更新数据库(检查是否已应用更新)。但我不想在扩大规模时执行这些步骤。因此,我们希望在pod启动脚本中进行检查,以检查这些步骤是否要执行。