在 Kubernetes 中升级并迁移 Dagster 实例
升级 Dagster 版本时,可能还需要迁移实例。按本指南说明,迁移仅在升级次版本时才可能需要。
本指南介绍 Kubernetes 环境中的迁移流程。
前置准备
开始前,请完成以下准备:
- 查阅 Dagster 升级指南,确认目标版本是否要求额外操作。
- 备份 PostgreSQL 数据库。
提示
步骤 1:升级 Helm chart
本文假定 Kubernetes 集群中只安装了一个 Dagster Helm chart release。所有命令都应在正确的命名空间中执行。
-
首先更新可用 chart 的信息:
helm repo update此命令获取 Dagster Helm chart 的最新信息;每次开源版本发布都会更新 chart。
-
使用所需的 Dagster chart 版本和 Helm values 运行
helm upgrade:helm upgrade --install dagster dagster/dagster -f /path/to/values.yaml这会安装新 chart。如果 release 不存在,就创建它;否则修改已有的
dagsterrelease。
步骤 2:缩容 Dagster
接下来将 Dagster webserver 和 daemon 的 Deployment 缩容,避免迁移期间继续产生向数据库写入的活动。
缩容前记录每个 Deployment 的副本数,迁移后需要恢复。
# Get the names of Dagster's webserver and daemon deployments created by Helm
export WEBSERVER_DEPLOYMENT_NAME=`kubectl get deploy \
--selector=component=dagster-webserver -o jsonpath="{.items[0].metadata.name}"`
export DAEMON_DEPLOYMENT_NAME=`kubectl get deploy \
--selector=component=dagster-daemon -o jsonpath="{.items[0].metadata.name}"`
# Save each deployment's replica count to scale back up after migrating
export WEBSERVER_DEPLOYMENT_REPLICA_COUNT=`kubectl get deploy \
--selector=component=dagster-webserver -o jsonpath="{.items[0].status.replicas}"`
export DAEMON_DEPLOYMENT_REPLICA_COUNT=`kubectl get deploy \
--selector=component=dagster-daemon -o jsonpath="{.items[0].status.replicas}"`
# Scale down the Deployments
kubectl scale deploy $WEBSERVER_DEPLOYMENT_NAME --replicas=0
kubectl scale deploy $DAEMON_DEPLOYMENT_NAME --replicas=0
-
步骤 3:迁移 Dagster 实例
运行执行
dagster instance migrate的 Kubernetes Job。下例通过helm template生成迁移 Job 的清单,再应用到集群中:# Run `helm list` and save your Dagster Helm release name export HELM_DAGSTER_RELEASE_NAME=<DAGSTER_RELEASE_NAME> # The `helm template` command must be run from the directory containing the # `values.yaml` file you used to install the Dagster Helm chart. # # If needed, you can retrieve the currently applied `values.yaml` file # from the cluster by running: # # `helm get values $HELM_DAGSTER_RELEASE_NAME > values.yaml` # helm template $HELM_DAGSTER_RELEASE_NAME dagster/dagster \ --set "migrate.enabled=true" \ --show-only templates/job-instance-migrate.yaml \ --values values.yaml \ | kubectl apply -f - -
接下来检查迁移是否成功,先获取 Pod 名称:
kubectl get pods -l job-name=dagster-instance-migrate -
将
<POD_NAME>替换为实际名称,检查该 Pod:kubectl describe pod <POD_NAME>确认 Pod 完成且没有错误后,再继续下一步。
步骤 4:恢复 Dagster 副本数
最后将 webserver 和 daemon 的 Deployment 恢复到迁移前记录的副本数:
kubectl scale deploy $WEBSERVER_DEPLOYMENT_NAME --replicas=$WEBSERVER_DEPLOYMENT_REPLICA_COUNT
kubectl scale deploy $DAEMON_DEPLOYMENT_NAME --replicas=$DAEMON_DEPLOYMENT_REPLICA_COUNT
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END











暂无评论内容