12 Temmuz 2022 Salı

emptyDir Volume - Pod Silinince Bu Volume da Silinir

Giriş
Açıklaması şöyle. emptyDir volume Java'da temporary dosya, dizin yaratmak için idealdir.
This kind of Volume is created when a Pod is scheduled on a node. This volume is for the lifetime of the pod only. It gets deleted as soon as pod is terminated. All containers within the Pod share this volume. The use case for such a volume can be to use as a temporary space for applications internal work or use as a cache for improving the performance of applications. 
1. Pod içindeki tüm container'lar bu volume'a erişebilir. 
2. Pod başlarken bu dizin boştur
3. Pod silinince bu dizin de silinir
4. Eğer container çökerse bu dizin ve içindekiler kaybolmaz. Açıklaması şöyle
A container crashing does not remove a Pod from a node. The data in an emptyDir volume is safe across container crashes.
medium Alanı
Açıklaması şöyle
What type of storage medium should back this directory. The default is "" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
sizeLimit Alanı
Açıklaması şöyle
Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir

Kullanım
1. volumes bölümünde -name ile bir volume ismi belirtilir.
2. Bu volume için emptyDir belirtilir
3. İstenirse emptyDir bellekte te olabilir

Örnek - memory
Şöyle yaparız
apiVersion: v1
kind: Pod
metadata:
  name: my-server
spec:
  containers:
  - image: nginx
    name: my-server
    volumeMounts:
    - mountPath: /testcache
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir:
      medium: Memory
Örnek - TMP
Açıklaması şöyle
If you need to write temporary/cache files, fine, but since you are going to lose everything when that container dies, you shouldn't be writing anything of import within a container. Since you are only going to write temporary files, you really don't need your container to have a writable layer. Just mount a volume at /tmp and run your container with a read-only root file system. 
Şöyle yaparız. Burada tmp isimli emptyDir volume /tmp dizini olarak kullanılıyor. Ayrıca Linux'taki TMP ortam değişkeni de /tmp dizinine yönlendiriliyor.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: app
  template:
    metadata:
      labels:
        app.kubernetes.io/name: app
      name: app
    spec:
      containers:
      - env:
        - name: TMPDIR
          value: /tmp
        image: my/app:1.0.0
        name: app
        securityContext:
          readOnlyRootFilesystem: true
        volumeMounts:
        - mountPath: /tmp
          name: tmp
      volumes:
      - emptyDir: {}
        name: tmp
Örnek
Şöyle yaparız. Burada "grafana-storage" isimli volumeMounts bir emptyDir Volume'a atıfta bulunuyor.
grafana-datasources  isimli volumeMounts ile bir ConfigMap'e atıfta bulunuyor
apiVersion: apps/v1
kind: Deployment
metadata:
  name: grafana
  namespace: monitoring
spec:
  ...
  template:
    ...
    spec:
      containers:
      - name: grafana
        ...
        resources:
          ...
        volumeMounts:
          - mountPath: /var/lib/grafana
            name: grafana-storage
          - mountPath: /etc/grafana/provisioning/datasources
            name: grafana-datasources
            readOnly: false
      volumes:
        - name: grafana-storage
          emptyDir: {}
        - name: grafana-datasources
          configMap:
              defaultMode: 420
              name: grafana-datasources

Hiç yorum yok:

Yorum Gönder

Cluster Propotional Autoscaler - ReplicaSet Ekler/Siler

Giriş Açıklaması şöyle CPA aims to horizontally scale the number of Pod replicas based on the cluster’s scale. A common example is DNS ser...