我在本地 openshift 集群上部署了一个 redash 服务器,大约有 20 个 pod。我想在服务器上安装新的 python 库,我可以使用 ssh 到其中一个 podoc rsh
并运行pip install x
.
问题是我有很多 pod,当我需要一个新库时,不想 ssh 到每个 pod。我也不想更改图像并且每次都必须重新部署我的服务器。有没有办法同时在所有 pod 上运行命令?
使用oc rsh
. 正确的做法是更新容器镜像并重新部署您的应用程序,这就是 Kubernetes / OpenShift 的工作方式。
例如,当您的一个 Pod 因任何原因重新启动时(底层节点有问题、您的应用程序崩溃、管理员删除了一个 Pod,...),那么您的更改将随着 Pod 重新启动而消失。
通常,容器镜像是通过管道或类似方式构建的,因此重新构建镜像应该不是问题。话虽这么说,在所有 Pod 中运行命令的一种 hacky 方法如下:
for pod in $(oc get pods -o name); do
oc rsh $pod pip install x
done