Home TürkçeGlusterFS Gluster ile Kubernetes Dinamik Birim Sağlama

Gluster ile Kubernetes Dinamik Birim Sağlama

by Fatih Boy
0 comment

Daha önceki makalelerde adım adım Kubernetes cluster’ımızı, ardından da Gluster cluster’ımızı kurmuştuk. Bu makelede ikisini nasıl birbirine entegre ederek Dynamic Volume Provisioning (Dinamik Birim Sağlama) yapabileceğimizi göreceğiz.

Kubernetes ile GlusterFS entegrasyonuna başlarken öncelikle Kubernetes Cluster’ının tüm worker node’larında GlusterFS Native Client kurulumu yapılmalıdır.

Ardından Kubernetes sunucusu üzerine Heketi kullanıcı adı ve şifre değerlerinin aşağıdaki şekilde base64 değerleri alınır;

echo -n [KULLANICI_ADI] | base64
echo -n [ŞİFRE] | base64
base64

Bu bilgiler kullanılarak Kubernetes’te ileriki adımlarda kullanacağımız secret’ler için aşağıdaki komutla heketi-secret.yaml adında bir dosya oluşturulur;

cat > heketi-secret.yaml<<EOF
---
apiVersion: v1
type: kubernetes.io/glusterfs
kind: Secret
metadata:
  name: heketi-secret
  namespace: default
data:
  user: YWRtaW4=
  key: TjNmNUJTTmlnbkxNS1pkS05vWjZtVmU0Wg==
EOF

Bu dosya yardımıyla aşağıdaki şekilde heketi-secret’leri oluşturulur;

kubectl create -f heketi-secret.yaml

Storage Class Oluşturulması

Aşağıdaki komut yardımıyla Storage class tanımının yer aldığı cluster-shared-storage.yaml dosyası oluşturulur;

cat > cluster-shared-storage.yaml<<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cluster.shared.storage
provisioner: kubernetes.io/glusterfs
parameters:
  resturl: "http://192.168.200.5:8080"
  clusterid: "5b9e8289c83ffb6e661bb4c31bffa6ee"
  restuser: "admin"
  secretNamespace: "default"
  secretName: "heketi-secret"
  volumetype: "replicate:2"
EOF

Not: Bu dosyada 192.168.200.5 adresi yerine Heketi sunucusu ip adresi verilmelidir.

Not: volumetype: “replicate:2” ifadesinde yer alan 2 değeri  replica sayısıdır. Kurulum yapılan sisteme göre güncellenmelidir.

Not: clusterid değeri önceki komutlardan alınan değerle değiştirilmelidir.

Oluşturulan dosya kullanılarak aşağıdaki komutla StorageClass oluşturulur;

kubectl create -f cluster-shared-storage.yaml

En az bir StorageClass’ın varsayılan olarak atanması gerekmektedir. Bu sebeple aşağıdaki komutla  cluster.shared.storage varsayılan olarak atanır;

kubectl patch storageclass cluster.shared.storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

Oluşturulan StorageClass aşağıdaki şekilde teyit edilebilir;

kubectl get storageclass
storageclass

Bu adımların ardından Kubernetes ile Gluster entegrasyonunu tamamlamış oluyoruz. Entegrasyonu test etmek isterseniz aşağıda örnek olarak verilen adımları takip edebilirsiniz.

Örnek

Aşağıda Nginx Pod’una 5gb’lık alanın bağlanmasına dair örnek adımlarını bulabilirsiniz.

Aşağıdaki komut yardımıyla gluster-pvc.yaml adıyla Persistent Volume Claim tanım dosyası oluşturulur;

cat > gluster-pvc.yaml<<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
   name: gluster1
   annotations:
      volume.beta.kubernetes.io/storage-class: cluster.shared.storage
spec:
   accessModes:
     - ReadWriteOnce
   resources:
     requests:
       storage: 5Gi
EOF

Oluşturulan dosya yardımıyla aşağıdaki komutla Persistent Volume Claim oluşturulur;

kubectl create -f gluster-pvc.yaml

Komut sonucu aşağıdaki şekilde kontrol edilebilir;

kubectl get pvc
get-pvc

Test Pod tanım dosyası nginx-pod.yaml adıyla ve aşağıdaki komutla oluşturulur;

cat > nginx-pod.yaml<<EOF
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod1
  labels:
    name: nginx-pod1
spec:
  containers:
  - name: nginx-pod1
    image: gcr.io/google_containers/nginx-slim:0.8
    ports:
    - name: web
      containerPort: 80
    volumeMounts:
    - name: gluster-vol1
      mountPath: /usr/share/nginx/html
  volumes:
  - name: gluster-vol1
    persistentVolumeClaim:
      claimName: gluster1
EOF

Aşağıdaki komutla pod oluşturulur;

kubectl create -f nginx-pod.yaml

Aşağıdaki komutla pod adresi öğrenilir;

kubectl get pods -o wide
get-pods-wide

Nginx içerisine girilerek index.html dosyası oluşturulur;

kubectl exec -ti nginx-pod /bin/sh
cd /usr/share/nginx/html
echo 'Hello World from GlusterFS!!!' > index.html
exit

Son olarak aşağıdaki komutla Nginx tarafından sunulan sayfaya ulaşılır;

curl [POD_IP]
kubectl-exec

Gluster kümesi üzerinde verilen Persistent Volume’ü teyit için Pod silinip tekrar oluşturulabilir. Yeni pod ip’si öğrebilerek curl ile yine istek yaptığınızda daha önceden oluşturduğunuz içeriğin geldiğini görebilirsiniz.

Şu Yazıları da Sevebilirsiniz

Leave a Comment

* Bu formu kullanarak, verilerinizin bu web sitesi tarafından saklanması ve kullanılmasını kabul ediyorsunuz.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bunu kabul ettiğinizi varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul Et Daha Fazla Bilgi