GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menyebarkan Cluster Redis di Kubernetes

Pendahuluan

Redis adalah database NoSQL yang populer dan penyimpanan data dalam memori yang mendukung banyak struktur data abstrak. Ini termasuk string, daftar, hash, set, stream, dll. Redis menyediakan sintaks untuk mengakses struktur data yang dapat diubah, memungkinkan beberapa proses untuk membaca dan menulisnya dengan cara bersama.

Redis Cluster adalah kumpulan instance Redis yang secara otomatis melakukan sharding data di seluruh node. Menggunakan cluster memberi pengguna kemampuan untuk membagi set data mereka di antara node dan tetap menjalankan database bahkan ketika beberapa node gagal.

Tutorial ini akan menunjukkan cara men-deploy Redis Cluster di Kubernetes menggunakan ConfigMap dan Helm.

Prasyarat

  • Kluster Kubernetes yang terdiri dari dua atau lebih node
  • Helm 3 terpasang
  • kubectl 1.14 atau lebih sudah terpasang

Menyebarkan Redis di Kubernetes dengan ConfigMap

Langkah-langkah berikut menjelaskan cara mengonfigurasi cache Redis dan pod yang berisi instance Redis.

  1. Menggunakan editor teks, buat ConfigMap YAML yang akan menyimpan konfigurasi Redis.
nano redis-conf.yaml

2. Tentukan konfigurasi Redis Anda di data.redis-config bagian.

apiVersion: v1
kind: ConfigMap
metadata:
  name: test-redis-config
data:
  redis-config: |
    maxmemory 2mb
    maxmemory-policy allkeys-lru 

Contoh konfigurasi di atas menyetel maxmemory direktif dan memberi tahu Redis untuk menggunakan penyimpanan maksimum 2 MB untuk kumpulan data. maxmemory-policy direktif mendefinisikan prosedur yang akan diterapkan ketika batas memori tercapai. allkeys-lru pertama-tama hapus kunci yang jarang digunakan (LRU).

3. Simpan file dan keluar.

4. Buat ConfigMap dengan menerapkan file YAML.

kubectl apply -f redis-conf.yaml

Sistem mengonfirmasi bahwa operasi berhasil.

5. Buat manifes pod Redis.

nano redis-pod.yaml

6. Tentukan konfigurasi pod Anda.

apiVersion: v1
kind: Pod
metadata:
  name: redis
spec:
  containers:
  - name: redis
    image: redis:5.0.4
    command:
      - redis-server
      - "/redis-master/redis.conf"
    env:
    - name: MASTER
      value: "true"
    ports:
    - containerPort: 6379
    resources:
      limits:
        cpu: "0.1"
    volumeMounts:
    - mountPath: /redis-master-data
      name: data
    - mountPath: /redis-master
      name: config
  volumes:
    - name: data
      emptyDir: {}
    - name: config
      configMap:
        name: test-redis-config
        items:
        - key: redis-config
          path: redis.conf

Dalam contoh di atas, manifes mendefinisikan config volume dan pasang di /redis-master direktori pada pod. spec.volumes.items bagian kemudian memperlihatkan redis-config kunci dari ConfigMap yang dibuat sebelumnya sebagai redis.conf berkas.

7. Simpan file dan keluar.

8. Terapkan manifes pod dengan kubectl.

kubectl apply -f redis-pod.yaml

Sistem mengonfirmasi bahwa pembuatan pod berhasil.

9. Periksa status pod.

kubectl get pod

10. Masukkan pod yang dibuat dengan kubectl exec .

kubectl exec -it redis -- redis-cli

Konsol server Redis muncul:

11. Gunakan perintah PING untuk memeriksa apakah server online.

PING

Jika server berkomunikasi dengan konsol, ia mengembalikan PONG sebagai jawabannya.

Menyebarkan Redis di Kubernetes dengan Diagram Helm

Helm menyediakan cara cepat untuk menyiapkan cluster Redis menggunakan bagan Helm yang sudah dibuat sebelumnya.

1. Tambahkan repositori Helm yang berisi bagan Redis yang ingin Anda instal.

helm repo add [repo-name] [repo-address]

Artikel ini menggunakan bagan Redis yang tersedia di repositori Bitnami.

2. Perbarui repositori Helm lokal.

helm repo update

3. Gunakan helm install untuk menginstal grafik. Perintah dasarnya adalah sebagai berikut:

helm install redis-test bitnami/redis

Penting: Jika Anda memasang grafik di Minikube, bukan hal yang aneh jika pod terjebak dalam CrashLoopBackOff acara karena klaim volume yang tidak terikat. Untuk mencegah hal ini, gunakan --set opsi dan atur persistence.storageClass ke nfs-client untuk kedua polong.

Karena Redis disebarkan dengan izin volume non-administratif secara default, pod Redis mungkin tidak dapat berkomunikasi dengan server. Selesaikan masalah ini dengan menyetel volumePermissions ke true .

helm install terakhir perintah akan terlihat seperti ini:

helm install redis-test --set persistence.storageClass=nfs-client,redis.replicas.persistence.storageClass=nfs-client bitnami/redis --set volumePermissions.enabled=true

4. Ekspor sandi Redis sebagai variabel lingkungan.

export REDIS_PASSWORD=$(kubectl get secret --namespace default redis-test -o jsonpath="{.data.redis-password}" | base64 --decode)

5. Buat pod klien Redis yang akan Anda gunakan untuk mengakses database.

kubectl run --namespace default redis-client --restart='Never'  --env REDIS_PASSWORD=$REDIS_PASSWORD  --image docker.io/bitnami/redis:6.2.5-debian-10-r63 --command -- sleep infinity

Sistem mengonfirmasi pembuatan redis-client pod.

6. Masukkan pod klien dengan kubectl exec .

kubectl exec --tty -i redis-client --namespace default -- bash

Konsol klien muncul.

7. Gunakan redis-cli berikut ini perintah untuk mengakses instance master Redis:

redis-cli -h redis-test-master -a $REDIS_PASSWORD

Konsol untuk instance master ditampilkan.

8. Untuk mengakses replika, gunakan perintah yang sama, tetapi ubah targetnya.

redis-cli -h redis-test-replicas -a $REDIS_PASSWORD

9. Gunakan PING perintah untuk menguji koneksi dengan server.

PING

PONG tanggapan mengonfirmasi bahwa server mendengarkan.


Ubuntu
  1. Cara Menyebarkan dan Menjalankan Redis di Docker

  2. Cara Menyebarkan Load Balancing Nginx di Cluster Kubernetes di Ubuntu 18.04 LTS

  3. Cara men-deploy pod pertama Anda di Cluster Kubernetes

  1. Cara Mengatur Cluster Kubernetes dengan Rancher

  2. Cara Menyebarkan Elasticsearch di Kubernetes

  3. Cara Menyebarkan Instance WordPress di Kubernetes

  1. Cara Memasang Cluster Kubernetes di CentOS 7

  2. Cara Menyebarkan RabbitMQ di Kubernetes

  3. Cara Menyebarkan PostgreSQL di Kubernetes