k8s上部署redis哨兵记录

- k8s界面使用kuboard
- 部署使用1主1备1哨兵
- 使用思路为master节点部署后,slave节点使用master的serviceip与master节点进行互通,哨兵进程与master、slave使用service ip互通
- 参考链接  [bitnami/redis-sentinel - Docker Image | Docker Hub](https://hub.docker.com/r/bitnami/redis-sentinel)
- 连接中是有docker-compose启动的配置文件,未指明在k8s上如何使用,因此写了本操作指导【yaml文件内容在kuboard界面生成】

部署master节点

---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations: {}
  labels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: test-master
  name: test-master
  namespace: company-sdwan
  resourceVersion: '91595697'
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s.kuboard.cn/layer: cloud
      k8s.kuboard.cn/name: test-master
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        k8s.kuboard.cn/layer: cloud
        k8s.kuboard.cn/name: test-master
    spec:
      containers:
        - env:
            - name: REDIS_REPLICATION_MODE
              value: master
            - name: REDIS_PASSWORD
              value: redis@123
          image: 'bitnami/redis:6.2.6'
          imagePullPolicy: IfNotPresent
          name: test-master
          ports:
            - containerPort: 6379
              name: master
              protocol: TCP
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

---
apiVersion: v1
kind: Service
metadata:
  annotations: {}
  labels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: test-master
  name: test-master
  namespace: company-sdwan
  resourceVersion: '91595685'
spec:
  clusterIP: 10.107.118.111
  ports:
    - name: master
      port: 6379
      protocol: TCP
      targetPort: 6379
  selector:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: test-master
  sessionAffinity: None
  type: ClusterIP
# 部署完成master后需要记录service地址,用于slave和sentinel访问

部署slave节点

---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations: {}
  labels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: test-slave
  name: test-slave
  namespace: company-sdwan
  resourceVersion: '91596734'
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s.kuboard.cn/layer: cloud
      k8s.kuboard.cn/name: test-slave
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        k8s.kuboard.cn/layer: cloud
        k8s.kuboard.cn/name: test-slave
    spec:
      containers:
        - env:
            - name: REDIS_REPLICATION_MODE
              value: slave
            - name: REDIS_MASTER_HOST
              value: 10.107.118.111
            - name: REDIS_MASTER_PASSWORD
              value: redis@123
            - name: REDIS_PASSWORD
              value: redis@123
          image: 'bitnami/redis:6.2.6'
          imagePullPolicy: IfNotPresent
          name: test-slave
          ports:
            - containerPort: 6379
              name: slave
              protocol: TCP
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

---
apiVersion: v1
kind: Service
metadata:
  annotations: {}
  labels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: test-slave
  name: test-slave
  namespace: company-sdwan
  resourceVersion: '91596719'
spec:
  clusterIP: 10.101.145.203
  ports:
    - name: slave
      port: 6379
      protocol: TCP
      targetPort: 6379
  selector:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: test-slave
  sessionAffinity: None
  type: ClusterIP

部署哨兵节点

---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations: {}
  labels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: test-sentinel
  name: test-sentinel
  namespace: company-sdwan
  resourceVersion: '91598109'
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s.kuboard.cn/layer: cloud
      k8s.kuboard.cn/name: test-sentinel
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        k8s.kuboard.cn/layer: cloud
        k8s.kuboard.cn/name: test-sentinel
    spec:
      containers:
        - env:
            - name: REDIS_MASTER_HOST
              value: 10.107.118.111
            - name: REDIS_MASTER_PORT_NUMBER
              value: '6379'
            - name: REDIS_MASTER_PASSWORD
              value: redis@123
            - name: REDIS_SENTINEL_PORT_NUMBER
              value: '26379'
            - name: REDIS_SENTINEL_QUORUM
              value: '1'
          image: 'bitnami/redis-sentinel:6.2.6'
          imagePullPolicy: IfNotPresent
          name: test-sentinel
          ports:
            - containerPort: 26379
              name: sentinel
              protocol: TCP
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

---
apiVersion: v1
kind: Service
metadata:
  annotations: {}
  labels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: test-sentinel
  name: test-sentinel
  namespace: company-sdwan
  resourceVersion: '91598112'
spec:
  clusterIP: 10.97.199.238
  ports:
    - name: sentinel
      port: 26379
      protocol: TCP
      targetPort: 26379
  selector:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: test-sentinel
  sessionAffinity: None
  type: ClusterIP

验证哨兵启动

图片alt

posted @ 2022-12-07 15:08  我爱编程到完  阅读(364)  评论(0编辑  收藏  举报