我已经在组织中部署了kubernetes基础结构,并扩展了我的应用程序,但是一次需要自定义修改,因此我需要一次又一次地更改和提交我的映像,然后拉出该映像以查看我的更改。无论如何,我可以通过这些方法来提交我的Pod并将其用作复制到其他Pod的实例,请提供一些有关如何克服此问题而又不必一次又一次提交基本映像的建议。
答案 0 :(得分:0)
作为一般规则,我认为通过本地测试而不是“生产测试”会更好。就是这样:
我可以想象批量安装一个共享文件系统(例如NFS),使您能够进行更改,使其在相关Pod中传播。
或者,如果不可用,则更改Pod的command:
以在基础映像之上克隆存储库:
containers:
- name: my-pod
image: repo.example.com/the-image:some-tag
command:
- bash
- -c
- |
git clone https://example.com/the/repo.git /into/the/right/directory
# then continue with the Pod's normal boot-up
exec /docker-entrypoint.sh
的优势在于,至少可以在将更改传播到集群之前将其存储在安全的地方。
或者,如果这不适用,那么您可以在其中一个Pod中进行所需的任何更改后,就可以“手动”复制路径:
$ kubectl exec -it $pod -- bash -il
# vi /the/file/or/whatever
# exit
$ for p in $(get the list of other pod names); do
kubectl exec $pod -- tar -cf - /the/sync/directory | \
kubectl exec $p -- tar -xf - -C /
done
当然,如果所有Pod都被清除,则冒着风险,您所做的更改也是如此,但这确实解决了您每次构建新docker映像的厌恶情绪。