我已经在我的组织中部署了一个 kubernetes 基础架构并扩展了我的应用程序,但有时它需要自定义修改,所以我需要一次又一次地更改和提交我的图像,然后拉该图像以查看我的更改。无论如何,我可以通过它提交我的 pod 并将其用作复制到其他 pod 的实例,能否请一些人建议如何在不一次又一次提交基础映像的情况下克服这个问题。
问问题
1400 次
1 回答
0
作为一般规则,我认为通过本地测试而不是“在生产中测试”会好得多。那说:
我可以想象卷挂载一个共享文件系统(例如 NFS),使您能够在传播到相关 Pod 时进行更改。
或者,如果这不可用,则更改command:
Pod 以在底层映像之上克隆一个 repo:
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 映像的反感。
于 2018-08-10T02:57:20.387 回答