Kubernetes. emptyDir

Thank you for reading this post, don't forget to subscribe! 

emptyDir

Обыч­но исполь­зу­ет­ся для:

  • Раз­ме­ще­ния кеш файлов.
  • Дан­ных, кото­рые необ­хо­ди­мо сохра­нить при сбое в рабо­те контейнера.
  • Обме­на фай­ла­ми меж­ду несколь­ки­ми кон­тей­не­ра­ми в под.

Созда­ет­ся с подом. Уда­ля­ет­ся при уда­ле­нии пода.

При сбое в рабо­те пода и его даль­ней­ше­го само­вос­ста­нов­ле­ния (пере­за­пус­ка), дан­ные из это­го volume не уда­ля­ют­ся. Если под был уда­лен адми­ни­стра­то­ром и затем был авто­ма­ти­че­ски пере­за­пу­щен, дан­ные из volume будут удалены.

Мож­но раз­ме­стить в RAM (исполь­зу­ет­ся tmpfs). Но надо учи­ты­вать, что опе­ра­тив­ная память, выде­ля­е­мая под диск, учи­ты­ва­ет­ся в общем заче­те выде­ля­е­мой памя­ти для пода. И при пре­вы­ше­нии лими­та, при­хо­дит OOM Killer.

Ссыл­ка на API.

Воз­мож­ные параметры:

  • Medium – зна­че­ние по умол­ча­нию «». Если volume необ­хо­ди­мо раз­ме­стить в RAM, ука­зы­ва­ют зна­че­ние Memory.
  • sizeLimit – Общий объ­ем локаль­но­го хра­ни­ли­ща, необ­хо­ди­мый для тома emptyDir.

При­мер опре­де­ле­ния volume типа emptyDir:

Если не ука­зы­ва­ют­ся допол­ни­тель­ные пара­мет­ры, пишем {}. Ина­че явно ука­зы­ва­ем параметры:

volumes:
— name: empty-volume
  emptyDir:
    medium: «Memory»
     sizeLimit: 100m

При ини­ци­а­ли­за­ции созда­ёт­ся пустой volume. Если в нём необ­хо­ди­мо пред­ва­ри­тель­но создать струк­ту­ру фай­лов и дирек­то­рий, мож­но вос­поль­зо­вать­ся init контейнером.

В сле­ду­ю­щем при­ме­ре в поде опре­де­ля­ет­ся init кон­тей­нер, кото­рый запус­ка­ет­ся перед запус­ком основ­но­го кон­тей­не­ра и созда­ет в volume «empty-volume» файл «init-file». После завер­ше­ния рабо­ты init кон­тей­не­ра, запус­ка­ет­ся основ­ной кон­тей­нер в фай­ло­вой систе­ме кото­ро­го уже досту­пен файл «init-file».

Похо­жим обра­зом мож­но под­клю­чить один и тот же volume к двум обыч­ным кон­тей­не­рам внут­ри пода.