2015-08-29 23 views
5

Quindi sto studiando come utilizzare Kubernetes per il mio caso. L'ho installato e ho giocato un po '.Come passare l'id dell'istanza del pod kubernetes all'interno del pod all'avvio?

La domanda è: quando il controller replica inizia paio di repliche che hanno qualcosa di simile a un id a loro nome:

  1. Come unica è questo id? È l'unicità per tutta la vita dei kubernetes? È univoco tra diverse esecuzioni di kubernetes (vale a dire se riavvio kubernetes)?
  2. Come passare questo ID all'app nel contenitore? Posso specificare qualche tipo di template nello yaml così ad esempio l'id sarà assegnato alla variabile d'ambiente o qualcosa di simile?
  3. In alternativa esiste un modo per l'app nel contenitore per chiedere questo ID?

Ulteriori spiegazioni del caso d'uso. Ho un'applicazione che scrive alcuni file di sessione in una directory. Voglio garantire univoci per gli ID di sessione nel sistema. Ciò significa che se un'istanza di app è in esecuzione su VM1 e un'altra istanza su VM2, voglio anteporre qualche tipo di identificatore agli id ​​come app-1-dajk4l e app-2-dajk4l, dove app è il nome dell'app e 1 , 2 è l'identificativo dell'istanza, che dovrebbe provenire dal controller di replica perché è dinamico e non può essere configurato manualmente. dajk4l è un identificatore come il timestamp attuale o simile.

Grazie.

risposta

8
  1. L'ID è garantito per essere unico in ogni singolo punto nel tempo, dal momento che kubernetes non consentire a due baccelli nello stesso spazio dei nomi per avere lo stesso nome. Non ci sono tuttavia garanzie a lungo termine, dal momento che sono solo generated as a random string of 5 alphanumeric characters. Tuttavia, dato che ci sono più di 60 milioni di stringhe casuali, i conflitti nel tempo sono anche improbabili nella maggior parte degli ambienti.

  2. Sì, si può tirare in spazio dei nomi e il nome del pod come variabili d'ambiente utilizzando quello che viene chiamato il "Downward API", l'aggiunta di un campo sul contenitore come env: - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name

+0

Freddo, grazie! Per qualche ragione ho ignorato l'argomento dell'API verso il basso, perché la parola API ha pensato che non fosse ciò di cui avevo bisogno. – bobef

Problemi correlati