Kubernetes Etcd Otomatik Yedekleme (Etcd Backup) : Cron Job Kullanımı

Kubernetes Etcd Otomatik Yedekleme (Etcd Backup) : Cron Job Kullanımı 1
Etcd Otomatik Yedekleme

Kubernetes, modern uygulamaların yönetimi için kullanılan popüler bir açık kaynak platformdur. Bu platformun temel bileşenlerinden biri de veri depolama sistemi olan etcd’dir. Etcd, Kubernetes’teki tüm yapılandırma ve durum bilgilerinin saklandığı anahtarlama değer deposudur. Ancak, etcd’nin yedeklenmesi ve geri yüklenmesi zorlu bir işlemdir. Bu makalede, Kubernetes etcd yedeklerinin nasıl oluşturulabileceği ve bu işlemin nasıl otomatikleştirilebileceği ele alınacaktır.

Kubernetes, dağıtılmış uygulama ve hizmetleri yönetmek için kullanılan popüler bir platformdur. Bu platform, uygulamalar için gereken kaynakları dinamik olarak atar ve uygulama ölçeklendirmesi, ağ yönetimi, girişim orkestrasyonu ve depolama yönetimi gibi birçok özellik sunar. Ancak, bu özelliklerin tamamında etcd adlı bir veritabanı kullanılır. Etcd, Kubernetes’in anahtarlama değer deposudur ve tüm yapılandırma ve durum bilgileri burada saklanır. Bu nedenle, etcd’nin yedeklenmesi son derece önemlidir.

Etcd Yedeklemesi

Etcd yedeklemesi, mevcut etcd kümesinin tüm durum bilgilerini yedeklemeyi içerir. Bu yedekleme işlemi, Kubernetes yapılandırması ve uygulama durumu gibi tüm verileri kapsar. Bu nedenle, yedekleme işlemi son derece önemlidir ve düzenli olarak yapılmalıdır.

Manuel Yedekleme İşlemi

Manuel yedekleme işlemi, etcd kümesindeki tüm verilerin elle yedeklenmesini gerektirir. Bu işlem, etcdctl aracılığıyla gerçekleştirilebilir. Etcdctl, etcd kümesine erişmek için kullanılan bir komut satırı aracıdır. Aşağıdaki adımlar, manuel yedekleme işlemi için bir örnek göstermektedir:

  1. etcdctl snapshot save /path/to/etcd-backup.db
  2. backup dosyasını ilgili yerde saklayın.

Detaylı etcd yedekleme yazısı için bknz: Kubernetes etcd Yedekleme ve Geri Yükleme (2 Farklı Yöntem)

Sertifika ile:

etcdctl –endpoints=https://127.0.0.1:2379 \
–cacert=/ca.file –cert=/cert.pem –key=/key.pem \
snapshot save /save/location

1.Adım

Kubernetes Etcd Otomatik Yedekleme (Etcd Backup) : Cron Job Kullanımı 3
Kubernetes Etcd Otomatik Yedekleme (Etcd Backup) : Cron Job Kullanımı 7

yedekleme başladı:

Kubernetes Etcd Otomatik Yedekleme (Etcd Backup) : Cron Job Kullanımı 5
Kubernetes Etcd Otomatik Yedekleme (Etcd Backup) : Cron Job Kullanımı 8

Snapshot saved at /xxx yazsını gördüğünüzde başarıyla tamamlanmış demektir.

ETCD Otomatik Yedekleme İşlemi

Etcd Otomatik yedekleme işlemi, manuel yedekleme işleminin otomatikleştirilmesini gerektirir. Bu işlem, Kubernetes’teki CronJob nesneleri aracılığıyla gerçekleştirilebilir. CronJob, belirli bir zamanlama planı dahilinde tekrarlanan işlemleri otomatikleştirmek için kullanılır. Aşağıdaki adımlar, otomatik yedekleme işlemi için bir örnek göstermektedir:

  1. Bir Kubernetes CronJob nesnesi oluşturun ve yedekleme işlemini yürütmek için etcdctl snapshot aracını kullanın.
  2. CronJob, belirli bir zamanlama planı dahilinde tekrarlanacak şekilde ayarlanmalıdır.

Önce bakmak isteyebilirsiniz: Crontab Nedir ve Kullanım Örnekleri ve Cron Job Oluşturucu

Job ile etcd Otomatik Yedekleme

  1. Bir Kubernetes job’u oluşturun örnek:
apiVersion: batch/v1
kind: Job
metadata:
  name: etcd-backup-job
spec:
  template:
    spec:
      containers:
        - name: etcd-backup
          image: <etcd-image>
          command: ["/bin/sh", "-c"]
          args: ["etcdctl snapshot save /data/etcd-backup.db --endpoints=<etcd-endpoint> --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key"]
          volumeMounts:
            - name: etcd-certs
              mountPath: /etc/kubernetes/pki/etcd
            - name: etcd-data
              mountPath: /data
      restartPolicy: Never
      volumes:
        - name: etcd-certs
          secret:
            secretName: <etcd-certs-secret>
        - name: etcd-data
          emptyDir: {}
  backoffLimit: 0

Bu job, belirtilen image’da çalışan bir konteyner kullanarak etcd yedekleme işlemini gerçekleştirir. “–endpoints” parametresi, etcd sunucusunun adresini belirtir. “–cacert”, “–cert” ve “–key” parametreleri, etcd sunucusuyla iletişim kurmak için gerekli olan sertifikaları belirtir. Yedekleme dosyası “/data/etcd-backup.db” olarak kaydedilir. Yedeklemelerin depolanacağı konumda “/data” isimli bir volume tanımlanmalıdır.

2. Bir CronJob oluşturun örnek:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: etcd-backup-cronjob
spec:
  schedule: "0 */12 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            - name: etcd-backup
              image: <etcd-image>
              command: ["/bin/sh", "-c"]
              args: ["etcdctl snapshot save /data/etcd-backup.db --endpoints=<etcd-endpoint> --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key"]
              volumeMounts:
                - name: etcd-certs
                  mountPath: /etc/kubernetes/pki/etcd
                - name: etcd-data
                  mountPath: /data
          restartPolicy: Never
          volumes:
            - name: etcd-certs
              secret:
                secretName: <etcd-certs-secret>
            - name: etcd-data
              emptyDir: {}
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 3

Backuplara tarih ekleme

Not: karışmaması için .db den önce ” $(date +%Y-%m-%dT%H:%M) ” yazıp tarih saat eklenebilir backup adına.

Belirli bir zaman aralığında etcd otomatik yedekleme işlemini gerçekleştirecektir.(Zaman aralığını nasıl ayarlayacağınızı bilmiyorsanız https://cankutahya.com.tr/cron-olusturucu/ kullanabilirsiniz.) “schedule” parametresi, yedekleme işleminin hangi sıklıkla gerçekleştirileceğini belirtir. Örneğin, yukarıdaki CronJob her 12 saatte bir yedekleme işlemini gerçekleştirecektir.

  1. İlgili sertifikaları oluşturun ve bir secret olarak kaydedin:

Etcd sunucusuyla iletişim kurmak için gerekli olan sertifikaları oluşturun ve bir secret olarak kaydedin. Bu sertifikalar, Kubernetes job ve CronJob’larında kullanılacaktır.

  1. Job ve CronJob’ları Kubernetes cluster’ınıza apply edin:

Önce Job’u aşağıdaki komutla apply edin:

kubectl apply -f job.yaml

Daha sonra CronJob’u aşağıdaki komutla apply edin:

kubectl apply -f cronjob.yaml

Bu işlemleri tamamladıktan sonra, etcd yedeklemeleri belirli aralıklarla otomatik olarak oluşturulacaktır. Yedeklemeler “/data” volume’unda depolanacaktır. Yedekleme dosyalarını manuel olarak almak veya geri yüklemek isterseniz, yukarıda anlatılan etcdctl komutlarını kullanabilirsiniz.

/data’yı nfs olarak bağlayıp yedeklemeyi uzak bir sunucuda tutabilirsiniz.

Etcd Yedekleme Geri Yükleme

Etcd yedekleri, aynı veya farklı bir etcd kümesinde yeniden kullanılabilir. Bu işlem, yedek dosyasının etcd kümesine geri yüklenmesini gerektirir. Aşağıdaki adımlar, etcd yedek dosyasının geri yüklenmesi için bir örnek göstermektedir:

  1. etcdctl snapshot restore /path/to/etcd-backup.db
  2. Geri yükleme işlemi tamamlandıktan sonra etcd kümesinin durumunu kontrol edin.

Sonuç

Etcd otomatik yedeklemeleri, Kubernetes’teki önemli verilerin güvenliği için son derece önemlidir. Manuel yedekleme işlemi zaman alıcı ve hata yapma olasılığı yüksektir. Bu nedenle, otomatik yedekleme işlemleri kullanarak yedekleme işleminin otomatikleştirilmesi önerilir. Ayrıca, yedekleme dosyalarının doğru şekilde saklanması ve güncel tutulması da önemlidir. Bu makalede, Kubernetes etcd yedeklemelerinin nasıl oluşturulabileceği ve otomatikleştirilebileceği konuları ele alınmıştır.

Sıkça Sorulan Sorular

Etcd yedeklemeleri neden önemlidir?

C: Etcd yedeklemeleri, etcd cluster’ının verilerini kaybetme veya hasar görme durumunda verilerin kurtarılmasını sağlar. Yedeklemeler, veri kaybını önlemenin yanı sıra, hatalı yapılandırma veya kullanıcı hataları gibi durumlarda da kullanılabilir.

Etcd yedeklemeleri ne sıklıkla alınmalıdır?

Etcd yedeklemeleri, önemli verilerin korunması için düzenli olarak alınmalıdır. Yedekleme sıklığı, etcd cluster’ının büyüklüğüne ve iş yüküne göre değişebilir. Genellikle, yedekleme işlemi günlük veya haftalık olarak gerçekleştirilir.

Etcd yedekleme işlemi nasıl otomatik hale getirilebilir?

Etcd yedekleme işlemi Kubernetes Job ve CronJob’ları ile otomatik hale getirilebilir. Bu, belirli bir zaman aralığında yedekleme işleminin otomatik olarak gerçekleştirilmesini sağlar.

Etcd yedekleme ve geri yükleme işlemleri için hangi araçlar kullanılabilir?

Etcd yedekleme ve geri yükleme işlemleri için birçok araç mevcuttur. En yaygın kullanılan araçlar arasında etcdctl, Velero, Heptio Ark, Kube-backup gibi araçlar bulunur. Bu araçlar, yedekleme işlemini otomatikleştirmek, yedekleme dosyalarını yönetmek ve geri yükleme işlemini kolaylaştırmak için kullanılabilir.

Kubernetes Etcd Backup

Kubernetes, a popular open-source platform used for managing modern applications. One of the key components of this platform is etcd, a data storage system. Etcd is a key-value store where all configuration and state information in Kubernetes is stored. However, backing up and restoring etcd can be a challenging process. In this article, we will discuss how to create Kubernetes etcd backups and how this process can be automated.

Etcd Backup

Etcd backup involves backing up all state information for the current etcd cluster. This backup process covers all data such as Kubernetes configuration and application state. Therefore, the backup process is crucial and should be done regularly.

Manual Backup Process

The manual backup process involves manually backing up all data in the etcd cluster. This process can be done using etcdctl. Etcdctl is a command-line tool used to access an etcd cluster. The following steps show an example for the manual backup process:

etcdctl snapshot save /path/to/etcd-backup.db

Store the backup file in the desired location.

For a detailed guide on etcd backup, see Kubernetes etcd Backup and Restore (Two Methods)

With Certificate:

etcdctl –endpoints=https://127.0.0.1:2379 \
–cacert=/ca.file –cert=/cert.pem –key=/key.pem \
snapshot save /save/location

Step 1

Backup Started: When you see the message Snapshot saved at /xxx it means the backup process is complete.

Automating Etcd Backup Process

Automating the etcd backup process involves automating the manual backup process. This process can be done using CronJob objects in Kubernetes. CronJob is used to automate recurring jobs at specific intervals. The following steps show an example for automating the backup process:

Create a Kubernetes CronJob object and use the etcdctl snapshot tool to run the backup process.

The CronJob should be set to run at specific intervals.

You may want to check out: What is Crontab and Usage Examples and Cron Job Generator

Job with Etcd Automatic Backup

Create a Kubernetes job, for example:

apiVersion: batch/v1
kind: Job
metadata:
name: etcd-backup-job
spec:
template:
spec:
containers:
– name: etcd-backup
image:
command: [“/bin/sh”, “-c”]
args: [“etcdctl snapshot save /data/etcd-backup.db –endpoints= –cacert=/etc/kubernetes/pki/etcd/ca.crt –cert=/etc/kubernetes/pki/etcd/server.crt –key=/etc/kubernetes/pki/etcd/server.key”]

Yorum yapın