GlusterFS Kurulumu ve Heketi ile Dynamic Provisioning Nasıl Yapılır?
Authoradmin
18 Ekim 20225 dakika
Share
H/A bir object storage için GlusterFS güzel bir çözüm. Bu yazımda sizelere glusterfs kurulumu ve heketi ile nasıl dynamic provisioning yaptımızdan bahsedeceğim.
Örnek Enviroment aşağıdaki gibidir.
GlusterFS1 – 192.168.4.86
GlusterFS2 – 192.168.4.87
Bu yapıda Glusterfs1 nodunu aynı zamanda management için kullanacağız. Duruma göre +1 node management için ekleyebilirsiniz.
Öncelikle sunucular birbirinin adını çözebilmesi için hosts dosyasına ekleme yapıyoruz.
sudo cat >> /etc/hosts <<EOF
192.168.4.86 glusterfs1
192.168.4.87 glusterfs2
EOF
GlusterFS Kurulumu ve Heketi ile Dynamic Provisioning Nasıl Yapılır?
H/A bir object storage için GlusterFS güzel bir çözüm. Bu yazımda sizelere glusterfs kurulumu ve heketi ile nasıl dynamic provisioning yaptımızdan bahsedeceğim.
Örnek Enviroment aşağıdaki gibidir.
Bu yapıda Glusterfs1 nodunu aynı zamanda management için kullanacağız. Duruma göre +1 node management için ekleyebilirsiniz.
Öncelikle sunucular birbirinin adını çözebilmesi için hosts dosyasına ekleme yapıyoruz.
sudo cat >> /etc/hosts <<EOF
192.168.4.86 glusterfs1
192.168.4.87 glusterfs2
EOF
Şimdi Centos 7’de glusterfs kuruluma geçelim.
yum install -y centos-release-gluster
yum install -y glusterfs-server
systemctl enable glusterd
systemctl start glusterd
Varolan, sunucularımıza takılı diskleri listeliyoruz.
# fdisk -l
Disk /dev/vda: 17.2 GB, 17179869184 bytes, 33554432 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0002183f
Aygıt Açılış Başlangıç Bitiş BlokSayısı Kml Sistem
/dev/vda1 * 2048 2099199 1048576 83 Linux
/dev/vda2 2099200 33554431 15727616 8e Linux LVM
Disk /dev/mapper/centos-root: 14.4 GB, 14382268416 bytes, 28090368 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 1719 MB, 1719664640 bytes, 3358720 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Görüldüğü gibi /dev/vda olarak takılı bir disk gözüküyor. Her iki sunucuya sanallaştırma ortamımızdan yeni disk takıyoruz. Sunucuları reboot ediyoruz.
Sonrasında oluşturulan diskleri yapılandırmak için eklenen diski görüntülüyoruz. Örneğimizde /dev/sda olarak eklendiğini görmekteyiz.
# fdisk -l
Disk /dev/vda: 17.2 GB, 17179869184 bytes, 33554432 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0002183f
Aygıt Açılış Başlangıç Bitiş BlokSayısı Kml Sistem
/dev/vda1 * 2048 2099199 1048576 83 Linux
/dev/vda2 2099200 33554431 15727616 8e Linux LVM
Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x8262346b
Aygıt Açılış Başlangıç Bitiş BlokSayısı Kml Sistem
/dev/sda1 2048 104857599 52427776 8e Linux LVM
Disk /dev/mapper/centos-root: 14.4 GB, 14382268416 bytes, 28090368 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 1719 MB, 1719664640 bytes, 3358720 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Yeni diski lvm olarak yapılandırıyoruz.
fdisk /dev/sda
> n
> p
> 1
> t
> 8e
> w
> q
Glusterfs kurulumu tamamlandı şimdi management nodu olarak kullanacağımız GlusterFS1 noduna heketi kurulumuna geçiyoruz. Heketi Kubernetes ortamımızdan storage class ile dynamic provisioning yapmamızı sağlayacaktır.
yum install -y heketi heketi-client
Heketi’nin nodelara erişebilmesi için ssh-key oluşturuyoruz ve nodelara gönderiyoruz.
sudo -u heketi ssh-keygen
ssh-copy-id -i /var/lib/heketi/.ssh/id_rsa 192.168.4.86
ssh-copy-id -i /var/lib/heketi/.ssh/id_rsa 192.168.4.87
Heketi configini aşağıdaki gibi düzenliyoruz.
vim /etc/heketi/heketi.json
###
“executor”: “ssh”,
“_sshexec_comment”: “SSH username and private key file information”,
“sshexec”: {
“keyfile”: “/var/lib/heketi/.ssh/id_rsa”,
“user”: “root”,
“port”: “22”,
“fstab”: “/etc/fstab”
},
###
Heketiyi başlatıyoruz.
systemctl enable heketi
systemctl start heketi
Test ediyoruz.
curl http://localhost:8080/hello
Hello from Heketi
Cluster oluşturuyoruz.
export HEKETI_CLI_SERVER=http://localhost:8080
heketi-cli cluster create mycluster
Clusterımıza nodelarımızı ekliyoruz. ClusterID kısımlarına bir önceki komutun çıktısındaki cluster id verisini yazıyoruz.
heketi-cli node add --cluster=ClusterID --zone=1 --management-host-name=glusterfs1 --storage-host-name=HOST_IP
heketi-cli node add --cluster=ClusterID --zone=1 --management-host-name=glusterfs2 --storage-host-name=HOST_IP
GlusterFS nodelarımıza eklediğimiz diskleri clusterımıza tanımlıyoruz.
heketi-cli device add --name=/dev/sda1 --node=NodeID1
heketi-cli device add --name=/dev/sda1 --node=NodeID2
Evet, glusterfs ve heketi kurulumumuz tamamlandı. Şimdi bir volume oluşturalım.
heketi-cli volume create --size 10 --replica 2
GlusterFS clusterımızda yapacağımız işlemler bu kadar. Kubernetes ortamımıza geçip bir storage cluster oluşturuyoruz.
cat > gluster-dyn-sc.yml << EOF
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
name: gluster-heketi
provisioner: kubernetes.io/glusterfs
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
parameters:
resturl: "http://192.168.4.86:8080"
restauthenabled: "false"
volumetype: "replicate:2"
volumenameprefix: "k8s-dev"
clusterid: "CLUSTER_ID"
EOF
kubectl apply -f gluster-dyn-sc.yml
Persistent volume claim oluşturup test ediyoruz.
cat > gluster-dyn-pvc.yml <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: gluster-dyn-pvc
annotations:
volume.beta.kubernetes.io/storage-class: gluster-dyn
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
EOF
kubectl apply -f gluster-dyn-pvc.yml
Persistent volume claimleri listeleyerek STATUS kısmını Bound olarak görüyoruz.
kubectl get pvc
NAME STATUS CAPACITY ACCESS MODES STORAGECLASS AGE
gluster-dyn-pvc Bound 50Gi RWX gluster-dyn 8m