国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kubernetes(k8s)部署高可用多主多從的Redis集群

這篇具有很好參考價值的文章主要介紹了Kubernetes(k8s)部署高可用多主多從的Redis集群。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

環(huán)境準備

準備Kubernetes

首先你需要一個Kubernetes集群,如圖我已經安裝好了一個Kubernetes集群:
Kubernetes(k8s)部署高可用多主多從的Redis集群,kubernetes,redis,容器

如果你還沒有Kubernetes集群可參考我寫的文章:https://blog.csdn.net/m0_51510236/article/details/130842122

準備存儲類

你還需要一個可動態(tài)供應的存儲類,我之前已經寫過一篇關于安裝NFS動態(tài)供給存儲類的文章:https://blog.csdn.net/m0_51510236/article/details/132641343(這篇文章的上半部分),如圖我已經安裝好了一個NFS的存儲類(名字為 nfs-client):
Kubernetes(k8s)部署高可用多主多從的Redis集群,kubernetes,redis,容器

部署redis

我之前寫過一篇在物理機上安裝高可用多主多從的redis集群的文章:https://blog.csdn.net/m0_51510236/article/details/132684529,這篇文章參考的那片物理機上安裝集群的步驟來。

準備一個命名空間

為了貼近生產環(huán)境,我們先創(chuàng)建一個命名空間:

命令創(chuàng)建

kubectl create namespace deploy-test

yaml文件創(chuàng)建(推薦)

apiVersion: v1
kind: Namespace
metadata:
  name: deploy-test
spec: {}
status: {}

準備redis配置文件

首先我們需要一個Redis的配置文件,我已經準備好了,注意名字命名為 redis.conf

# 關閉保護模式
protected-mode no

# 日志級別
loglevel warning

# 日志存放目錄
logfile "/data/redis.log"

# 數據文件目錄
dir /data
dbfilename dump.rdb

# 數據庫數量
databases 16

# 保存數據庫到數據文件
save 900 1
save 300 10
save 60 10000

# 集群相關配置
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000

先把這個文件復制到服務器上,如圖:
Kubernetes(k8s)部署高可用多主多從的Redis集群,kubernetes,redis,容器

然后我們需要創(chuàng)建一個ConfigMap,可以直接通過下面命令生產ConfigMap的yaml資源清單文件:

kubectl create configmap redis-cluster-config --from-file=redis.conf -n deploy-test --dry-run=client -o yaml

生成了如圖:
Kubernetes(k8s)部署高可用多主多從的Redis集群,kubernetes,redis,容器

因為我們真實部署中可能還會將這個應用部署到其他集群,所以我們記得保存這個配置文件:

apiVersion: v1
data:
  redis.conf: |
    # 關閉保護模式
    protected-mode no

    # 日志級別
    loglevel warning

    # 日志存放目錄
    logfile "/data/redis.log"

    # 數據文件目錄
    dir /data
    dbfilename dump.rdb

    # 數據庫數量
    databases 16

    # 保存數據庫到數據文件
    save 900 1
    save 300 10
    save 60 10000

    # 集群相關配置
    cluster-enabled yes
    cluster-config-file nodes-6379.conf
    cluster-node-timeout 15000
kind: ConfigMap
metadata:
  name: redis-cluster-config
  namespace: deploy-test

我們將這個內容保存到一個文件中,如 redis-deploy.yaml
Kubernetes(k8s)部署高可用多主多從的Redis集群,kubernetes,redis,容器

準備部署statefulset的資源清單文件

資源清單文件我已經準備好了,下面有詳細的說明:

# 創(chuàng)建一個Redis部署要用到的Service
apiVersion: v1
kind: Service
metadata:
  name: deploy-redis-svc
  namespace: deploy-test
  labels:
    app: redis
spec:
  ports:
  - port: 6379
    name: redis
    targetPort: 6379
    nodePort: 30379
  selector:
    app: redis
  type: NodePort
  sessionAffinity: ClientIP

---

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: deploy-redis
  namespace: deploy-test
spec:
  selector:
    matchLabels:
      app: redis
  # 引用上面定義的Service
  serviceName: "deploy-redis-svc"
  # 注意這里部署六個節(jié)點,按照本篇文章的邏輯最好不要修改
  replicas: 6
  template:
    metadata:
      labels:
        app: redis
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - command:
      	# 這里指定使用那個配置文件啟動redis-server
        - "redis-server"
        - "/usr/local/etc/redis.conf"
        name: redis
        # 因為redis6集群對域名支持不好,并且Kubernetes是需要通過域名連接各個pod的,所以我們采用redis7來完成這次部署
        # 如果你能拉取到DockerHub上的鏡像那么你就使用這個
        # image: docker.io/library/redis:7.0.12
        # 如果你拉取不到,那么就使用我拉取并推送到國內阿里云的鏡像
        image: registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/redis:7.0.12
        ports:
        - containerPort: 6379
          name: redis
        volumeMounts:
        # 掛載redis的數據卷,使用的是我在下面聲明的存儲類模版
        - name: redis-data
          mountPath: /data
        # 掛載redis的配置文件
        - name: redis-config
          mountPath: /usr/local/etc
          readOnly: true
      volumes:
      # 讀取configmap,獲取redis的配置文件,方便上面掛載這個配置文件
      - name: redis-config
        configMap:
          name: redis-cluster-config
          items:
          - key: redis.conf
            path: redis.conf
  # 定義存儲類模版
  volumeClaimTemplates:
  - metadata:
      name: redis-data # 這個名字要與上面的對應
      namespace: deploy-test
    spec:
      accessModes:
      - ReadWriteMany # 設置多節(jié)點讀寫模式
      resources:
        requests:
          storage: 1Gi # 申請1個g的存儲空間,可根據自己的服務器空間修改
      storageClassName: nfs-client # 這里填寫你存儲類的名字

完整的資源清單文件內容:

apiVersion: v1
kind: Namespace
metadata:
  name: deploy-test
spec: {}
status: {}

---

apiVersion: v1
data:
  redis.conf: |
    # 關閉保護模式
    protected-mode no

    # 日志級別
    loglevel warning

    # 日志存放目錄
    logfile "/data/redis.log"

    # 數據文件目錄
    dir /data
    dbfilename dump.rdb

    # 數據庫數量
    databases 16

    # 保存數據庫到數據文件
    save 900 1
    save 300 10
    save 60 10000

    # 集群相關配置
    cluster-enabled yes
    cluster-config-file nodes-6379.conf
    cluster-node-timeout 15000
kind: ConfigMap
metadata:
  name: redis-cluster-config
  namespace: deploy-test

---

apiVersion: v1
kind: Service
metadata:
  name: deploy-redis-svc
  namespace: deploy-test
  labels:
    app: redis
spec:
  ports:
  - port: 6379
    name: redis
    targetPort: 6379
    nodePort: 30379
  selector:
    app: redis
  type: NodePort
  sessionAffinity: ClientIP

---

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: deploy-redis
  namespace: deploy-test
spec:
  selector:
    matchLabels:
      app: redis
  serviceName: "deploy-redis-svc"
  replicas: 6
  template:
    metadata:
      labels:
        app: redis
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - command:
        - "redis-server"
        - "/usr/local/etc/redis.conf"
        name: redis
        # image: docker.io/library/redis:7.0.12
        image: registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/redis:7.0.12
        ports:
        - containerPort: 6379
          name: redis
        volumeMounts:
        - name: redis-data
          mountPath: /data
        - name: redis-config
          mountPath: /usr/local/etc
          readOnly: true
      volumes:
      - name: redis-config
        configMap:
          name: redis-cluster-config
          items:
          - key: redis.conf
            path: redis.conf
  volumeClaimTemplates:
  - metadata:
      name: redis-data
      namespace: deploy-test
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 1Gi
      storageClassName: nfs-client

執(zhí)行文件完成部署

我們可以使用這行命令執(zhí)行這個文件完成部署:

kubectl apply -f redis-deploy.yaml

執(zhí)行后如圖:
Kubernetes(k8s)部署高可用多主多從的Redis集群,kubernetes,redis,容器

可以通過這行命令監(jiān)控它的部署:

watch kubectl get all -o wide -n deploy-test

看到6個pod都已經成功運行起來了:
Kubernetes(k8s)部署高可用多主多從的Redis集群,kubernetes,redis,容器

初始化集群

我們部署的pod是statefulset類型的pod,所以我們訪問pod的域名格式為 pod名字.service名字.命名空間.svc.cluster.local,所以我們在集群中訪問六個redis的地址分別為:

deploy-redis-0.deploy-redis-svc.deploy-test.svc.cluster.local:6379
deploy-redis-1.deploy-redis-svc.deploy-test.svc.cluster.local:6379
deploy-redis-2.deploy-redis-svc.deploy-test.svc.cluster.local:6379
deploy-redis-3.deploy-redis-svc.deploy-test.svc.cluster.local:6379
deploy-redis-4.deploy-redis-svc.deploy-test.svc.cluster.local:6379
deploy-redis-5.deploy-redis-svc.deploy-test.svc.cluster.local:6379

接下來我們需要去到里面的任何一個pod,去執(zhí)行一行命令,使用這行命令進入到第一個pod:

# 注意修改你自己的命名空間和pod名字
kubectl exec -itn deploy-test pod/deploy-redis-0 bash

進入后如圖:
Kubernetes(k8s)部署高可用多主多從的Redis集群,kubernetes,redis,容器

然后我們執(zhí)行一下下面這行命令:

redis-cli --cluster create --cluster-replicas 1 \
deploy-redis-0.deploy-redis-svc.deploy-test.svc.cluster.local:6379 \
deploy-redis-1.deploy-redis-svc.deploy-test.svc.cluster.local:6379 \
deploy-redis-2.deploy-redis-svc.deploy-test.svc.cluster.local:6379 \
deploy-redis-3.deploy-redis-svc.deploy-test.svc.cluster.local:6379 \
deploy-redis-4.deploy-redis-svc.deploy-test.svc.cluster.local:6379 \
deploy-redis-5.deploy-redis-svc.deploy-test.svc.cluster.local:6379

執(zhí)行后會出現這個提示:
Kubernetes(k8s)部署高可用多主多從的Redis集群,kubernetes,redis,容器

它問我們這樣的一個分配方式行不行,這里直接輸入yes然后回車,接下來看到下面這個畫面代表集群配置成功:
Kubernetes(k8s)部署高可用多主多從的Redis集群,kubernetes,redis,容器

我們接下來使用這行命令來進入集群:

# -c 的意思是進入集群
redis-cli -c

然后我們輸入這行命令來查看集群里的節(jié)點:

CLUSTER NODES

可以看到是三master三node的redis集群:
Kubernetes(k8s)部署高可用多主多從的Redis集群,kubernetes,redis,容器

到這里Kubernetes上搭建redis高可用集群就已經完畢了。文章來源地址http://www.zghlxwxcb.cn/news/detail-699901.html

到了這里,關于Kubernetes(k8s)部署高可用多主多從的Redis集群的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • docker搭建mysql多主多從(集群),親測有效!

    docker搭建mysql多主多從(集群),親測有效!

    提示 :如果你只是想要搭建mysql主從看這篇文檔就夠了,很多地方參考了這篇文章:點擊這里 原理圖 : 主1(docker容器名為mysql-master) 主2(docker容器名為mysql-master_2) 從1(docker容器名為mysql-slave) 從2(docker容器名為mysql-slave-2) 四個容器都起動成功 解釋 注意 :配置文件路徑為do

    2024年02月04日
    瀏覽(20)
  • Kubernetes(k8s)上搭建一主兩從的mysql8集群

    Kubernetes(k8s)上搭建一主兩從的mysql8集群

    本文章視頻教程地址:https://www.bilibili.com/video/BV1iw411e7ZE/ 首先你需要準備一個kubernetes集群和一臺nfs服務器,為了方便,我就用 k8s-master 來做nfs服務器了。我的服務器IP地址和用途如圖: IP地址 主機名 用途 192.168.1.160 k8s-master Kubernetes主服務器兼nfs服務器 192.168.1.161 K8s-node01 Ku

    2024年02月06日
    瀏覽(33)
  • Centos7 安裝部署 Kubernetes(k8s) 高可用集群

    Centos7 安裝部署 Kubernetes(k8s) 高可用集群

    宿主機系統 集群角色 服務器IP 主機名稱 容器 centos7.6 master 192.168.2.150 ks-m1 docker centos7.6 master 192.168.2.151 ks-n1 docker centos7.6 master 192.168.2.152 ks-n2 docker 1.1 服務器初始化及網絡配置 VMware安裝Centos7并初始化網絡使外部可以訪問** 注意事項:請一定要看完上面這篇文章再執(zhí)行下面的操

    2024年02月03日
    瀏覽(55)
  • 云原生|kubernetes|kubernetes集群部署神器kubekey安裝部署高可用k8s集群(半離線形式)

    云原生|kubernetes|kubernetes集群部署神器kubekey安裝部署高可用k8s集群(半離線形式)

    前面利用kubekey部署了一個簡單的非高可用,etcd單實例的kubernetes集群,經過研究,發(fā)現部署過程可以簡化,省去了一部分下載過程(主要是下載kubernetes組件的過程)只是kubernetes版本會固定在1.22.16版本,etcd集群可以部署成生產用的外部集群,并且apiserver等等組件也是高可用,

    2024年02月15日
    瀏覽(28)
  • 淺談sealos及使用sealos4.0部署Kubernetes(K8s)高可用集群

    淺談sealos及使用sealos4.0部署Kubernetes(K8s)高可用集群

    sealos 是以kubernetes為內核的云操作系統發(fā)行版 早期單機操作系統也是分層架構,后來才演變成 linux windows這種內核架構,云操作系統從容器誕生之日起分層架構被擊穿,未來也會朝著高內聚的\\\"云內核\\\"架構遷移 從現在開始,把你數據中心所有機器想象成一臺\\\"抽象\\\"的超級計算機

    2024年02月07日
    瀏覽(98)
  • 【K8s】:在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2從)

    【K8s】:在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2從)

    ??The Begin??點點關注,收藏不迷路?? Kubernetes 是一個強大的容器編排平臺,可以幫助我們管理和部署容器化應用。MySQL 是一個流行的關系型數據庫,在生產環(huán)境中通常需要高可用性和數據持久性。 本文將介紹如何在 Kubernetes 中部署 MySQL 集群,以確保數據的高可用性和持久

    2024年04月17日
    瀏覽(100)
  • Kubernetes(K8s)使用 kubeadm 方式搭建多 master 高可用 K8s 集群

    Kubernetes(K8s)使用 kubeadm 方式搭建多 master 高可用 K8s 集群

    本篇主要針對上篇文章的單 master 節(jié)點的 K8s 集群上搭建多 master 節(jié)點集群 和 LB 負載均衡服務器。 Kubernetes(K8S)集群搭建基礎入門教程 虛擬機 IP 地址: IP 操作系統 主機名稱 192.168.2.121 centos7.9 k8s-master01 192.168.2.124 centos7.9 k8s-master02 192.168.2.125 centos7.9 k8s-node01 192.168.2.126 centos

    2023年04月26日
    瀏覽(34)
  • 【kubernetes】k8s高可用集群搭建(三主三從)

    【kubernetes】k8s高可用集群搭建(三主三從)

    目錄 【kubernetes】k8s高可用集群搭建(三主三從) 一、服務器設置 二、環(huán)境配置 1、關閉防火墻 2、關閉selinux 3、關閉swap 4、修改主機名(根據主機角色不同,做相應修改) 5、主機名映射 6、將橋接的IPv4流量傳遞到iptables的鏈 7、時間同步 8、master之間進行免密登錄設置 三、

    2024年02月09日
    瀏覽(23)
  • 【Kubernetes】kubeadm安裝k8s1.25.0高可用集群

    【Kubernetes】kubeadm安裝k8s1.25.0高可用集群

    詳情請參考 : 【Kubernetes】kubeadm安裝k8s穩(wěn)定版(1.23.1)高可用集群 這里不再贅述 這部分內容還沒發(fā)布。。。后續(xù)有空再整理更新啦。 master、node節(jié)點都需要操作 docker也要安裝,docker跟containerd不沖突,安裝docker是為了能基于dockerfile構建鏡像。 master、node節(jié)點都需要操作 3臺機

    2024年01月16日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包