KubernetesにおけるRedisの適用について詳しく解説

WBOY
リリース: 2023-06-20 11:17:04
オリジナル
799 人が閲覧しました

Kubernetes は最新のコンテナ オーケストレーション システムであり、その強力な拡張性と信頼性は、開発、運用、保守の担当者にとって間違いなく非常に重要です。主要なアプリケーションの 1 つである Redis は、高性能のキャッシュとデータベースの組み合わせとして、Kubernetes での Redis のアプリケーションにますます注目を集めています。この記事では、Kubernetes での Redis のアプリケーションを詳しく紹介し、実際の事例を使用して、Kubernetes プラットフォーム上で Redis クラスター アプリケーションをデプロイ、管理、監視する方法を説明します。

  1. Redis の概要

Redis は、キャッシュ サービスとしても広く使用されている高性能 NoSQL データベースです。文字列、ハッシュ、リスト、セット、順序付きセットなどを含むさまざまなデータ構造をサポートします。 Redis は、データをメモリに保存することで、高いパフォーマンスと高速な応答時間を実現します。ディスクに保存されている従来のデータベースと比較して、Redis はクエリ リクエストに迅速に応答でき、高い同時実行性と多数の書き込み操作を適切に処理できます。

  1. Kubernetes の概要

Kubernetes は、Docker コンテナのデプロイ、スケーリング、管理に使用されるコンテナ オーケストレーション システムです。ロード バランシング、サービス ディスカバリ、自動スケーリング、ローリング アップグレードなどの多数の機能を提供します。これらの機能により、Docker コンテナのデプロイと管理がより簡単かつ信頼性の高いものになります。

  1. Kubernetes での Redis のデプロイ

Kubernetes では、StatefulSet と Deployment の 2 つの方法で Redis クラスターをデプロイできます。 StatefulSet は、Kubernetes のステートフル クラスター デプロイメント ソリューションであり、一意の ID と安​​定したネットワーク ID を必要とする秩序あるアプリケーションに適しています。デプロイはステートレス アプリケーションにより適しており、コンテナの作成、更新、削除などの操作をより柔軟に管理できます。

Redis クラスターをデプロイするときは、次の問題に注意する必要があります:

  • コンテナ内のデータは永続的に保存する必要があります。
  • Redis は特定のポート番号を使用して通信するには;
  • クラスター内のすべてのノードが相互にアクセスできる必要があります。

StatefulSet と Deployment を使用して Kubernetes に Redis をデプロイする方法を詳しく紹介します。

3.1 StatefulSet を使用して Redis をデプロイする

StatefulSet を使用して Redis をデプロイする場合は、次の準備を行う必要があります。

  • 永続ストレージ Redis データ用のストレージ ボリュームを作成する;
  • Redis 構成ファイルを書き込みます;
  • StatefulSet 記述ファイルを書き込みます。

Redis 構成ファイルの例:

bind 0.0.0.0
port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-announce-ip $(MY_POD_IP)
cluster-announce-port 6379
cluster-announce-bus-port 6380
ログイン後にコピー
ログイン後にコピー

StatefulSet 記述ファイルの例:

apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
  name: redis-cluster
spec:
  serviceName: "redis-cluster"
  replicas: 3
  selector:
    matchLabels:
      app: redis-cluster
  template:
    metadata:
      labels:
        app: redis-cluster
    spec:
      containers:
      - name: redis
        image: redis:latest
        args: ["redis-server", "/redis-config/redis.conf"]
        ports:
        - containerPort: 6379
          name: redis
        volumeMounts:
        - name: redis-data
          mountPath: /data
        - name: redis-config
          mountPath: /redis-config
        readinessProbe:
          tcpSocket:
            port: redis
          initialDelaySeconds: 5
          periodSeconds: 10
        env:
        - name: MY_POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
      volumes:
      - name: redis-data
        persistentVolumeClaim:
          claimName: redis-data
      - name: redis-config
        configMap:
          name: redis-config
  volumeClaimTemplates:
  - metadata:
      name: redis-data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi
ログイン後にコピー

redis-data という名前の永続ストレージ ボリュームを作成し、それを配置します。 Redis コンテナーの /data ディレクトリにより、コンテナーが削除または再作成されたときに Redis データが確実に存在することが保証されます。 StatefulSet 記述ファイル内のパラメーター レプリカは、起動される Redis インスタンスの数を定義します。

3.2 Deployment メソッドを使用して Redis をデプロイする

Deployment メソッドを使用して Redis をデプロイする場合は、次の準備を行う必要があります。

  • Redis 構成ファイルを書き込みます。
  • デプロイメント記述ファイルを書き込みます。

Redis 構成ファイルの例:

bind 0.0.0.0
port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-announce-ip $(MY_POD_IP)
cluster-announce-port 6379
cluster-announce-bus-port 6380
ログイン後にコピー
ログイン後にコピー

デプロイメント記述ファイルの例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
spec:
  selector:
    matchLabels:
      app: redis
  replicas: 3
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        image: redis:latest
        args: ["redis-server", "/redis-config/redis.conf"]
        ports:
        - containerPort: 6379
          name: redis
        volumeMounts:
        - name: redis-config
          mountPath: /redis-config
        readinessProbe:
          tcpSocket:
            port: redis
          initialDelaySeconds: 5
          periodSeconds: 10
        env:
        - name: MY_POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
      volumes:
      - name: redis-config
        configMap:
          name: redis-config
ログイン後にコピー

デプロイメント記述ファイルで、Redis コンテナーのインスタンスの数を 3 に設定します。 、configMap を使用して Redis 構成ファイルをマウントします。

  1. Kubernetes で Redis クラスターを管理する

Kubernetes で Redis クラスターを管理するには、次の問題を解決する必要があります。

  • 相互実行の方法クラスター通信 通信;##​​
  • #負荷分散を実行する方法;
  • Redis を監視およびデバッグする方法。
4.1 クラスター間の通信

Redis はクラスター内での通信とデータの同期を必要とするため、Kubernetes でクラスターを適切に調整する必要があります。具体的には、いくつかの特別な環境変数を StatefulSet 記述ファイルまたは Deployment 記述ファイルに追加するだけで、Redis クラスターの相互接続とデータ同期を実現できます。

Redis 記述ファイルの環境変数は次のとおりです。

- name: POD_NAMESPACE
  valueFrom:
    fieldRef:
      fieldPath: metadata.namespace
- name: STATEFUL_SET_NAME
  value: "redis-cluster"
- name: MASTER_NAME
  value: "redis-cluster-0.redis-cluster.headless.default.svc.cluster.local"
ログイン後にコピー

このうち、POD_NAMESPACE と STATEFUL_SET_NAME は、Redis クラスターの名前空間とステータス セット名の設定に使用されます。 MASTER_NAME は、Redis クラスターの設定に使用されるマスター ノードの名前です。

4.2 ロード バランシング

Kubernetes では、Service を使用して、Redis クラスターの複数のノードを同じ IP およびポートにバインドできます。このようにして、クラスターの高可用性を維持しながら、Redis クラスターを Kubernetes クラスター内でロード バランシングできます。

apiVersion: v1
kind: Service
metadata:
  name: redis
spec:
  selector:
    app: redis
  ports:
    - name: redis-service
      port: 6379
      targetPort: 6379
  clusterIP: None
ログイン後にコピー
サービス説明ファイルでは、clusterIP が None に設定されており、ヘッドレス サービスが作成されます。このタイプのサービスは、Redis ノードの ClusterIP を作成しませんが、リクエストを各ノードに直接転送します。ポッドIP。これにより、Redis クラスターの高可用性を維持しながら、Kubernetes でクラスターの負荷分散が可能になります。

4.3 Redis の監視とデバッグ

Kubernetes で Redis クラスターを監視およびデバッグするには、さまざまな方法があります。たとえば、Kubernetes Dashboard や Prometheus などの監視ツールを使用して、Redis の実行ステータスをリアルタイムで監視し、ログに記録できます。同時に、Kubectl コマンド ライン ツールを使用して、クラスターのステータスの表示、ノードの追加または削除、その他の操作などの Redis クラスターを管理できます。

  1. 概要

Kubernetes で StatefulSet と Deployment を使用すると、Kubernetes に Redis クラスターを簡単にデプロイし、負荷分散と高可用性を確保できます。 Kubernetes は、Redis クラスターの作成、更新、削除をより簡単に管理できる豊富な管理ツールを提供します。実際の運用環境では、Redis クラスターの安定性と高いパフォーマンスを確保するために、特定のビジネス ニーズに応じて構成および調整する必要があります。

以上がKubernetesにおけるRedisの適用について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!