Sto cercando un modello che permetta di condividere i volumi tra due contenitori in esecuzione sullo stesso pod in Kubernetes.Come imitare "--volumes-from" in Kubernetes
Il mio caso d'uso è: Ho un'applicazione Ruby on Rails in esecuzione all'interno di un container. L'immagine della finestra mobile contiene risorse statiche nella directory /app/<app-name>/public
e ho bisogno di accedere a tali risorse dal contenitore nginx che si trova a fianco nello stesso contenitore.
In 'vanilla' finestra mobile avrei usato --volumes-from
bandiera a condividere questa directory:
docker run --name app -v /app/<app-dir>/public <app-image>
docker run --volumes-from app nginx
Dopo aver letto questo documento: https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/volumes.md Ho provato questo (solo le voci rilevanti presentate):
spec:
containers:
- image: <app-image>
name: <app-name>
volumeMounts:
- mountPath: /app/<app-name>/public
name: assets
- image: nginx
name: nginx
volumeMounts:
- mountPath: /var/www/html
name: assets
readOnly: true
volumes:
- name: assets
hostPath:
path: /tmp/assets
Ma:
- Anche se
/tmp/assets
sul nodo esiste, è vuota /app/<app-name>/public
all'interno del contenitore app è anche vuoto
Per aggirare il problema sarò cerco di popolare la directory condivisa quando il contenitore applicazione è alto (semplicemente cp /app/<app-name>/public/*
alla directory condivisa), ma non mi piace davvero questa idea.
Domanda: come per imitare --volumes-from
in kubernetes, o se non v'è alcuna controparte, Come posso condividere i file da un contenitore ad un altro in esecuzione nello stesso pod?
apiVersion: v1beta3
Client Version: version.Info{Major:"0", Minor:"17", GitVersion:"v0.17.0", GitCommit:"82f8bdac06ddfacf493a9ed0fedc85f5ea62ebd5", GitTreeState:"clean"}
Server Version: version.Info{Major:"0", Minor:"17", GitVersion:"v0.17.0", GitCommit:"82f8bdac06ddfacf493a9ed0fedc85f5ea62ebd5", GitTreeState:"clean"}
La risposta di @aronchick è stata preziosa, ma la risposta è la migliore per il mio caso d'uso, quindi accetto, grazie. – cthulhu
Qui vedo alcuni problemi: 1. Cosa succede quando due pod funzionano sullo stesso nodo? 2. Che cosa accadrà in un aggiornamento continuo? Quando due diverse versioni di pod vengono eseguite sullo stesso nodo, si sovrascrivono reciprocamente. – Alex
@Alex Io uso solo hostDir, ad esempio, puoi usare emptyDIr, quindi non ci sarà alcun problema di sovrascrittura. Guarda il mio succo che ho postato. – harryz