volumes

https://redhat-scholars.github.io/kubernetes-tutorial/kubernetes-tutorial/volumes-persistentvolumes.html

Static

Statik provizyon, küme yöneticilerinin mevcut depolama aygıtını aktif eder. Bu şekilde yapıldığında PV ve PVC manuel olarak sağlanmalıdır.

Dynamic Provisioning

kullanıcı istediği zaman depolama aracını kullanabilir. Bunun için storageclass lazım. Bu storageclasstan alan isteyen bir pvc.

static pv

https://github.com/edib/kubernetes/tree/master/yamls/nfs-pv

pv


apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: nfs
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /srv/nfs4
    server: 10.0.0.253

pvc

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-client-pvc
spec:
  storageClassName: nfs-client
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi

deployment

 apiVersion: v1
kind: Pod
metadata:
  name: nginx-pv-pod-sc
spec:
  volumes:
    - name: nginx-pv-storage
      persistentVolumeClaim:
        claimName: nfs-client-pvc
  containers:
    - name: nginx
      image: nginx
      ports:
        - containerPort: 80
          name: "nginx-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: nginx-pv-storage
 

nfs provisioner

https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
    --set nfs.server=x.x.x.x \
    --set nfs.path=/exported/path

Alternatif

https://github.com/edib/kubernetes/tree/master/yamls/nfs-provisioner

  • 1 kere provisioner üretince bir daha pv üretmeye gerek kalmıyor.

  • Helm ile nfs provisioner üzerinden loki stack kurulumu

helm repo add grafana https://grafana.github.io/helm-charts

helm show grafana/loki-stack > ../../helm/values.yaml
#values.yaml
loki:
  enabled: true
  persistence:
    enabled: true
    storageClass: nfs-client
    size: 1G

promtail:
  enabled: true

grafana:
  enabled: true
  sidecar:
    datasources:
      enabled: true
  image:
    tag: 8.1.6

prometheus:
  enabled: true
  persistence:
    enabled: true
    storageClass: nfs-client
    size: 1G
helm install loki-stack grafana/loki-stack --values values.yaml -n monitoring --create-namespace

default storage class olan yerlerde pvc kullanımı


kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: myboot-volumeclaim
spec:
  storageClassName: pv-demo
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Mi

--- 

apiVersion: v1
kind: Pod
metadata:
  name: myboot-demo
spec:
  containers:
  - name: myboot-demo
    image: quay.io/rhdevelopers/myboot:v4

    volumeMounts:
    - mountPath: /tmp/demo
      name: demo-volume

  volumes:
  - name: demo-volume
    persistentVolumeClaim:
      claimName: myboot-volumeclaim