Rumah  >  Artikel  >  pangkalan data  >  Penjelasan terperinci tentang aplikasi Redis dalam Kubernetes

Penjelasan terperinci tentang aplikasi Redis dalam Kubernetes

WBOY
WBOYasal
2023-06-20 11:17:04758semak imbas

Kubernetes ialah sistem orkestrasi kontena moden. Skala dan kebolehpercayaannya yang kukuh sudah pasti sangat penting untuk pembangunan dan operasi serta kakitangan penyelenggaraan. Salah satu aplikasi utama ialah Redis Sebagai gabungan cache dan pangkalan data berprestasi tinggi, aplikasi Redis dalam Kubernetes telah menarik lebih banyak perhatian. Artikel ini akan memperkenalkan aplikasi Redis dalam Kubernetes secara terperinci dan menggunakan kes praktikal untuk menggambarkan cara menggunakan, mengurus dan memantau aplikasi kelompok Redis pada platform Kubernetes.

  1. Pengenalan kepada Redis

Redis ialah pangkalan data NoSQL berprestasi tinggi yang juga digunakan secara meluas sebagai perkhidmatan caching. Ia menyokong pelbagai struktur data, termasuk rentetan, cincang, senarai, set, set tersusun, dsb. Redis mencapai prestasi tinggi dan masa tindak balas yang pantas dengan menyimpan data dalam ingatan. Berbanding dengan pangkalan data tradisional yang disimpan pada cakera, Redis boleh bertindak balas kepada permintaan pertanyaan dengan lebih pantas dan boleh mengendalikan konkurensi tinggi dan sejumlah besar operasi tulis dengan baik.

  1. Pengenalan kepada Kubernetes

Kubernetes ialah sistem orkestrasi kontena untuk mengatur, menskala dan mengurus kontena Docker. Ia menyediakan pelbagai ciri, seperti pengimbangan beban, penemuan perkhidmatan, penskalaan automatik dan naik taraf rolling, dsb. Ciri ini boleh menjadikan penggunaan dan pengurusan bekas Docker lebih mudah dan lebih dipercayai.

  1. Menggunakan Redis dalam Kubernetes

Kluster Redis boleh digunakan dalam Kubernetes dengan menggunakan StatefulSet dan Deployment. StatefulSet ialah penyelesaian penggunaan kluster stateful dalam Kubernetes, sesuai untuk aplikasi teratur yang memerlukan pengenalan unik dan identiti rangkaian yang stabil. Penerapan lebih sesuai untuk aplikasi tanpa kewarganegaraan, dan ia boleh mengurus operasi dengan lebih fleksibel seperti penciptaan, kemas kini dan pemadaman bekas.

Apabila menggunakan gugusan Redis, anda perlu memberi perhatian kepada isu berikut:

  • Data dalam bekas perlu disimpan secara berterusan
  • Keperluan Redis untuk menggunakan No. port tertentu untuk berkomunikasi;
  • Semua nod dalam kelompok perlu boleh mengakses satu sama lain.

Mari perkenalkan secara terperinci cara menggunakan StatefulSet dan Deployment untuk menggunakan Redis dalam Kubernetes.

3.1 Gunakan StatefulSet untuk menggunakan Redis

Apabila menggunakan Redis menggunakan StatefulSet, anda perlu membuat persediaan berikut:

  • Buat volum storan untuk storan berterusan data Redis ;
  • tulis fail konfigurasi Redis;
  • Contoh fail konfigurasi 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

Contoh fail penerangan 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

Dengan mencipta volum storan berterusan bernama redis-data, dan Melekapkannya pada / direktori data bekas Redis memastikan bahawa data Redis masih wujud apabila bekas itu dipadamkan atau dibuat semula. Replika parameter dalam fail penerangan StatefulSet mentakrifkan bilangan kejadian Redis untuk dimulakan.

3.2 Gunakan Redis menggunakan kaedah Deployment

Apabila menggunakan Redis menggunakan kaedah Deployment, anda perlu membuat persediaan berikut:

Tulis fail konfigurasi Redis;
    Tulis fail penerangan Deployment.
  • Contoh fail konfigurasi 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
Contoh fail perihalan agihan:

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

Dalam fail penerangan Deployment, tetapkan bilangan kejadian bekas Redis kepada 3 , gunakan configMap melekapkan fail konfigurasi Redis.

Urus gugusan Redis dalam Kubernetes

  1. Menguruskan gugusan Redis dalam Kubernetes perlu menyelesaikan masalah berikut:

Bagaimana untuk menjalankan antara- komunikasi kelompok;

    Cara melakukan pengimbangan beban;
  • 4.1 Komunikasi antara gugusan
  • Memandangkan Redis memerlukan komunikasi dan penyegerakan data dalam gugusan, kami perlu membuat pelarasan yang sesuai pada gugusan dalam Kubernetes. Khususnya, anda hanya perlu menambah beberapa pembolehubah persekitaran khas pada fail penerangan StatefulSet atau fail penerangan Deployment untuk merealisasikan interkoneksi dan penyegerakan data gugusan Redis.
Pembolehubah persekitaran dalam fail perihalan Redis adalah seperti berikut:

- 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"

Antaranya, POD_NAMESPACE dan STATEFUL_SET_NAME digunakan untuk menetapkan ruang nama dan nama set status gugusan Redis. MASTER_NAME ialah nama nod Induk yang digunakan untuk menetapkan gugusan Redis.

4.2 Pengimbangan Beban

Dalam Kubernetes, anda boleh menggunakan Perkhidmatan untuk mengikat berbilang nod gugusan Redis ke IP dan port yang sama. Dengan cara ini, gugusan Redis boleh dimuatkan seimbang dalam gugusan Kubernetes sambil mengekalkan ketersediaan gugusan yang tinggi.

apiVersion: v1
kind: Service
metadata:
  name: redis
spec:
  selector:
    app: redis
  ports:
    - name: redis-service
      port: 6379
      targetPort: 6379
  clusterIP: None

Dalam fail perihalan Perkhidmatan, clusterIP ditetapkan kepada Tiada, yang akan mencipta Perkhidmatan Tanpa Kepala ini tidak akan mencipta ClusterIP untuk nod Redis, tetapi memajukan permintaan terus ke setiap nod IP. Ini membolehkan pengimbangan beban kelompok dalam Kubernetes sambil mengekalkan ketersediaan tinggi kelompok Redis.

4.3 Pemantauan dan nyahpepijat Redis

Terdapat banyak cara untuk memantau dan nyahpepijat gugusan Redis dalam Kubernetes. Sebagai contoh, anda boleh menggunakan alat pemantauan seperti Papan Pemuka Kubernetes atau Prometheus untuk memantau dan log status berjalan Redis dalam masa nyata. Pada masa yang sama, anda boleh menggunakan alat baris arahan Kubectl untuk mengurus gugusan Redis, seperti melihat status gugusan, menambah atau memadam nod dan operasi lain.

  1. Ringkasan

Dengan menggunakan StatefulSet dan Deployment dalam Kubernetes, kami boleh menggunakan gugusan Redis dalam Kubernetes dengan mudah dan memastikan pengimbangan beban dan ketersediaan yang tinggi. Kubernetes menyediakan pelbagai alatan pengurusan yang membolehkan kami mengurus penciptaan, kemas kini dan pemadaman gugusan Redis dengan lebih mudah. Dalam persekitaran pengeluaran sebenar, ia perlu dikonfigurasikan dan diselaraskan mengikut keperluan perniagaan tertentu untuk memastikan kestabilan dan prestasi tinggi kelompok Redis.

Atas ialah kandungan terperinci Penjelasan terperinci tentang aplikasi Redis dalam Kubernetes. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn