GNU/Linux >> Linux の 問題 >  >> Ubuntu

KubernetesにRedisクラスターをデプロイする方法

はじめに

Redisは、人気のあるNoSQLデータベースであり、複数の抽象データ構造をサポートするインメモリデータストアです。これらには、文字列、リスト、ハッシュ、セット、ストリームなどが含まれます。Redisは、可変データ構造にアクセスするための構文を提供し、複数のプロセスが共有方法でそれらを読み書きできるようにします。

Redisクラスターは、ノード間でデータを自動的にシャーディングするRedisインスタンスのセットです。クラスタを使用すると、ユーザーはデータセットをノード間で分割し、一部のノードに障害が発生した場合でもデータベースを実行し続けることができます。

このチュートリアルでは、ConfigMapとHelmを使用してKubernetesにRedisクラスターをデプロイする方法を説明します。

前提条件

  • 2つ以上のノードで構成されるKubernetesクラスター
  • ヘルム3がインストールされています
  • kubectl1.14以降がインストールされています

ConfigMapを使用してKubernetesにRedisをデプロイする

次の手順では、RedisキャッシュとRedisインスタンスを含むポッドを構成する方法について説明します。

  1. テキストエディターを使用して、Redis構成を保存するConfigMapYAMLを作成します。
nano redis-conf.yaml

2. data.redis-configでRedis構成を指定します セクション。

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

上記の設定例では、 maxmemoryを設定しています ディレクティブであり、データセットに最大2MBのストレージを使用するようにRedisに指示します。 maxmemory-policy ディレクティブは、メモリ制限に達したときに適用される手順を定義します。 allkeys-lru まず、使用頻度の低い(LRU)キーを削除します。

3.ファイルを保存して終了します。

4.YAMLファイルを適用してConfigMapを作成します。

kubectl apply -f redis-conf.yaml

操作が成功したことをシステムが確認します。

5.Redisポッドマニフェストを作成します。

nano redis-pod.yaml

6.ポッド構成を指定します。

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

上記の例では、マニフェストは configを定義しています ボリュームを作成し、 /redis-masterにマウントします ポッド上のディレクトリ。 spec.volumes.items 次に、セクションで redis-configを公開します 以前に作成したConfigMapのキーをredis.confとして ファイル。

7.ファイルを保存して終了します。

8.kubectlを使用してポッドマニフェストを適用します。

kubectl apply -f redis-pod.yaml

システムは、ポッドの作成が成功したことを確認します。

9.ポッドのステータスを確認します。

kubectl get pod

10.作成したポッドをkubectl execで入力します

kubectl exec -it redis -- redis-cli

Redisサーバーコンソールが表示されます:

11. PINGコマンドを使用して、サーバーがオンラインであるかどうかを確認します。

PING

サーバーがコンソールと通信する場合、サーバーは PONGを返します。 答えとして。

ヘルムチャートを使用してKubernetesにRedisをデプロイする

Helmは、事前に作成されたHelmチャートを使用してRedisクラスターをセットアップする簡単な方法を提供します。

1.インストールするRedisチャートを含むHelmリポジトリを追加します。

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

この記事では、Bitnamiリポジトリで利用可能なRedisチャートを使用しています。

2.ローカルHelmリポジトリを更新します。

helm repo update

3. helm installを使用します チャートをインストールします。基本的なコマンドは次のとおりです。

helm install redis-test bitnami/redis

重要: チャートをMinikubeにインストールすると、ポッドが CrashLoopBackOffでスタックすることは珍しくありません。 バインドされていないボリュームクレームによるイベント。これを防ぐには、 --setを使用します オプションを選択し、 persistence.storageClassを設定します nfs-client 両方のポッド用。

Redisはデフォルトで非管理ボリューム権限でデプロイされているため、Redisポッドはサーバーと通信できない場合があります。 volumePermissionsを設定して、この問題を解決してください true

最後のhelm install コマンドは次のようになります:

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

4.Redisパスワードを環境変数としてエクスポートします。

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

5.データベースへのアクセスに使用するRedisクライアントポッドを作成します。

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

システムはredis-clientの作成を確認します ポッド。

6. kubectl execを使用してクライアントポッドに入ります

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

クライアントコンソールが表示されます。

7.次のredis-cliを使用します Redisマスターインスタンスにアクセスするコマンド:

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

マスターインスタンスのコンソールが表示されます。

8.レプリカにアクセスするには、同じコマンドを使用しますが、ターゲットを変更します。

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

9. PINGを使用します サーバーとの接続をテストするコマンド。

PING

PONG 応答は、サーバーがリッスンしていることを確認します。


Ubuntu
  1. DockerでRedisをデプロイして実行する方法

  2. Ubuntu18.04LTSのKubernetesクラスターにNginxロードバランシングをデプロイする方法

  3. 最初のポッドをKubernetesクラスターにデプロイする方法

  1. Rancherを使用してKubernetesクラスターをセットアップする方法

  2. KubernetesにElasticsearchをデプロイする方法

  3. KubernetesにWordPressインスタンスをデプロイする方法

  1. CentOS7にKubernetesクラスターをインストールする方法

  2. KubernetesにRabbitMQをデプロイする方法

  3. KubernetesにPostgreSQLをデプロイする方法